我想优化一个目标包含变量的平方根和倒数的问题。 我尝试这样写:
using CP;
dvar int+ y;
dvar int+ z;
minimize z;
subject to{
z==4/sqrt(2+y);
y>=1;
y<=4;
}
这个问题很好。但我的决策变量是浮点数类型。当我包含浮点型决策变量时,出现错误。
您可以使用 dexpr float,如 https://github.com/AlexFleischerParis/zooopl/blob/master/zoodecimalcpo.mod
所示using CP;
int nbKids=310;
float costBus40=500;
float costBus30=400;
int scale=100;
dvar int+ scalenbBus40;
dvar int+ scalenbBus30;
dexpr float nbBus40=scalenbBus40/scale;
dexpr float nbBus30=scalenbBus30/scale;
minimize
costBus40*nbBus40 +nbBus30*costBus30;
subject to
{
40*nbBus40+nbBus30*30>=nbKids;
}
execute
{
writeln("nbBus40 = ",nbBus40);
writeln("nbBus30 = ",nbBus30);
}
你的例子给出了
using CP;
int scale=10000;
dvar int+ scaley;
dexpr float y=scaley/scale;
dexpr float z=4/sqrt(2+y);
minimize z;
subject to{
y>=1;
y<=4;
}