在人们的生产实践中,经常会遇到以下问题:汽车企业在制订生产计划时,要求所生产的不同类型的汽车数量必须为整数:用人单位在招聘员工时,要求所招聘的不同技术水平的员工数量必须为整数;等等。我们把要求一部分或全部决策变量必须取整数值的规划问题称为整数规划(Integer Programming,IP)。
目录
- 一、整数规划的分类
- 1.线性整数规划
- 2.非线性整数规划
- 3.0-1规划
- 二、matlab对于整数规划的代码求解
- 1.Matlab线性整数规划求解
- 2.Matlab线性0-规划求解
- 三、线性整数规划的实例
一、整数规划的分类
1.线性整数规划
线性的意思:在线性规划的基础上,加入变量取整数的条件
2.非线性整数规划
无特定算法,只能用近似算法,如蒙特卡罗模拟、智能算法(后续会讲到)
3.0-1规划
特殊的整数规划,Matlab中也只能求解线性0-1规划,对于非线性0-1规划也只能近似求解。(数模比赛中最常出现)
二、matlab对于整数规划的代码求解
1.Matlab线性整数规划求解
[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)
线性整数规划求解代码与线性规划代码十分相似,只加了一个intcon
参数,其是一个向量,向量中的数字i代表第i个变量是整数
例如:决策委量有三个:x1、x2、x3;若x2、x3为是整数,则intln=[l,3]
2.Matlab线性0-规划求解
只需在上下界上设定其范围是从0-1即可
三、线性整数规划的实例
c=[-3;-2;-1]; intcon=3; % x3限定为整数
A=ones(1,3); b=7;
Aeq=[4 2 1]; beq=12;
lb=zeros(3,1); ub=[+inf;+inf;1]; %x(3)为0-1变量
[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)