运筹说 第61期 | 整数规划经典例题讲解

前言

整数规划是一类要求问题的解中的全部或一部分变量为整数的数学规划,应用范围极其广泛。不仅在工业和工程设计和科学研究方面有许多应用,而且在计算机设计、系统可靠性和经济分析等方面也有新的应用。

通过前面的学习,我们已经掌握了整数规划的数学模型、割平面法、分支定价法、0-1整数规划和指派问题,了解了求解目标规划的MATLAB以及Python相关代码。

本期,小编选取三类共七道整数规划的经典例题,包括含有一般整数变量的整数规划问题、0-1整数规划问题和指派问题进行详细讲解。其中,针对0-1整数变量在构建模型中的一些特殊作用,小编整理出五道0-1整数规划的细分问题,包括固定成本问题、分布系统设计问题、选址问题、投资问题以及含有复杂约束的生产问题,以供大家学习。

 

一、整数规划问题

例1

问题描述:

一汽车厂生产小、中、大三种类型的汽车,已知各类型每辆车对钢材、劳动时间的需求,利润以及每月工厂钢材、劳动时间的现有量如下表所示,试制定月生产计划,使工厂的利润最大。

进一步讨论:由于各种条件限制,如果生产某一类型汽车,则至少要生产80辆,那么最优的生产计划应作何改变。

问题解析: 

计算结果:

原问题:运用本公众号所介绍的MATLAB和Python相关代码或用Lingo直接求解得每月生产小、中、大型汽车的数量分别为64,168,0,工厂最大利润为632万元。进一步讨论:解得每月生产小、中、大型汽车的数量分别为80,150,0,工厂最大利润为610万元。

 二、0-1整数规划问题

例2 固定成本问题 

问题描述:

高压容器公司制造小、中、大三种尺寸的金属容器,所用资源为金属板、劳动力和机器设备,制造一个容器所需的各种资源数量如下表。不考虑固定费用,每种容器单位利润分别为4万元、5万元、6万元,可使用的金属板500吨,劳动力300人/月,机器100台/月,此外只要生产,需支付固定费用:小号是100万元,中号为150万元,大号为200万元。试制定一个生产计划,使获利最大。 

 

 问题解析:

计算结果:

经软件计算:小号、中号和大号容器的生产数量分别为100,0,0,最大目标函数值为300,即获利最多为300万元。

例3 分布系统设计问题 

 

 

问题解析: 

 

计算结果:

 

例4 选址问题

 问题描述:

 

问题解析:

 

计算结果:

 

例5 投资问题 

问题描述:

某公司在今后五年内考虑给以下的项目投资。已知项目A:从第一年到第四年每年年初需要投资,并于次年末回收本利115%,但要求第一年投资最低金额为4万元,第二、三、四年不限;

项目B:第三年初需要投资,到第五年末回收本利128%,但规定最低投资金额为3万元,最高金额为5万元;

项目C:第二年初需要投资,到第五年末回收本利140%,但规定其投资额或为2万元或为4万元,或为6万元或为8万元;

项目D:五年内每年初可购买公债,于当年末归还,并加利息6%,此项投资金额不限。

该部门现有资金10万元,问应如何确定给这些项目的每年投资额,使到第五年末拥有的资金本利总额为最大?

问题解析:

 

 

计算结果:

 

例6 含有复杂约束的生产问题

 问题描述:

因为资金和管理水平的限制,某公司想以相同的价格和不同的租期(工时)租赁另一公司甲、乙、丙丁四个车间中的两个,来生产五种新开发的产品(命名为:A、B、C、D、E)中的最多三种。每种产品在生产过程中要分解成生产难度相似的两个阶段(对于某个车间来说,生产任一阶段所用的工时都是相同的),要求在不同的车间生产,所以一件产品需要两个车间的合作才能完成。由于两个车间的机床和工人的经验不同,生产不同产品的效率也不同,导致不同的产品(任一阶段)在不同的车间生产所用的工时数不同(数据见下表)。另外,根据公司市场部的预测,每种产品的单位利润和在租期内最大的销售量以及各车间在租期内的总工时数等数据也列在下表中。公司管理层应如何选择车间和产品,才能使租期内所获得的利润最大?

 问题解析:

计算结果:

 

三、指派问题 

 例7

 问题描述:

分配甲、乙、丙、丁去完成A、B、C、D、E五项任务。由于任务数多于人数,故规定其中有一个人可兼完成两项任务,其余三人每人完成一项。每人做各项工作所消耗的时间如下表,试确定总花费时间最少的指派方案。

 

问题解析:

 

 

 

计算结果:

 

以上就是本期整数规划精品案例的全部内容啦,通过对这一期的学习,相信大家一定能够加深对整数规划的理解,尤其是对于不同形式的0-1规划问题,一定有了更为全面的认识。希望大家能多发现多思考,在生活实践中学会应用! 

END

作者 | 裴传涛 陈志昂 林鑫

责编 | 刘文志

审核 | 徐小峰

 

  • 15
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面我会通过一个例题讲解运筹学动态规划在机器负荷问题上的应用。 假设有两台机器A和B,需要在三个时间段内完成五个任务。每个任务需要在一台机器上完成,且每个任务的时间不同。机器A和B在不同时间段内的可用工作时间也不同,如下表所示: | 任务 | 时间段1 | 时间段2 | 时间段3 | |------|---------|---------|---------| | 1 | 2 | 3 | 1 | | 2 | 1 | 2 | 2 | | 3 | 2 | 1 | 2 | | 4 | 1 | 3 | 1 | | 5 | 3 | 2 | 1 | | 机器 | 时间段1 | 时间段2 | 时间段3 | |------|---------|---------|---------| | A | 4 | 2 | 3 | | B | 3 | 2 | 1 | 我们需要合理地安排机器的工作负荷,使得在每个时间段内每台机器的工作时间不超过其可用工作时间,并且在三个时间段内完成所有五个任务的总时间最短。 我们可以定义一个状态表示为:$dp[i][j][k]$表示在第$i$个时间段内,机器A已完成$j$个任务,机器B已完成$k$个任务的最短完成时间。 根据状态的定义,我们可以得到状态转移方程: $$ dp[i][j][k] = \min\{dp[i-1][j][k]+t_{j+k+1}^A[i], dp[i][j-1][k]+t_{j+k+1}^B[i], dp[i][j][k-1]+t_{j+k+1}^B[i]\} $$ 其中,$t_{j+k+1}^A[i]$表示在第$i$个时间段内完成第$j+k+1$个任务需要的时间,如果在机器A上完成,则为其完成时间;如果在机器B上完成,则为在机器B上完成该任务的时间加上机器A空闲的时间。同理,$t_{j+k+1}^B[i]$表示在第$i$个时间段内完成第$j+k+1$个任务需要的时间,如果在机器B上完成,则为其完成时间;如果在机器A上完成,则为在机器A上完成该任务的时间加上机器B空闲的时间。 最终的答案为:$dp[3][5][0]$,即在第三个时间段内,机器A已完成5个任务,机器B已完成0个任务的最短完成时间。 以上就是一个简单的例题,它展示了运筹学动态规划在机器负荷问题上的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值