最近在学习高级运筹学,发现有的题型列式建模还好,求解手算实在无能,变量实在太多,大学里下了这个lingo软件,对于求解LP问题,还是相当友好,在上网查看了一些资料,总结下来随手写下,作为这个软件使用的笔记,便于以后回顾!!!
1.初识Lingo
1.1 lingo的界面
lingo 运行界面
2.lingo 语句的注意事项
lingo 总是以min/max寻找目标函数;
语句的顺序不重要,可随意调换;
函数均要以@开头,句子均要以 ;结尾
变量x默认为 非负数;
**注释以 !开始,并且注释句子后面也有分号,例如 !(xxxxxx) ; **
3.变量界定函数
函数 | 意义 |
---|---|
@bin(x) | 限制x为0 or 1 |
@bnd(L,x,U) | 限制 L<=X<=U |
@gin(x) | 限制x为整数 |
@free(x) | 取消对变量x的默认下界为0的限制,即x可取任意值 |
注意:lingo中设置的默认下界为0
4.案例应用
1.课堂上简单的LP问题
代码如下:
model:
max=3*x1+4*x2;
x1+x2<=5;
2*x1+4*x2<=12;
3*x1+2*x2<=8;
end
运行页面为:
2.建厂问题
**(模型是建出来了,不过没解出来,不过感觉好像是个双变量问题?先留着(如若有大佬看到,也请指点一下,小女感激不尽!!!!)
第一个变量设为x11,其余以此类推;设A2,A3,A4,A5为y2,y3,y4,y5
model:
min=175*y1+300*y3+375*y4+500*y5+8*x11x12+4*x12+3*x13+5*x21+2*x22+3*x23+4*x31+3*x32+4*x33+9*x41+7*x42+5*x43+10*x51+4*x52+2*x53;
x11+x12+x13<=30;
x21+x22+x23-10*y2<=0;
x31+x32+x33-20*y3<=0;
x41+x42+x43-30*y4<=0;
x51+x52+x53-40*y5<=0;
x11+x21+x31+x41+x51=30;
x12+x22+x32+x42+x52=20;
x13+x23+x33+x43+x53=20;
y2+y3=1;
@gin(y2);@gin(y3);@gin(y4);@gin(y5);
!y2为非负整数;