1

我试图解决的优化模型有点混乱。它是一个小型模型,可最大限度地减少两个单元的成本。我刚刚开始优化,我不确定我是否将问题很好地解释为 AMPL。特别是关于最小化约束及其界限。

我必须将两个决策变量作为模型中的单位。u1 的成本是 10,u2 是 13。u1 的限制是你不能制造超过 100 个单位,而 u2 是 50 个单位。通过反转这个最小化问题的界限,我得到了不同的结果。谁能帮我解释发生了什么?


变量 u1 >=0; 变量u2>=0;

最小化单位成本:10*u1 +13*u2;

服从unit1:0 <= u1 <= 100;服从unit2:0 <= u2 <= 50;


有了上述约束,我的输出为:

CPLEX 12.8.0.0:最优解;目标 0 0 双重单纯形迭代(第一阶段为 0) 目标是:0.000000 : _varname _var := 1 u1 0 2 u2 0 ;

: _objname _obj := 1 costofunits 0 ;

: _conname _con := 1 单元 1 0 2 单元 2 0

;

反转约束:

以unit1为准:100 <= u1 <= 0;服从unit2:50 <= u2 <= 0;

输出为:

约束单元 1 的边界不一致:下限 = 100 > 上限 = 0

约束单元 2 的边界不一致:下限 = 50 > 上限 = 0 由预求解确定的不可行约束。目标是: 825.000000 : _varname _var := 1 u1 50 2 u2 25 ;

: _objname _obj := 1 costofunits 825 ;

: _conname _con := 1 单元 1 10 2 单元 2 13 ;

4

1 回答 1

0

对于您的第一个问题:正如您所定义的那样,目标是最小化成本,最简单的解决方案就是以零成本将一切归零。

对于您的第二个问题,错误消息解释了问题。您为 u1 (100 <= u1) 设置了 100 的下限以及 0 (u1 <= 0) 的上限。显然,不可能同时满足这两个要求的数字。假设您想将 u1 限制在 100 和 0 之间,您应该在此处使用 ">=",而不是约束中的 "<="。

unit2 约束的相同问题。

于 2018-01-25T00:08:19.807 回答