一、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。

最终结果