lingo软件
推荐有数学建模比赛编程需求的同学安装lingo11版本,而不是lingo12版本。lingo12对非线性规划问题(0-1规划、整数规划等等)的支持并不良好,很难求得可行解,而lingo11求解的能力相对lingo12更强,大部分非线性规划问题都可以求得全局最优解或者局部最优解,但也存在无法求得可行解的情况。(可能是lingo自身求解非线性问题的优化算法不同,作者也不是很了解)
lingo运行与参数设置
运行按钮为窗口栏下的那个“红色的靶心”按钮。
参数设置–窗口栏选择LINGO–选择options–调整参数
例如,可以选择Global Slover设置全局最优解。
lingo书写规范
1.注释的书写,以!开头,以;结尾
!我是注释;
2.变量约束以及命名原则
lingo默认所有参数为大于等于0的数字,因而非负约束不需要书写。(@free函数可定义一个变量的定义域为R)
lingo变量不区分大小写,不能与关键字同名,变量由数字
、下划线
和英文字母
组成,但变量必须以英文字母
开头。(建议lingo编程时将变量都写成小写的)
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无法直接求解,在编写程序时应把多目标函数转换为单目标函数。
2.求目标函数的最大值或最小值分别用max=...
或min=...
来表示。
3.线性规划和非线性规划的本质是目标函数和约束条件是否线性,所以非线性和线性规划的模型编程基本一致,只是非线性规划在模型中存在非线性约束或者非线性的目标函数
0-1规划、整数规划是非线性问题
目标函数是非线性的属于非线性问题
lingo线性规划示例