首页 > 解决方案 > 是否可以使用 OPL 简化表达式?

问题描述

我有一个很长的算术表达式,由许多操作数和括号组成,但只有两个操作,加法和乘法。可以使用 OPL 来最小化关键路径吗?

例如,给定表达式 (aa+bb)+(ab+ab)$,其关键路径包含一个 2 输入乘法和两个 2 输入加法,它输出 $(a+b)(a+b)$,其关键路径路径简化为 2 输入加法和 2 输入乘法?

另一个例子:a(b+c+d)+e 具有三个 2 输入加法的关键路径,并且乘法更改为表达式,例如: ab+aa+ac+d 具有 2 输入乘法的关键路径和两个 2 输入加法?

谢谢你。

标签: cplexsimplifyconstraint-programmingopl

解决方案


在 OPL 你可以写

using CP;

dvar int a in 0..10;
dvar int b in 0..10;
dvar int c in 0..10;
dvar int d in 0..10;
dvar int e in 0..10;


dexpr int expr=a*(b+c+d)+e;

subject to
{
  expr==9;
}

推荐阅读