Lingo能做什么
LINGO(Linear Interactive and General Optimizer),可以求解非线性规划,也可以用于线性和非线性方程组的求解,是求解优化模型的最佳选择。
Lingo编程步骤
- 确保模型是正确的(清楚每个式子的意思,变量、下标均严格区分,确定模型类型)
- 确定指标集,定义集合
- 确定变量(已知数据的量、决策变量)及其依赖的指标集
- 正确写出每个式子
几个命令
- max, min用于定义目标函数
- @bin(x)表示x为0或1
- @gin(x)整数
- @free(x)表示x为任意实数
- @bnd(1,x,u)表示x为[1,u]之间的实数,默认是非负实数
- @floor(x)返回x的整数部分
最优化问题
在一系列限制条件下,寻求某个或多个指标达到最大的决策。优化模型三要素:
- 决策变量
- 目标函数
- 约束条件
建模实例
线性规划
- 先写出model: 和 end作为开头和结尾
- 再写出目标函数 max=30x1 + 50x2
- 最后写出约束条件 x1+x2 >=150 ; x1>=0 ; x2 >= 0
非线性规划
和线性的差别仅仅在目标函数和约束条件上,简答案例如下。
model:
max=30*x1+50*x2;
0.5*x1+0.25*x2^2<120;
x1+x2>150;
@gin(x1);
@gin(x2);
end
整数规划
@gin(x)把变量限制为整数即可。
0-1整数规划
@bin(x)限制变量为0或者1即可。
最后
前几天数模培训做题被锤了,Lingo学到这真的远远远远远远不够…快去找点长一点的视频学着吧…
推荐一个视频能高效提升Lingo水平,这是链接。