数学建模——整数规划

本文讲解了整数规划的基本概念,区分了纯整数规划、混合整数规划和0-1型整数规划,并介绍了0-1思维在约束条件处理中的应用。重点讲述了如何通过matlab的intlinprog函数求解整数线性规划实例,以及为何直接舍入非整数解不可靠。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上章回顾:

https://blog.youkuaiyun.com/qq_51564046/article/details/118568020?spm=1001.2014.3001.5501

在上一篇文章中,我们学习到了线性规划。

接下来,我们来看另一种规划问题,整数规划。在数学规划中的变量限制为整数时,我们称之为整数规划。若线性规划中的模型,变量限制为整数,我们则称之为整数线性规划

整数规划可以分为两类:

(1)纯(完全)整数规划:变量全限制为整数时

(2)混合整数规划:变量部分限制为整数

(3)0-1型整数规划:变量x仅取值0或1;我们称这样的变量叫01变量,也可称为二进制变量或者01变量。

0-1思维:针对于一个问题是或者否,表示两种状态。在图论中较为常用,两个部分是否有连通。连通为1不通为0。

用0-1思维解决相互排除的约束条件。

2个互相排斥的约束条件。例子:x1=0 或 500<=x1<=800

可以改写为:\left\{\begin{matrix} 500y\leqslant x1\leqslant 800y & \\ y=0 or 1 & \end{matrix}\right.

m个互相排斥的约束条件:a_{i1}x_{1}+.....+a_{in}x_{n}<=b_{i}

加入一个变量y保证只有一个约束条件起作用,同时引入一个变量M保证效果

a_{i1}+...+a_{in}x_{n}\leqslant b_{i}+(1-y_{i})M

整数线性规划的求解:目前没有方法能有效的求解一切整数规划问题。(tips:不能想做把得到的带有分数小数的解经过舍入得到整数解。可能会导致整数解不是最优解,或者整数解不在可行域)

这里我们可采用matlab中的intlinprog函数求解。

eg:

clear all;
%{
某厂拟用集装箱托运甲乙两种货物,
每箱的体积、重量、可获利润以及托运所受限制见下表。
问每集装箱中两种货物各装多少箱,可使所获利润最大。
货物     体积       重量     利润
甲        5          2         20
乙        4          5         10
托运限制  24         13
/集装箱
%}
f=[-20;-10];
intcon = [1,2];
A=[5,4;2,5];b=[24;13];
lb=zeros(2,1);ub=[inf,inf];
x=intlinprog(f,intcon,A,b,[],[],lb,ub)

intlinprog函数详解:

f:目标函数的系数矩阵。(这里是求最小值。如要求最大值,所有系数*-1即可)

intcon:整数所在位置。(注意这个是m,从1开始)如:[1,2]

A:不等式约束条件的系数矩阵

b:不等式约束条件值

Aeq:等式约束条件的系数矩阵

Beq:等式约束条件值

lb:变量约束的下界

ub:变量约束的上限

intlinprog(f,intcon,A,b,Aeq,Beq,lb,ub)(其中如果没有就用空矩阵表示)

如果是01型的整数规划问题,上限变为1即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值