文章目录

  • 前言
  • 一、问题&数据
  • 二、分析&思路
  • 三、数学建模
    • 1.假设简化
    • 2.决策变量
    • 3.目标函数
    • 4.约束条件
  • 四、编程求解
    • 1.lingo程序
    • 2.求解结果
  • 五、总结

前言

lingo的全称是Linear Interactive and General Optimizer,是美国LINDO系统公司推出的一个求解规划问题的软件,在求解规划问题上lingo方便、全面且有效。本文以一个简单的整数规划问题为例,建立了整数规划的数学模型,采用lingo编程求解出了最优解以及最优解时的装配方案,介绍了规划问题的建模方法和lingo求解。


一、问题&数据

问题:

二、分析&思路

这是一个简单的整数规划问题,理清变量和限制条件是求解问题的关键。把7种不同厚度、重量和数量的包装箱放在2节相同的平板车上,在尽可能都放完上的前提下,要求平板车浪费的空间最小。包装箱放入平板车有若干种装配方案,由于有7种包装箱和3个变量(厚度、重量和数量)难以用枚举法列出所有方案,另外运用运筹学的求解方法极为困难和复杂,因此采用lingo或其他编程求解是最佳的选择。建立数学模型时首先要理清每个量以及量与量之间的数学关系从而找准决策变量和目标函数;其次要细致地分析题意,全面地罗列出约束条件。lingo编程则采用通用的四段式(集合段,数据段、目标函数和约束条件。

三、数学建模

1.假设简化

由于每个包装箱的长和宽都是一个相同的值,建模过程中空间关系只需考虑厚度,又由问题可知包装箱在平板车的摆放方式,所以空间问题可以简化为一维的切割问题,关于空间关系有如下假设:
a.假设包装箱之间的缝隙可以忽略不计。
b.包装箱按照问题中图示方法在平板车上排列。
c.每一辆平板车只能放置一排包装箱。

2.决策变量

用i计数平板车,i=1,2i=1,2i=1,2;用j技术包装箱种类,j=1,2,...,7j=1,2,...,7j=1,2,...,7。设装配时第i量平板车上装有第j种包装箱的数量为mijm_{ij}mij​,mijm_{ij}mij​即为模型的决策变量。另外根据题目归纳出的变量如下:
a.njn_jnj​(第jjj种包装箱的数量,单位为件)
b.wjw_jwj​(第jjj种包装箱的质量,单位统一为吨(t))
c.tjt_jtj​(第jjj种包装箱的厚度,单位统一为米(m))

3.目标函数

节省的空间=总的空间-包装箱占有的空间
设节省的空间为TTT,即:minT=20.4−∑i=12∑j=17tjmijmin T=20.4-\sum_{i=1}^ 2\sum_{j=1}^7t_jm_{ij}minT=20.4−i=1∑2​j=1∑7​tj​mij​

4.约束条件

a.每一种包装箱尽可能放入两个平板车,且两个平板车放的每种包装箱的数量和小于等于每种包装箱含有的数量,即:
∑i=12mij≤nj,j=1,2...,7\sum_{i=1}^2m_{ij}\le n_j,j=1,2...,7i=1∑2​mij​≤nj​,j=1,2...,7
b.由题意可知每节平板车有10.2m的地方装包装箱,即每节平板车所装的包装箱厚度之和不能大于10.2m:
∑j=17tjmij≤10.2,i=1,2\sum_{j=1}^7t_jm_{ij}\le 10.2,i=1,2j=1∑7​tj​mij​≤10.2,i=1,2
c.由题意可知每节平板车限重40t,表述为:
∑j=17wjmij≤40,i=1,2\sum_{j=1}^7w_jm_{ij}\le 40,i=1,2j=1∑7​wj​mij​≤40,i=1,2
d.对于C5、C6、C7类包装箱,在每节平板车上所占总空间(厚度)不得大于3.027m,则有:
∑j=57tjmij≤3.027,i=1,2\sum_{j=5}^7t_jm_{ij}\le 3.027,i=1,2j=5∑7​tj​mij​≤3.027,i=1,2

四、编程求解

lingo程序分为四段,第一段根据题目和模型设立集合,第二段根据题目条件代入数据,第三段根据模型编写的求解目标,第四段是约束条件程序。进行多次实验和迭代最终得到一种最优装配方案,具体过程和结果见下。

1.lingo程序

lingo代码如下:

sets:
C/1..7/:t,w,m1,m2,n,mt;
endsetsdata:
t = 0.487,0.520,0.613,0.720,0.487,0.520,0.640;
w = 2,3,1,5,4,2,1;
n = 8,7,9,6,6,4,8;
enddatamin = 20.40 - @sum(C(j):t(j)*(m1(j)+m2(j)));@for(C(j):mt(j)=m1(j)+m2(j));
@for(C(j):mt(j)<=n(j));
10.20 - @sum(C(j):t(j)*m1(j)) >= 0;
10.20 - @sum(C(j):t(j)*m2(j)) >= 0;
@sum(C(j):w(j)*m1(j))<=40;
@sum(C(j):w(j)*m2(j))<=40;
@sum(C(j)|j#GE#5#AND#j#LE#7:(m1(j)+m2(j))*t(j)) <= 3.027;
@for(C(j):@bnd(0,mt(j),n(j)));
@for(C(j):@gin(m1(j)));
@for(C(j):@gin(m2(j)));

2.求解结果

求解过程描述如下:

最终求解出的最小浪费空间为0.467m。所对应的装配方案如下表:
表中的数据即为最优解下决策变量的值mijm_{ij}mij​。

五、总结

建立规划问题的数学模型的要点在于找准决策变量,确定目标函数,理清约束条件,而lingo编程求解规划问题关键在于集合段和约束段。本文中的整数规划问题较为简单和典型,尤其每个量之间的关系较为简单明了,约束的条件也比较明确。但是解决过程中也有不足之处,比如假设过于简单导致模型的适用范围不足,再比如模型求解中没有充分考虑每种包装箱尽可能放完的情况,这导致在求解的最优解下,存在有些包装箱没有放完或者根本没放的情况。作者水平有限,不足之处希望读者批评指正。

Lingo求解简单的整数规划相关推荐

  1. 0-1整数规划的LINGO求解

    1.LINGO的简介 LINGO是由美国LINDO公司推出的求解优化模型的软件,对于求解线性.非线性和整数最佳化模型这类运筹学方面的问题,LINGO是一个很好的工具.官方提供免费试用版,可以在其官网下 ...

  2. 数学建模学习笔记(十六)lingo求解整数规划

    之前没用过lingo,这次遇到一个线性整数规划的问题,尝试用了lingo求解,发现上手还是很容易的.将题目和求解放置在此,以便查阅~ 问题: 使用lingo求解,输入以下代码 model: min=1 ...

  3. matlab 线性规划求最大值,MATLAB求解线性规划(含整数规划和01规划)问题.pdf

    MATLAB求解线性规划(含整数规划和01规划)问题 MATLAB 求解线性规划(含整数规划和0-1 规划)问题 线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约 束的,变量范围为有 ...

  4. 2020年全国大学生数学建模竞赛B题穿越沙漠问题——建立整数线性规划模型(ILP)——通过LINGO求解

    2020年全国大学生数学建模竞赛B题 穿越沙漠 题目是讲玩家在不同地图下穿越沙漠,所获得的资金数要最多(大概是这个意思).然后通过文章的描述又总结了N个约束条件.整体的思路就是对资金最大化作为目标函数 ...

  5. 用PuLP求解混合0-1整数规划问题

    通过PuLP构造并求解混合0-1整数规划问题 文章目录 前言 一.混合0-1整数规划问题举例 二.Pulp构造与求解 1.例题实现 2.结果呈现 总结 前言 混合0-1整数规划不同于普通的线性规划问题 ...

  6. 运筹优化学习02:Lingo求解带容量约束的车辆路径问题(CVRP)

    目录 1 基础知识储备 1.1 LINGO 具有9种逻辑运算符 1.2 lingo的窗口状态解析 1.3 @wrap函数解析 1.3.1 官方解释 1.3.2 示例代码及解释 2 CVRP问题描述与模 ...

  7. 数学建模常用算法——Lingo求解数学规划问题

    什么是数学规划? 数学规划是运筹学的 ⼀个分支,其用来研究:在给定的条件下(约束条件),如何按照某 ⼀衡量指标 (目标函数)来寻求计划. 管理工作中的最优方案 . 简而言之,就是求目标函数在 ⼀定约束 ...

  8. 【学习笔记】求解简单递归式的一般方法

    [学习笔记]求解简单递归式的一般方法 手动博客搬家: 本文发表于20180618 15:53:06, 原地址https://blog.csdn.net/suncongbo/article/detail ...

  9. lingo变量无限制版本_【运筹学】用Lingo求解运输问题,兼谈Lingo语法

    一. 运输模型 设有 个产地 其产量(供应量)分别为 : 个销地 , 其销量(需求量)分别为 :从产地 运往销地 的运费为 . 假设产销平衡,问如何安排运输方案能使总运费最小? 这就是经典的运输问题, ...

最新文章

  1. 新站优化工作还有一点点补充内容!
  2. 委托与事件代码详解与(Object sender,EventArgs e)详解
  3. php个推设置指定用户收到推送消息,请问怎么给指定用户推送信息
  4. centos6下如何安装mysql服务_CentOS6下安装MySQL数据库服务
  5. 学python语言有前途吗-Python语言是什么?学Python语言有前途吗?
  6. 运输层详解(二)(TCP)
  7. 概率论-随机变量的数字特征思维导图
  8. 2019IDEA破解安装
  9. 魔兽世界3.35+mysql_最新魔兽世界3.35兔子王版本商业一键启动服务端+启动教程
  10. ceph搭建及使用详解
  11. 解读物联网八大环节供应链(附13大电子行业产业链全景图)
  12. iOS支付宝、微信支付
  13. 计算机毕业论文系统架构,基于B/S架构的毕业论文管理系统的设计与实现
  14. 如何在服务器上编辑配置文件
  15. hihoCoder #1079 离散化
  16. 脑电图源成像:分析步骤的实践回顾
  17. 网站兼容IE6、7,代码控制360浏览器使用极速模式
  18. 读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路
  19. CentOS7.9奶妈级教程安装Ansible AWX 17.1.0
  20. 在overleaf中下载beamer模版(用latex编写ppt文件)

热门文章

  1. 【C语言】——文件内容排序
  2. CS231n:Numpy教程
  3. 正交矩阵的列向量组是标准正交向量组
  4. 电子烟“致癌”?美国癌症协会:危害显著低于普通香烟
  5. yolov5识别吸烟(含数据集)
  6. 第2期——WLAN射频和信道
  7. 你懂得泡妞,就应该懂得云计算之PaaS、IaaS和SaaS
  8. ap统计学需要什么计算机,AP统计学考什么
  9. 如何将视频做成gif动图?
  10. DC/EP应用场景探讨