如何在cplex opl中编写涉及平方根和反函数的目标函数

问题描述 投票:0回答:1

我想优化一个目标包含变量的平方根和倒数的问题。 我尝试这样写:

using CP;
dvar int+ y;
dvar int+ z;
minimize z;
subject to{
  z==4/sqrt(2+y);
  y>=1;
  y<=4;
} 

这个问题很好。但我的决策变量是浮点数类型。当我包含浮点型决策变量时,出现错误。

inverse square-root
1个回答
0
投票

您可以使用 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;
} 
© www.soinside.com 2019 - 2024. All rights reserved.