Возможно ли упрощение выражений с помощью OPL? - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть длинное арифметическое выражение c, состоящее из множества операндов и скобок, но только двух операций, сложения и умножения. Можно ли использовать OPL для минимизации критического пути?

Например, учитывая выражение (aa + bb) + (ab + ab) $, критический путь которого содержит умножение с двумя входами и два сложения с двумя входами, он выводит $ (a + b) (a + b) $, критический путь которого сводится к сложению с 2 входами и умножению с 2 входами?

Другой пример: a (b + c + d) + e с критическим путем трех сложений с двумя входами и умножением заменяет выражение, такое как: ab + aa + ac + d с критическим путем умножения с двумя входами и двумя сложениями с двумя входами?

Спасибо.

1 Ответ

0 голосов
/ 08 февраля 2020

в 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;
}
...