赞
踩
对大规模数学规划,LINGO语言所建模型较简洁,语句不多;
模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,如果在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;
数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变;
“集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。
使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.
线性整数规划
model:
max=x1+x2;
x1+9/14*x2<=51/14;
-2*x1+x2<=1/3;
@gin(x1);@gin(x2);
end
求得x1=3,x2=1,最大值为4.运用matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。通过验证也可知这两组解均满足。Lingo的一个缺陷是:每次只能输出最优解中的一个(有时不只一个)。那么,怎样求得其他解呢?一个办法是将求得的解作为约束条件,约束x1不等于3,x2不等于1,再求解。如下:
model:
max=x1+x2;
x1+9/14*x2<=51/14;
-2*x1+x2<=1/3;
@gin(x1);@gin(x2);
@abs(x1-3)>0.001;
@abs(x2-1)>0.001;
end
求得x1=2,x2=2.若再次排除这组解,发现Lingo解不出第三组解了,这时我们可以断定:此优化模型有两组解:
x1=3,x2=1和x1=2,x2=2.
求解模型时需注意:Lingo中,默认变量均为非负;输出的解可能是最优解中的一组,要判断、检验是否还有其他解(根据具体问题的解的情况或用排除已知最优解的约束条件法)。
不能作为LINGO程序的变量名的是2_a
LINGO程序中,在集合段有以下定义:
Sets:
yuefen/1..4/:c,x,e,d,s;
endsets
在数据段c,e都有赋值,则下列语句会报告出错的是
错
@for(yuefen(i):s(i+1)=s(i)+x(i)-d(i));
2.00/2.00
min=@sum(yuefen:c*x+e*s);
s(1)=0;
s(4)+x(4)-d(4)=0;
在LINGO程序的目标与约束段,下列说法正确的是( )。
得分/总分
说明语句可以用中文对语句进行说明
取消非负限制的函数FREE( )
某工厂生产甲、乙、丙三种产品,单位产品所需工时分别为2、3、1个工时;单位产品所需原材料分别为3、1、5公斤;单位产品利润分别为2元、3元、5元。工厂每天可利用的工时为12个,可供应的原材料为15公斤。若产品必须为整数单位,则最大利润可为( )。19
infeasiable=state
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。