解决方案为 CPLEX 中的 dvar float+ 提供负值
Solution gives a negative value for dvar float+ in CPLEX
我的变量 returns 的解是一个负值,而我将它定义为 dvar flaot+,这怎么可能?
这是我的代码:
int fixed_cost = 75;
dvar int+ x[truck, order] in 0..1;
dvar int+ savings[truck];
...
forall(h in truck) sum(n in order) (x_[h,n])*fixed_cost- fixed_cost == savings[h];
解决方案显示如下:
savings = [-75, 75];
虽然我需要以下内容:
savings = [0, 75];
我也尝试了以下方法,但我的 OPL 不会 运行:
forall(h in truck) savings[h] >= 0;
有人可以帮助我吗?提前致谢!
在 OPL CPLEX 中,当模型不可行时,您会得到放松。
例如:
dvar int+ x;
dvar int+ y;
subject to
{
x==5;
x+y==0;
}
将在 IDE 中给出 y==-5。
放宽 y 应为正的限制。
参见 IDE 和 OPL > CPLEX Studio IDE > IDE 教程 > 松弛不可行模型 > CPLEX 文档中松弛和冲突搜索的工作原理。
我的变量 returns 的解是一个负值,而我将它定义为 dvar flaot+,这怎么可能? 这是我的代码:
int fixed_cost = 75;
dvar int+ x[truck, order] in 0..1;
dvar int+ savings[truck];
...
forall(h in truck) sum(n in order) (x_[h,n])*fixed_cost- fixed_cost == savings[h];
解决方案显示如下:
savings = [-75, 75];
虽然我需要以下内容:
savings = [0, 75];
我也尝试了以下方法,但我的 OPL 不会 运行:
forall(h in truck) savings[h] >= 0;
有人可以帮助我吗?提前致谢!
在 OPL CPLEX 中,当模型不可行时,您会得到放松。
例如:
dvar int+ x;
dvar int+ y;
subject to
{
x==5;
x+y==0;
}
将在 IDE 中给出 y==-5。
放宽 y 应为正的限制。
参见 IDE 和 OPL > CPLEX Studio IDE > IDE 教程 > 松弛不可行模型 > CPLEX 文档中松弛和冲突搜索的工作原理。