cplex 可以解决对数 objective 函数的问题吗?

Can cplex solve problems with logarithmic objective fucntions?

CPLEX 能否解决诸如 max( Sum(log(x)) ) 之类的问题,例如,在 python API 中? 基本上我对对数(像 log(x) 一样简单)objective 和线性约束有问题。

最好的, 帕夫洛斯

那么你可以使用 COPtimizer:

在 OPL 中,以下代码可以正常工作

using CP;

dvar int x in 0..100000;
dvar int y in 0..100000;

dexpr float ax=1+x/1000;
dexpr float ay=1+y/1000;

minimize log(ax-ay);
subject to
{
  abs(ax-ay)>=1;
}

并且使用 python docplex 你可以写

from docplex.cp.model import CpoModel

mdl = CpoModel(name='buses')
x = mdl.integer_var(0,100000,name='x')
y = mdl.integer_var(0,100000,name='y')
mdl.add(mdl.abs(x/1000-y/1000)>=1);
mdl.minimize(mdl.log(mdl.abs(x/1000-y/1000)))

msol=mdl.solve()

print("x=",msol[x])
print("y=",msol[y])