1.前置知识
01整数规划,仅限用于变量xj为0/1的情况
即约束函数为:
0≤xj≤1且xj为整数
2.单一相互排斥的约束条件
抽象化理解题目即:λ种运输方式,仅能选择一定种数的运输方式
为了解决此类问题,我们统一引入0-1变量
y={1,当采取船运方式时0,当采取车运方式时
e.g.1
约束条件为:
5x1+4x2≤24 or 7x1+3x2≤45
引入0-1变量,上述可改写为:
⎧⎨⎩5x1+4x2≤24+yM,7x1+3x2≤45+(1−y)M,y=0或1
其中,M为充分大的数
(待解决:怎么用linprog实现yM的表示?)<-已解决
e.g.实例
某公司拟在市东、西、南三区建立门市部。拟议中有7个位置(点)Ai(i=1,2,3...7)可供选择。规定:
1.在东区。由A1,A2,A3三个点中至多选两个
2.在西区,由A4,A5两个点中至少选一个
3.再南区,由A6,A7两个点中至少选一个
如选用Ai点,设备投资估计为bi,每年可获利润估计为ci元,但投资总额不能超过
解:
引入0-1变量xi:
xi={1,当Ai点被选中0,当Ai点未被选中(i=1,2...7)
则上述模型转化为:
max z=7∑i=1cixi
s.t.⎧⎪
⎪
⎪⎨⎪
⎪
⎪⎩∑7i=1bixi≤Bx1+x2+x3≤2x4+x5≥1x6+x7≥1(xi=0或1)
2.1.多重相互排斥的约束条件
抽象化理解题目:
即问题2的扩展,问题变为了运用0−1变量来求解m个互相排斥的约束问题
若有m个相互约束的约束条件:
ai1x1+...+ainxn≤bi,i=1,2,...,m
我们重新定义0-1变量yi
yi={1,第i个约束起作用,0,第i个约束起作用(i=1,2,...m)
可得m+1个约束条件:
{ai1x1+...+ainxn≤bi+(1−yi)M (1∗)y1+y2+...+ym=1 (2∗)
注意到,(2*)式只有一个yi会等于1
故令y∗=1,代入(1*)式,则只有i=i∗的约束条件起作用,其他式子均为多余的。
可暴力枚举y∗来更新ans
3.关于固定费用的问题
常见问题下要求使成本最小,故成本为可变常数。而部分问题中成本为固定常数,则需要使用混合整数规划来解决。
e.g.
某工厂为了生产某种产品,有几种不同的生产方式可供选择,如选定的生产方式投资高(选购自动化程度高的设备),由于产量大,因而分配到每件产品的变动成本就降低;反之,如选定的生产方式投资低,将来分配到每件产品的变动成本可能增加。所以,必须全面考虑。设有三种方式可供选择,令
j=1,2,3分别表示三种方式;
xj表示采用第j种方式时的产量;
cj表示采用第j种方式时每件产品的变动成本
kj表示采用第j种方式时的固定成本
解:
暂不考虑其他约束条件的情况下,采用各种生产方式的总成本分别为
Pj={kj+cjxj,xj>00,xj=0
引入0−1变量yj
yi={1,当采用第j种生产方式,即xj>0时0,当不采用第j种生产方式,即xj=0时(i=1,2,...m)
故目标函数为:
min z=(k1y1+c1x1)+(k2y2+c2x2)+(k3y3+c3x3)
约束条件为:
yjϵ≤xj≤yjM,j=1,2,3
式中ϵ为充分小的正常数,M为充分大的正常数
此式可完全替代0−1变量表达式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战