数学建模学习---整数规划2


前言

前面已经讲解了整数规划中分支定界法和割平面法,它们均可求纯或混合整数线性规划.
数模算法学习—整数规划1
本篇介绍 0 −1型整数规划、匈牙利法—解决指派问题。

一、 0 −1型整数规划

  1. 0 −1型整数规划是整数规划中的特殊情形,它的变量 x j 仅取值 0 或 1,这时 x j 称 为0 −1变量。 x j 仅取值 0 或 1 这个条件可由约束条件:【0 ≤ xj ≤ 1 ,x为整数】代替。
  2. 我们先介绍引入0 −1变量的实际问题,再研究解法。

二、0 −1规划实际问题

1.(互斥计划问题)相互排斥的计划

1.1.案例1—投资问题

在这里插入图片描述

  1. 1.确定决策变量: X j 表示是否投资 j 项目,当x=1 时,表示投资该项目,x=0时不投资该项目。X1,X2,X3…分别表示Ⅰ,Ⅱ,Ⅲ…项目
  2. 确定目标函数:由题可知,要求利润最大的方案,而利润等于所投资的各项目的收益之和,因此
    (由于不知道具体投资了哪项所以均列出来,而是否投资也就是该项项目收益是否要算入总收益,由X j(0或1)决定,你投了那个显目,x就是1,就是计入,你不投,x就是0,0乘以该项目的收益也就是0.
  3. 确定约束条件:

在这里插入图片描述
(1)总的投资额为600万,得到第一个式子
(2)项目Ⅰ、Ⅱ、 Ⅲ中选一项:得到第二个式子。即必须有两个0,一个1.
(3)项 目Ⅴ以项目以为先验条件:得到第三个式子,即当X1=1时X5可以为1,也可以为0.但当X1=0时,X5只能为0,即X5≤X1。
(4)变量全是0或1,即第四个式子。

1.2.案例2-场所的选定


在这里插入图片描述
老规矩,第一步确定决策变量,第二步确定目标函数,第三步确定约束条件,步骤如下



在这里插入图片描述

2.互斥约束问题(相互排斥的约束条件)

2.1案例1

在这里插入图片描述
由于有两种相互排斥的约束,为了将他们同时表示,引入一个变量y(仅等于0或1)和一个无穷大的数M得到下列式子

在这里插入图片描述
当Y=1时,第二个式子相当于小于无穷,约束无效,只第一个约束条件起作用,所以M和y巧妙的将两个式子结合起来。
在这里插入图片描述
其中p-q的意思是一共有p个约束条件,其中q 个满足,所以p-q为不满足的约束条件也就是失效的约束条件。

2.2 案例2

在这里插入图片描述

三、指派问题

一人一项工作即一对一
一人一项工作即一对一

在这里插入图片描述
看不懂没关系,接下来例题讲解

在这里插入图片描述

(1)首先,i 代表第几人,j 代表第几项工种,通过排列组合的知识可知一共有 i 的 j 次方的可能性,这时候可暂时认为一个人可以做多项工作,每项工作可以由多人做,这样的目的是为了得到一个矩阵,即指派矩阵,其中的约束条件(一人只做一项工作)由矩阵中x的值(0或1)决定 。
(2)由一个人只能完成一项任务可知,当 i 不变时,所由 i 相同的
X ij之和为1,例如甲只能做一项任务,所以所有X1j为1(0为不做该任务,1为做该任务)。总之就是指派矩阵的每行之和为1。
(3)同理可得“一个工作只能一人完成”的相应约束,即指派矩阵的没列之和为1。

在这里插入图片描述

四、指派问题的matlab求解

  1. 整数规划问题的求解可以使用 Lingo 等专用软件。对于一般的整数规划问题,无法直接利用 Matlab 的函数,必须利用 Matlab 编程实现分枝定界解法和割平面解法。但对于指派问题等0 −1整数规划问题,可以直接利用 Matlab 的函数 linprog进行求解

4.1语法介绍

 x = linprog(f,A,b)
    x = linprog(f,A,b,Aeq,beq)
    x = linprog(f,A,b,Aeq,beq,lb,ub)
    x = linprog(f,A,b,Aeq,beq,lb,ub,options)
    x = linprog(problem)
    [x,fval] = linprog(___)
    [x,fval,exitflag,output] = linprog(___)
    [x,fval,exitflag,output,lambda] = linprog(___)

在这里插入图片描述

a=zeros(10,25);10个等式方程,X ij 有25个,表示一个10×25的0向量
X=reshape(x,5,5),将向量转化成矩阵

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值