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])
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])