Function cplex能解决对数目标函数的问题吗?

Function cplex能解决对数目标函数的问题吗?,function,cplex,logarithm,Function,Cplex,Logarithm,例如,在pythonapi中,CPLEX能解决像max(Sum(log(x))这样的问题吗? 基本上,我有一个关于对数(像log(x)一样简单)目标和线性约束的问题 最好的, Pavlos然后您可以使用CPOptimizer: 在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; minimi

例如,在pythonapi中,CPLEX能解决像max(Sum(log(x))这样的问题吗? 基本上,我有一个关于对数(像log(x)一样简单)目标和线性约束的问题

最好的,
Pavlos

然后您可以使用CPOptimizer:

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

谢谢你的回答。我也遵循了docplex的文档,谢谢。所以为了有一个log obj函数,我需要使用docplex,它不能用cplex-python-api完成吗?我这样问是因为我在cplex中有我的问题构建(以及其他东西),docplex语法有点不同。如果您的目标中有某个决策变量的“日志”,那么您应该使用CPOptimizer或通过分段线性函数线性化日志函数。再次感谢您的及时回复。我看到cp问题不支持连续变量,mp问题不支持对数目标函数。我的问题有连续的和二进制的决策变量,带有log obj函数,所以不能用它来添加,对吗?还有其他解决办法吗?再次感谢。对于具有cpo的连续决策变量,因为log是单调递增的,最小化log(z)相当于最小化z,因此在您的例子中,最小化abs(x/1000-y/1000),docplex.mp能够表示