主要内容

matchpairs

解决线性分配问题

描述

例子

= matchpairs (成本,costUnmatched)解决了线性分配问题矩阵的行和列成本。每一行是分配给一个列,这样总成本最小化。costUnmatched指定不分配的成本每一行,每一行和每列的成本分配给每一列没有行。

(,你的,加州大学)= matchpairs (成本,costUnmatched)此外返回无与伦比的行索引你的无与伦比的列和索引加州大学

例子

(___)= matchpairs (成本,costUnmatched,目标)指定的目标输出参数组合的优化使用任何以前的语法。目标可以“最小值”“马克斯”生产总成本最小化或最大化匹配。

例子

全部折叠

分配销售人员的航班,这样运输的总成本最小化。

公司有四个销售人员需要前往全国主要城市。公司必须预订航班,并想花尽可能少的钱。这些销售人员都建立在不同地区的国家,所以他们飞到每个城市的成本不同。

此表显示了每个销售人员的成本飞向每一个主要城市。

达拉斯 芝加哥 纽约 城市 圣。 路易 弗雷德 美元 6 0 0 美元 6 7 0 美元 9 6 0 美元 5 6 0 贝丝 美元 9 0 0 美元 2 8 0 美元 9 7 0 美元 5 4 0 美元 3 1 0 美元 3 5 0 美元 9 5 0 美元 8 2 0 格雷格 美元 3 2 5 美元 2 9 0 美元 6 0 0 美元 5 4 0

每个城市代表一个销售机会。如果一个城市是错过了,那么该公司失去了平均收入增加2000美元。

创建一个成本矩阵来表示每个销售人员飞到每个城市的成本。

C = (600 670 960 560 900 280 970 540 310 350 950 820 325 290 600 540];

使用matchpairs将销售人员分配给城市以最小的成本。指定unassignment 1000的成本,因为unassignment的成本被计算两次如果一行和一列仍然无可匹敌的。

M = matchpairs (C, 1000)
M =4×23 1 2 4 2 3 4

matchpairs计算最便宜的办法每个城市的销售人员。

达拉斯 芝加哥 纽约 城市 圣。 路易 弗雷德 美元 6 0 0 美元 6 7 0 美元 9 6 0 美元 560年 贝丝 美元 9 0 0 美元 280年 美元 9 7 0 美元 5 4 0 美元 310年 美元 3 5 0 美元 9 5 0 美元 8 2 0 格雷格 美元 3 2 5 美元 2 9 0 美元 600年 美元 5 4 0

匹配行,列,当你有多列成本比行矩阵。

创建一个3-by-8成本矩阵。因为你只有三行,matchpairs可以产生最多的三场八列。

rng默认的%的再现性C =兰迪([100]3 8)
C =3×884 93 35 97 97 22 82 13 92 67 59 24 54 48 97 87 21 18 97 98 82 93 69 94

使用matchpairs匹配成本矩阵的行和列。得到的最大匹配数,使用一个大unassignment成本(相对于成本矩阵中的条目的大小)。指定三个输出返回无与伦比的行和列的索引。

(M, uR,加州大学)= matchpairs (C, 1 e4)
M =3×23 1 2 2 4 8
你= 0 x1空双列向量
加州大学=5×11 3 5 6 7

五列的C不与任何行。

分配出租车路线,这样的利润最大化。

乘坐出租车公司有几个来自全城的请求。该公司希望派遣其有限数量的出租车的方式赚了最多的钱。

这个表显示了估计的士收费为每个5车辆请求。只有三个五骑请求可以填满。

1 2 3 4 5 出租车 一个 美元 5 7 0 美元 6 3 0 美元 3 1 0 美元 4 8 0 美元 3 5 0 出租车 B 美元 5 8 0 美元 6 4 0 美元 3 3 0 美元 4 7 0 美元 3 2 0 出租车 C 美元 5 7 0 美元 6 3 0 美元 3 2 0 美元 4 9 0 美元 3 4 0

创建一个利润矩阵来表示每个乘坐出租车的利润。

P = [5.7 6.3 3.1 4.8 3.5 5.8 6.4 3.3 4.7 3.2 5.7 6.3 - 3.2 4.9 - 3.4);

使用matchpairs匹配最赚钱的乘坐的出租车。指定三个输出返回任何无与伦比的行和列,和“马克斯”选择来最大化利润。指定unassignment成本为零,因为该公司没有钱从空出租车或乘坐请求。

costUnmatched = 0;(M, uR,加州大学)= matchpairs (P costUnmatched“马克斯”)
M =3×21 1 2 2 3 4
你= 0 x1空双列向量
加州大学=2×13个5

matchpairs计算最赚钱来填补。解决方案使车辆请求3和5个空缺。

1 2 3 4 5 出租车 一个 美元 5 7 0 美元 6 3 0 美元 3 1 0 美元 4 8 0 美元 3 5 0 出租车 B 美元 5 8 0 美元 6 4 0 美元 3 3 0 美元 4 7 0 美元 3 2 0 出租车 C 美元 5 7 0 美元 6 3 0 美元 3 2 0 美元 4 9 0 美元 3 4 0

计算的总利润计算的解决方案。自costUnmatched是零,你只需要加在一起的利润每一场比赛。

TotalProfits =总和(P (sub2ind(大小(P), M (: 1), M (:, 2))))
TotalProfits = 17

使用matchpairs跟踪几个点的运动通过最小化总距离的变化。

情节一个网格点的时间 t = 0 在绿色。在时间 t = 1 ,一些点少量随机方向移动。

(x, y) = meshgrid (4:6:16);x0 = x (:) ';y0 = y (:) ';情节(x0, y0,“g *”)举行rng默认的%的再现性x1 = x0 + randn(大小(x0));日元= y0 + randn(大小(y0));情节(x1, y1,的r *)

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。

使用matchpairs匹配点 t = 0 点的 t = 1 。要做到这一点,首先计算成本矩阵C (i, j)欧几里得距离点吗对点j

C = 0(大小(x) ^ 2);k = 1:长度(y1) C (k,:) = vecnorm ([x1 (k) x0;日元(k) y0) 2 1)”;结束C
C =9×92.8211 3.2750 9.2462 6.1243 6.3461 10.7257 11.7922 11.9089 14.7169 4.9987 2.2771 7.5752 6.2434 4.3794 8.4485 11.1792 10.2553 12.5447 15.2037 9.3130 3.7833 17.1539 12.2408 8.7988 20.7211 16.8803 14.5783 6.9004 8.6551 13.1987 1.1267 5.3446 11.3075 5.1888 7.3633 12.3901 8.6703 6.3191 8.7571 5.9455 0.3249 6.0714 8.2173 5.6816 8.3089 13.5530 8.1918 4.7464 12.7818 6.8409 1.4903 14.6652 9.9242 7.3426 11.5682 13.1257 16.8150 5.5702 8.3359 13.4144 0.4796 6.2201 12.2127 13.6699 12.3432 13.7784 8.6461 6.3438 8.8167 5.8858 0.3644 6.1337 20.6072 17.2853 15.6495 16.5444 12.1590 9.6935 13.9562 8.3006 3.8761

下一步,使用matchpairs匹配成本矩阵的行和列。指定unassignment 1的成本。这样低成本的相对于条目unassignment成本矩阵,它是可能的matchpairs将无与伦比的一些点。

M = matchpairs (C, 1)
M =5×24 4 5 5 6 6 7 7 8 8

的值米(:,2)对应于原始点 ( x 0 , y 0 ) ,值M (: 1)对应点 ( x 1 , y 1 )

情节点的配对。比移动的点2 * costUnmatched远离原来的点仍然是无与伦比的。

xc = (x0 (M (:, 2));x1 (M (: 1)));yc = [y0 (M (:, 2));日元(M (: 1)));情节(xc、yc“o”)

图包含一个坐标轴对象。坐标轴对象包含7线类型的对象。

输入参数

全部折叠

成本矩阵。每个条目成本(i, j)指定的成本分配行对列j

数据类型:|

成本不匹配,指定为一个标量。matchpairs比较的价值2 * costUnmatched的条目成本以确定是否更有利于保持无与伦比的行或列。利用这个参数匹配算法或多或少可能。有关更多信息,请参见线性分配问题

例子:M = matchpairs (C, 10)指定的10成本不匹配的行或列C

数据类型:|

优化目标,指定为“最小值”“马克斯”。优化目标指定的总成本是否应该最小化或最大化。

例子:M = matchpairs(成本、costUnmatched“max”)指定的行和列成本应该匹配在一起的总成本最大化。

输出参数

全部折叠

比赛,作为一个矩阵返回。是一个p——- - - - - -2矩阵,M (i, 1)M (i, 2)是一对匹配的行和列索引成本矩阵。的行与第二列按升序排序。

  • 每行和每列只能匹配一次,所以每个M (i, 1)价值和每个M (i, 2)价值是独一无二的。

  • 包含p匹配,p小于或等于最大匹配数min(大小(成本))

  • 匹配的成本总和([成本(M (1, 1), M(1、2)、成本(M (2, 1), (2, 2)),…、成本(M (p, 1), M (p, 2))))

未赋值的行,返回一个列向量的指数。的条目你的说明哪些行成本未赋值的。中的每个条目你的加州大学有助于显示解决方案的总成本costUnassigned

未赋值的列,作为一个列向量返回的索引。的条目加州大学显示哪些列成本未赋值的。中的每个条目你的加州大学有助于显示解决方案的总成本costUnassigned

更多关于

全部折叠

线性分配问题

线性分配问题是一种分配行,列,每一行是分配给一个列,作业的总成本最小(或最大)。分配的成本每一行每一列是在捕获成本矩阵。条目成本(i, j)的成本分配行吗对列j

unassignment成本分配一个成本不匹配的行或列。这种做法允许最小费用的解决方案,不分配所有行或列。万博 尤文图斯如果一个行和列不匹配,这就增加了总成本2 * costUnmatched

解决方案的总成本是所有的成本的总和配对添加到所有无与伦比的对成本:

T C = = 1 p 成本 ( ( , 1 ) , ( , 2 ) ) + costUnmatched ( + n 2 p )

在代码的总成本

CostAssigned =(成本总和(sub2ind(大小(成本),M (: 1), M (:, 2))));CostUnassigned = costUnmatched *(和(大小(成本))2 *大小(M, 1));TotalCost = CostAssigned + CostUnassigned;

  • 成本是一个——- - - - - -n矩阵。

  • 是一个p——- - - - - -2矩阵,M (i, 1)M (i, 2)是一对匹配的行和列。

  • (m + 2 * p)的总数吗无与伦比的行和列。

引用

科斯特[1]达夫、安全火花型和j。“交换算法的大型稀疏矩阵的对角线项。”暹罗j .矩阵肛门。和达成。22(4),2001年。页973 - 996。

扩展功能

版本历史

介绍了R2019a

另请参阅

||