如何在GMPL线性编程Gusek中将变量绑定为负数?

问题描述

我是线性编程的新手,我很难找到一个简单问题的解决方案。

我在实用语法Gusek中使用语言GMPL。我的问题是变量最初总是大于0,但我需要-inf

问题看起来像:

var x1;
var x2;
var x3;

minimize
z: 9*x1+6*x2+4*x3;

subject to

c1: x1+2*x2-3*x3<=11;
c2: x1+x2+3*x3<=10;
c3: 4*x1+3*x2-2*x3>=24;

bounds

-inf < x3 <= 0

solve;
end;

“ bounds”语法实际上不起作用。我的意思是,这不是我所知的有效语法,但是正如我所说,我是该领域的新手。我知道,这个问题很容易用手工解决,但是我希望能够解决更大规模的类似问题。

提前谢谢

解决方法

默认情况下,GMPL中的变量是免费的。 (这与许多其他默认为非负数的系统相对。)

要声明负变量,请执行以下操作:

 var x3 <= 0;

请参见http://gusek.sourceforge.net/gmpl.pdf

中的第4.3节