lingo软件
推荐有数学建模比赛编程需求的同学安装lingo11版本,而不是lingo12版本。lingo12对非线性规划问题(0-1规划、整数规划等等)的支持并不良好,很难求得可行解,而lingo11求解的能力相对lingo12更强,大部分非线性规划问题都可以求得全局最优解或者局部最优解,但也存在无法求得可行解的情况。(可能是lingo自身求解非线性问题的优化算法不同,作者也不是很了解)
lingo运行与参数设置
运行按钮为窗口栏下的那个“红色的靶心”按钮。
参数设置–窗口栏选择LINGO–选择options–调整参数
例如,可以选择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;