2021-06-10

用规划模型求解指派问题

一、前言

  优化模型主要有线性规划、非线性规划、动态规划和整数规划。而指派问题是整数规划中一类重要的问题:
有\(n\)项任务,由\(n\)个人来完成,每个人只能做一件,第\(i\)个人完成第\(j\)项任务要\(c_{ij}\)小时,如何合理安排时间才能使总用时最小?

二、 指派问题的数学模型

我们引入 0 - 1变量 \(x_{ij}\)

\[x_{ij} = \begin{cases}1, & \text{表示指派第i个人完成第j项工作} \\0, & \text{表示不指派第i个人完成第j项工作}\end{cases}\]

用x_{ij}表示第i个人完成第j项工作所需要的资源数,称之为价值系数。因此指派问题的数学模型是:

\[min \ z = \sum_{i=1}^n\sum_{j=1}^nc_{ij} x_{ij}\]

\[s.t = \begin{cases}\sum_{i=1}^n x_{ij}=1,\ \ \ \ \ i=1,2,···,n\\\sum_{j=1}^n x_{ij}=1,\ \ \ \ \ j=1,2,···,n\\x_{ij}=0或1,\ \ \ \ \ i,j = 1,2,···,n\end{cases}\]

  • 第一个式子表示完成全部n项工作所消耗的总资源数要最少;
  • 第二个式子表示第i个人只完成一项工作;
  • 第三个式子表示第j项工作只能由一个人完成;
  • 第四个式子表示决策变量只能取0或者1。

指派问题可以看作0 - 1整数规划问题来求解,也可以用更简单的匈牙利算法来求解。

三、 0 - 1规划求解(Matlab)

我们先给出这样一个例题,图中数值为第i个人要完成第j个任务需要消耗的资源数\(x_{ij}\),求解:如何安排才能使的总资源消耗最少。
在这里插入图片描述

编程思路:
根据规划问题的要求:
每个人只能完成一个任务,每个任务只能由一个人完成。也正如第三部分中的第二个式子和第三个式子,当该4x4矩阵表示\(x_{ij}\),即指派第i个人完成第j个任务时,此时每一行相加的值和为1,每一列相加的值和为1。(\(x_{ij}\)的值只能为0或者1)根据该思路,我们可以来进行Matlab变成。

c=[2,15,13,4,10,4,14,15,9,14,16,13,7,8,11,9]';Aeq=[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0; 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0; 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1; 1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0; 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0; 0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0; 0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1];beq=[1;1;1;1;1;1;1;1];lb=zeros(16,1);ub=ones(16,1);[x,fval] = linprog(c,[],[],Aeq,beq,lb,ub)x=reshape(x,[4,4])'

其中Aeq和beq代表的是等式约束,Aeq的前四行分别表示 4x4的\(x_{ij}\)矩阵中四行中每行相加的值为1;Aeq的后四行分别表示4x4的\(x_{ij}\)矩阵找那个的四列中每列相加的值为1。(实际上它就是将4x4的矩阵按照行进行展开成了1x16的矩阵)。
然后再调用linprog()线性规划的函数,输入相应参数进行求解。求解所得的x是16x1的矩阵,我们为了便于观察,最后将该矩阵转换成4x4的矩阵。

以上代码也可以用for循环对其优化,将线性规划转换成整数规划进行求解

c=[2,15,13,4;10,4,14,15;9,14,16,13;7,8,11,9];c=c(:);a=zeros(8,16);intcon=1:16;for i=1:4 a(i,(i-1)*4+1:4*i)=1; a(4+i,i:4:16)=1;endb=ones(8,1);lb=zeros(16,1);ub=ones(16,1);x=intlinprog(c,intcon,[],[],a,b,lb,ub)x=reshape(x,[4,4])

在对于指派问题中,还有一个经典算法时匈牙利算法,核心是寻找增广路径,用增广路径求二分图最大匹配的算法。后面会有一篇博客专门分享我对匈牙利算法理解及matlab实战。









原文转载:http://www.shaoqun.com/a/793476.html

跨境电商:https://www.ikjzd.com/

淘粉吧返利:https://www.ikjzd.com/w/1725

杨颜:https://www.ikjzd.com/w/1820

stylenanda官网:https://www.ikjzd.com/w/1675.html

中转贸易:https://www.ikjzd.com/w/1427


一、前言  优化模型主要有线性规划、非线性规划、动态规划和整数规划。而指派问题是整数规划中一类重要的问题:有\(n\)项任务,由\(n\)个人来完成,每个人只能做一件,第\(i\)个人完成第\(j\)项任务要\(c_{ij}\)小时,如何合理安排时间才能使总用时最小?二、指派问题的数学模型我们引入0-1变量\(x_{ij}\)\[x_{ij}=\begin{cases}1,&\text{表
【干货】亚马逊VC的2种发货方式:https://www.ikjzd.com/tl/7724
我们公司的昨天跟卖投诉警告模板,双手贡献给大家:https://www.ikjzd.com/tl/7725
给大家分享欧洲五国站外促销TOP50引流网站:https://www.ikjzd.com/tl/7726
www.made-in-china.com:https://www.ikjzd.com/w/2777
dhl:https://www.ikjzd.com/w/516
blackbird:https://www.ikjzd.com/w/950
口述:该如何拯救有小偷小摸习惯的女友(2/2):http://lady.shaoqun.com/m/a/45742.html
被男友按着狂啪 今晚我要爽死你,好硬:http://lady.shaoqun.com/m/a/248273.html
七八个男人填满了我下面 我被几个男的整的好爽爽:http://www.30bags.com/m/a/249927.html
连载小说|教授和我的恋情(v .事情的真相):http://lady.shaoqun.com/a/363130.html
不做爱也不能禁欲?那我们该怎么办?:http://lady.shaoqun.com/a/363131.html
《一次失误人生》第四章:一月激情-原创BL:http://lady.shaoqun.com/a/350259.html

No comments:

Post a Comment