lingo软件

推荐有数学建模比赛编程需求的同学安装lingo11版本,而不是lingo12版本。lingo12对非线性规划问题(0-1规划、整数规划等等)的支持并不良好,很难求得可行解,而lingo11求解的能力相对lingo12更强,大部分非线性规划问题都可以求得全局最优解或者局部最优解,但也存在无法求得可行解的情况。(可能是lingo自身求解非线性问题的优化算法不同,作者也不是很了解)

lingo运行与参数设置

运行按钮为窗口栏下的那个“红色的靶心”按钮。

参数设置–窗口栏选择LINGO–选择options–调整参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rHTM9x5z-1594393800122)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20200710215802485.png)]

例如,可以选择Global Slover设置全局最优解。

lingo书写规范

1.注释的书写,以!开头,以;结尾

!我是注释;

2.变量约束以及命名原则

lingo默认所有参数为大于等于0的数字,因而非负约束不需要书写。(@free函数可定义一个变量的定义域为R)

数字下划线英文字母英文字母

Mm、mm、MM、mM都表示同一个变量

x、xx、x_1、max_x是合法的命名方式

1x、_x、max-x、max是非法的命名方式

3.矩阵元素的表示(后面会详细讲述)

一维数组的表示法:x(i)

二维矩阵的表示法:x(i,j)

注:在lingo编程时不可以把2*x简写为2x,lingo软件无法识别

lingo运算符号

符号数学表示
+
-
*
/
取余%
幂级^

lingo线性规划基础

1.一个线性规划只有一个目标函数(两个及以上的目标函数是多目标规划,lingo无法直接求解,在编写程序时应把多目标函数转换为单目标函数。

max=...min=...

3.线性规划和非线性规划的本质是目标函数和约束条件是否线性,所以非线性和线性规划的模型编程基本一致,只是非线性规划在模型中存在非线性约束或者非线性的目标函数

0-1规划、整数规划是非线性问题

目标函数是非线性的属于非线性问题

lingo线性规划示例

m a x = 200 × x 1 + 300 × x 2 ; x 1 ≤ 100 ; x 2 ≤ 120 ; x 1 + 2 × x 2 ≤ 160 ; max = 200 \times x_1 + 300 \times x_2; x_1 \leq 100; x_2 \leq 120; x_1 + 2 \times x_2 \leq 160; max=200×x1​+300×x2​;x1​≤100;x2​≤120;x1​+2×x2​≤160;

max = 200*x1 + 300*x2;
x1 <= 100;
x2 <= 120;
x1 + 2*x2 <= 160;