第二章:整数规划

2.1 基本概念

整数规划:数学规划中的变量(部分或全部)限制为整数
目前只能求解整数线性规划
整数规划的解有如下三种情况:

  1. 没有可行解(最优解不是整数)
  2. 存在最优解(最优解为整数)
  3. 有可行解(最优解值变差)

2.2 0-1整数规划

定义:变量x仅取值0或1,即0-1变量

2.2.1 相互排斥的约束条件
  1. 引进一个充分大的数,削弱取一种情况时另一种情况下的约束条件
  2. 改为普通的约束条件(不常用)

若有m个互相排斥的约束条件
在这里插入图片描述
需保证只有一个起作用,则引进m个0-1变量:
在这里插入图片描述
和一个充分大的常数M,则有:
在这里插入图片描述

2.2.2 混合整数规划(固定费用)

定义:变量部分限制为整数
可用约束条件:
在这里插入图片描述
y为引入的0-1变量,ε\varepsilonε为充分小的正常数,M为充分大的正常数
上式即代替了该分段函数:
在这里插入图片描述

2.2.3 指派问题

关键:给出系数矩阵C
规划模型为:(x为引入的0-1变量)
在这里插入图片描述

2.3 蒙特卡洛法(随机取样法)

目的:求解非线性整数规划
matlab程序如下:
  定义目标函数 f 和约束向量函数 g

mente.m
function [f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
%...表示续行
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
%每行代表一个约束条件

  求解问题

rand('state',sum(clock));  %初始化随机数发生器
p0=0;
tic    %计时开始
for i=1:10^6
   x=randi([0,99],1,5); %产生1行5列的区间[0,99]上的随机整数数
   [f,g]=mengte(x);
   if all(g<=0)
       if p0<f
           x0=x; p0=f; %记录下当前较好的解
       end
   end
end
x0,p0
toc    %计时结束

2.4 整数线性规划的计算机求解

matlab求解混合整数线性规划,用intlinprog函数,但必须把所有的决策变量化成一维决策变量,即需要做变量替换。
  标准形式为:
在这里插入图片描述
在这里插入图片描述
A,Aeq为矩阵,其余变量均为列向量)
有指派问题的matlab程序:
  需要把x变为一维决策变量

clc, clear
c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5
   8 4 2 3 5;9 10 6 9 10];
c=c(:);%按列拉直
a=zeros(10,25); 
intcon=1:25;
for i=1:5
   a(i,(i-1)*5+1:5*i)=1;
   a(5+i,i:5:25)=1;
end
b=ones(10,1); lb=zeros(25,1); ub=ones(25,1);
x=intlinprog(c,intcon,[],[],a,b,lb,ub);
x=reshape(x,[5,5])

附:数学规划问题用lingo解决更简单方便,此处不过多讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值