一、lingo的下载与安装
安装包下载链接
安装教程
按照上面的步骤操作就能成功使用lingo。
二、lingo求解线性规划
1、简单版之小规模问题求解
- 线性规划例题
在lingo中输入以下代码运行即可得到结果
代码注意事项:
(1)max后直接跟等号
(2)乘号不能省略
(3)每一行以分号结尾
(4)小于等于在lingo里可以直接写成小于
(5)大于等于零的符号约束不用写,lingo默认决策变量非负
最优结果和敏感性分析报告展示
- 整数规划例题
在上述线性规划的基础上增加了对决策变量的整数约束
在代码中增加x1和x2为整数的命令,运行即可。
注意:@gin(x1);表示要求x1是整数
@bin(x1);表示要求x1是01变量
@bnd(l,x1,u);表示要求x1是小于u大于l的实数
@free(x1);表示x1是任意实数,解除非负的限制
例如,要限制x1在-5,1之间的整数,需要同时增加三行代码
2、复杂版之大规模问题求解
需要使用集合语言
例题
建模结果如下
Step 1,定义集合
- 知识点一:集合命名
例题中的下角标有三种,i,j和ij,所以就生成三个集合,然后将集合分别命名为S、T、U(命名可以任意取)。
U(S,T)表示U集合的下角标是二维的,为ij的组合。
- 知识点二:确定取值
/1..6/表示i的取值从1到6。
- 知识点三:变量归类
根据变量的下角标将变量归类。a、b、d的下角标都是i,所以放在S集合里。e、x和y的下角标都是j,所以放在T集合里。c的下角标为ij,所以放在U集合里。
Step 2,输入数据
这个参数是题目中给定的已知信息
给参数赋值,每一个参数的数值个数应符合第一步中对应的下角标。例如a的下角标是i,对应的i能取到6,a的数值应该有6个。
Step 3,输入目标函数和约束条件
- 知识点一:
不用将规划改成标准形式
- 知识点二:求和
@ sum(T(j):c(i,j))表示j从1到2对c求和
- 知识点三:for循环
@for( S(i) : @sum(T(j): c(i,j)) = d(i));表示某个约束对i从1到6实施6次。
Step 4,运行
得到最优值和最优解
三、输出灵敏度分析报告(sensitivity analysis)
step 1:修改设置
点击“solver”——“option”
点击“general solver”——“dual computation”——选择“Prices & Ranges”——“OK”
此时range还是灰色,先solve再range,就能得到 sensitivity analysis report。
最终结果