matchpairs
语法
描述
解决了线性分配问题矩阵的行和列米
= matchpairs (成本
,costUnmatched
)成本
。每一行是分配给一个列,这样总成本最小化。costUnmatched
指定不分配的成本每一行,每一行和每列的成本分配给每一列没有行。
(
此外返回无与伦比的行索引米
,你的
,加州大学
)= matchpairs (成本
,costUnmatched
)你的
无与伦比的列和索引加州大学
。
(___)= matchpairs (
指定的目标输出参数组合的优化使用任何以前的语法。成本
,costUnmatched
,目标
)目标
可以“最小值”
或“马克斯”
生产总成本最小化或最大化匹配。
例子
以最小的成本分配航班
分配销售人员的航班,这样运输的总成本最小化。
公司有四个销售人员需要前往全国主要城市。公司必须预订航班,并想花尽可能少的钱。这些销售人员都建立在不同地区的国家,所以他们飞到每个城市的成本不同。
此表显示了每个销售人员的成本飞向每一个主要城市。
每个城市代表一个销售机会。如果一个城市是错过了,那么该公司失去了平均收入增加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
计算最便宜的办法每个城市的销售人员。
不平等的行和列的数量
匹配行,列,当你有多列成本比行矩阵。
创建一个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车辆请求。只有三个五骑请求可以填满。
创建一个利润矩阵来表示每个乘坐出租车的利润。
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个空缺。
计算的总利润计算的解决方案。自costUnmatched
是零,你只需要加在一起的利润每一场比赛。
TotalProfits =总和(P (sub2ind(大小(P), M (: 1), M (:, 2))))
TotalProfits = 17
随着时间的推移跟踪点的位置
使用matchpairs
跟踪几个点的运动通过最小化总距离的变化。
情节一个网格点的时间 在绿色。在时间 ,一些点少量随机方向移动。
(x, y) = meshgrid (4:6:16);x0 = x (:) ';y0 = y (:) ';情节(x0, y0,“g *”)举行在rng默认的%的再现性x1 = x0 + randn(大小(x0));日元= y0 + randn(大小(y0));情节(x1, y1,的r *)
使用matchpairs
匹配点
点的
。要做到这一点,首先计算成本矩阵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)
对应于原始点
,值M (: 1)
对应点
。
情节点的配对。比移动的点2 * costUnmatched
远离原来的点仍然是无与伦比的。
xc = (x0 (M (:, 2));x1 (M (: 1)));yc = [y0 (M (:, 2));日元(M (: 1)));情节(xc、yc“o”)
输入参数
成本
- - - - - -成本矩阵
矩阵
成本矩阵。每个条目成本(i, j)
指定的成本分配行我
对列j
。
数据类型:单
|双
目标
- - - - - -优化目标
“最小值”
(默认)|“马克斯”
优化目标,指定为“最小值”
或“马克斯”
。优化目标指定的总成本是否应该最小化或最大化。
例子: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
。
解决方案的总成本米
是所有的成本的总和配对添加到所有无与伦比的对成本:
在代码的总成本
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。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
代码生成不支持稀疏矩阵输入的这个函数。金宝app
版本历史
介绍了R2019a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。