目录
1 Lingo编程基础
1.1基本思路
1.2 建模思路
1.3 注意事项
2 整数规划模型求解示例(不使用集合语言)
2.1 问题模型
2.2 lingo源代码:
2.3 结果展示
2.4 小结
3 一个稍大规模的问题求解
3.1 问题描述
3.3 模型分析
3.3.1 定义集合段:使用【sets:】开始,【endsets】结束
3.3.2 定义数据段:使用【data:】开始,【enddata】结束
3.3.3 目标函数的代码
3.3.4 约束条件代码实现
3.3.5 完整代码
3.3.6 结果演示
4 常见错误分析
4.1 错误代码29:数组初始化个数与指定数目不一致
4.2 错误代码12:缺少右括 错
4.3 错误代码11:无效的输入,语法错误
5 LINGO的错误列表
6 致谢
7 更多推荐
今天老板安排了一个任务,让自己建立一个最经典的CVRP模型,然后用LINGO把建立的模型给求解出来;LINGO只是听说过,从来没有真正使用过,运筹学课程也是混着过来的,怎么办着头皮上呗。
两种编程方法:使用集合语言编程和不使用集合语言编程(笨办法编程)
1 Lingo编程基础
1.1基本思路
- 确保模型是对的,每个变量均进行了严格的定义;
- 明确已知数据、模型的类型(线性模型、非线性模型)
- 确定指标集(即每个变量的变化范围)
- 确定变量依赖的指标集
- 正确写出代码式子
1.2 建模思路
1.3 注意事项
目标函数:min或max
基本语法:
- 普通代码行,以分 为一行代码的结束;代码注释行,以叹 开始分 结束
- 空格和回车字符会被忽略掉
- 变量名以字母开头,不区分大小写;
- 没有严格大于或严格等于的约束
2 整数规划模型求解示例(不使用集合语言)
2.1 问题模型
2.2 lingo源代码:
2.3 结果展示
得到全局最优解,目标函数值为26
解 告中显示:x1 = 2; x2 = 6
2.4 小结
- 每行源代码都是以 【;】 结束的;
- 可以通过空格增强代码的易读性;
- 乘 不能省略
- lingo不区分大小写
- 默认变量为非负变量
- 注释代码以【!】开头,以【;】结尾
- @开头的表示函数,常用的几个指令如下表所示
@bin(x) | 要求变量为二进制变量 |
@free(x) | 表示变量为任意实数 |
@bnd(x,1,u) | 要求x取值在(1,u) |
@gin(x) | 变量x只能是整数 |
要求x取值范围为[-5,5]的实数的编码方式为:
3 一个稍大规模的问题求解
3.1 问题描述
3.2 模型建立
3.3 模型分析
(1)确定模型的已知变量和未知变量:模型中除了
(2)确定指标集:
3.3.1 定义集合段:使用【sets:】开始,【endsets】结束
3.3.2 定义数据段:使用【data:】开始,【enddata】结束
3.3.3 目标函数的代码
编码该公式的Latex代码:min sum_{j=1}^{2}sum_{i=1}^{6}c_{ij}sqrt { (x_j – a_j)^2 +(y_{i} – b_{i} )^2}
编码该公式的Lingo代码:
3.3.4 约束条件代码实现
编码该公式的Latex代码:sum_{j=1}^2 c_{ij} = d_i; i = 1,2,..,6
编码该公式的Lingo代码:
编码该公示的Latex代码:sum_{i=1}^{6} c_{ij} leq e_{j}; j = 1,2
编码该约束的Lingo代码:
3.3.5 完整代码
3.3.6 结果演示
Global optimal solution found. Variable Value Reduced Cost Row Slack or Surplus Dual Price 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
软件体系结构-分层、代理、MVC、管道与过滤器
上一篇
2019年5月3日
《快活帮》第六次作业:团队项目系统设计改进与详细设计
下一篇
2019年5月3日
|