1、1关于玫瑰有约的数学模型摘 要当今社会,城市大龄青年的婚姻问题已引起了广泛关注。针对这一现象,假设某单位有 20 对大龄青年男女,每个人的基本条件和择偶条件都各不相同。该单位的妇联组织拟根据他们的年龄、基本条件和要求条件牵线搭桥。本文根据每个人的基本条件和要求,建立数学模型帮助妇联解决这个问题。首先,我们定义了好感度、好感度增量和成功指数。好感度是男方(女方)对女方(男方)符合自己要求条件的一个量化指标,其中若不满足 2 个要求条件(包括只满足一个要求条件和完全不满足的情况)或年龄条件不符合(男青年至多比女青年大 5 岁,或女青年至多比男青年大 2 岁) ,我们定义此时的好感度为 0;若只满足
2、 3 个要求条件,好感度为 3;依次类推,若 5 个要求条件都满足,好感度为 5。考虑到两个同样满足要求条件的对象,某个单项条件的突出可能会影响到最后的选择,所以我们又引入了好感度增量,即在好感度不为 0的情况下,某个自身条件优于要求条件一个等级(如男青年要求外貌为 B,而某女青年的外貌为 A) ,好感度增量为 0.5。而成功指数则是考量男女双方的配对成功率,具体算法为:成功指数=(好感度+好感度增量)(男对女)(好感度+好感度增量) (女对男) 。建立矩阵 ( 表示 号男青年配对 号女青年)20*(Mjim,ij的成功指数) 。用 matlab 处理数据得出矩阵 。)20*(针对问题(一)要
3、使配对成功率尽可能的高,也就是给出一种方案,使得20 对男女的配对成功指数最高。我们把二十个青年男女抽象化为 40 个结点得到一个带权二部图,其中 Aj 表示二十个男青年,Bj 表示二十个女青年,而从男青年到女青年有一条带权边,权则由上面求得的成功指数矩阵 M 决定,然后,我们用最大二部图匹配算法(匈牙利算法)求出一个最大匹配的解,进而就可以用匈牙利算法对其求解。针对问题(二)求解出的匹配方案应使 20 对男女青年可以全部配对(即没有一对的成功指数为 0) ,且配对成功率之和最高,抽象成数学问题即求解二分图的最大权完全匹配解。采用 KM 算法。针对问题(三)要使每个个体配对成功的可能性最大,要
4、保证配对的男女青年的成功指数足够高,而且两者好感度(*)差值的绝对值不能太大,因此我们定义了两者好感度(*)差值的绝对值为差异指数,规定成功指数应大于所有配对成功指数的平均值(成功指数为 0 的情况除外) ;差异指数应小于差异指数均值的一半。21 问题重述目前,许多城市大齡青年的婚姻问题已引起了妇联和社会团体组织的关注。某单位现有 20 对大龄青年男女,每个人的基本条件都不相同,如外貌、性格、气质、事业、财富等。每项条件由高到低可以分为五个等级A、B、 C、D 、E。每个人的择偶条件也不尽相同。该单位的妇联组织拟根据他(她) 们的年龄、基本条件和要求条件进行牵线搭桥。一般认为,男青年至多比女青
5、年大 5 岁,或女青年至多比男青年大 2 岁 ,并且要至少满足个人要求 5 项条件中的 2 项,才有可能配对成功。要求根据现有的 20 对大龄青年男女的年龄、基本条件和要求条件等统计数据。建立数学模型,对以下三个问题做出解答: (1)给出可能的配对方案,使得在尽量满足个人要求的条件下,使配对成功率尽可能的高。(2) 给出一种 20 对男女青年可同时配对的最佳方案,使得全部配对成功的可能性最大。(3)假设男女双方都相互了解了对方的条件和要求,让每个人出一次选择,只有当男女双方相互选中对方时才认为配对成功,每人只有一次选择机会。提出方案,告诉 20 对男女青年都应该如何做出选择,使得各自的成功的可
6、能性最大?按你的选择方案最多能配对成功多少对?2 模型假设与符号说明1问题假设(1)本文只以外貌、性格、气质、事业、财富这 5 个因素来衡量每个个体的基本条件和择偶的要求条件,不考虑其他因素。(2)假设不满足某方要求条件的 2 项,配对成功的几率为 0。(3)假设男女青年择偶不会受当时环境的影响。2符号说明表示 号男青年的基本条件jiM,1i表示 号男青年的要求条件ji,表示 号男青年对 号女青年的好感度ji,3ij表示 号男青年对 号女青年的好感度增量jiM,表示 号女青年的基本条件jiF,1i表示 号女青年的要求条件ji,23表示 号女青年对 号男青年的好感度jiF,3ij表示 号女青年对
7、 号男青年的好感度增量ji, 表示 号男青年配对 号女青年的成功指数)20*(Rjir,ij3 模型的建立和求解3.1 条件量化处理对于每个人的外貌、性格、气质、事业、财富五项条件的 5 个等级A,B, C,D ,E 分别作量化处理为 5,4,3,2, 1。于是根据附录 4 可以得到男女青年的基本条件量化矩阵和要求条件量化矩阵。3.2 建立权值矩阵要引入权值指数,首先列出大多数人认可的权值指数应具有的性质:(1)如果男方的基本条件中满足女方要求条件的个数越多,则成功率越高,权值指数越大,反之亦然;(2)如果男方满足女方的条件个数一定,在这些满足的方面(男方的基本条件等级越高,则女方的好感度越高
8、,成功率越高,权指数越大。根据以上基本性质,定义如下权值指数:好感度:好感度是男方(女方)对女方(男方)符合自己要求条件的一个量化指标,我们定义为: ,其中若不满足 2 个要求条件(包括只满足一个要求条件和jiM,3完全不满足的情况)或年龄条件不符合(男青年至多比女青年大 5 岁,或女青年至多比男青年大 2 岁) ,我们定义此时的好感度 =0,若只满足 3 个要求jiM,3条件,好感度为 3,依次类推,若 5 个要求条件都满足,好感度为 5。于是我们得到: = ( - )ji,51jiF,ji,02,jijiMF02,jijiM好感度增量:考虑到两个同样满足要求条件的对象,某个单项条件的突出可
9、能会影响到4最后的选择,所以我们又引入了好感度增量,即在好感度不为 0 的情况下,某个自身条件优于要求条件一个等级(如男青年要求外貌为 B,而某女青年的外貌为 A) ,好感度增量增加 0.5。于是我们得到:=0.5( - ) jiM,jiF,1ji,2021,jijiMF最终我们确定好感度(*)=好感度+好感度增量 成功指数:成功指数=(好感度(*))(男对女)(好感度(*) ) (女对男) 。建立矩阵 ( 表示 号男青年配对 号女青年的成功指数) 。20(Rjir,ij即是: )()( ,(),(),)*( ijijjijiji FM通过 matlab 编程求解(程序见附录 1) ,我们得到
10、关于成功指数的权值矩阵 ( 表示 号男青年配对 号女青年的成功指数) 。)20*(Rjir,ij3.3 建立模型模型一 针对问题(一)要使配对成功率尽可能的高,也就是给出一种方案,使得20 对男女的配对成功指数之和最高。我们把二十个青年男女抽象化为 40 个结点得到一个带权二部图,其中 Aj 表示二十个男青年,Bj 表示二十个女青年,而从男青年到女青年有一条带权边,权则由上面求得的成功指数矩阵 R 决定,然后,用最大二部图匹配算法(匈牙利算法)求出一个最大匹配的解,进而就可以用匈牙利算法对其求解。匈牙利算法思想:匈牙利算法的主要思想是在每次增广的时候不是找一条增广路而是同时找几条点不相交的最短
11、增广路,形成极大增广路集,随后可以沿着这几条增广路同时进行增广。可以证明在寻找增广路集的每一个阶段所寻找到的最短增广路都具有相等的长度,并且随着算法的进行最短增广路的长度是越来越长的,更进一步分析可以证明最多只需增广 ceil(sqrt(n)次就可以得到最大匹配。具体操作如下:i)从 中任意取定一个初始对集 。GM(ii)若 把 中的顶点皆许配,停止, 即完美匹配;否则取 中未MX X被 许配的一顶点 ,记 , 。uST(iii)若 ,停止,无完美匹配;否则取 。N)( TSNy)((iv)若 是被 许配的,设 , , ,转yyzzSy(iii) ;否则,取可增广轨 ,令 ,转(ii) 。),
12、(uP)()(MPEM5于是建立如下模型:Max jinijxR,1st )(或 或或 njixijinjijji ,.21,0)(,.,1,模型二针对问题(二)求解出的匹配方案应使 20 对男女青年可以全部配对,且配对成功率之和最高,抽象成数学问题即求解二分图的最大权完全匹配。进而就可以用 KM 算法对其求解。KM 算法思想:KM 算法:(全称是 Kuhn-Munkras,是这二个人在 1957 年提出来的) ,首先为每个点设立一个顶标 Li,设 vi,j-为(i,j)边的权,如果可以求得一个完美匹配,使得每条匹配边 vi, ,其余边 。此时ijjLijjL的解就是最优的,因为匹配边的权和=
13、 ,其余任意解的权和都不可能比这i个大。具体做法如下:(i)选定初始可行顶点标号 ,确定 ,在 中选取一个对集 。llGl M(ii)若 中顶点皆被 许配,停止, 即 的权最大的完美对集;否XM则,取 中未被 许配的顶点 ,令 , 。lGuST(iii)若 ,转(iv) ;若 ,取TSNl)(NlG)(,)(min, xywlxyxl ,其 它),(,vlTll, 。llG(iv)选 中一顶点 ,若 已被 许配,且 ,则TSNl)(yMyx6, ,转(iii) ;否则,取 中一个 可增广轨 ,zSyTlGM),(yuP令,)()(MPEM转(ii) 。其中 是 中 的相邻顶点集。)(SNlGl
14、于是建立如下模型:max jinijxR,1 )(或 或或 njixijinjijji ,.21,0)(,.,1,模型三针对问题 3 中指导男女青年做出选择,使成功的可能性最大,实际中一个男青年 ( )对一个女青年 ( )的好感度(*)最高,但iM120jF120j对 的好感度(*)不一定最高,即若 选择 ,但 不一定选择 。jFi iMjjFiM因此,两人不一定配对成功。因此要使每个个体配对成功的可能性最大,要保证配对的男女青年的成功指数足够高,而且两者好感度(*)差值的绝对值不能太大。所以我们定义了两者好感度(*)差值的绝对值为差异指数,我们规定成功指数应大于所有配对成功指数的平均值(成功
15、指数为 0 的情况除外) ;差异指数应小于差异指数均值的一半。于是建立如下模型:max jinijx,17 )(或 或或 njixixjinjijji ,.21,0)(,.,1,3.4 模型的求解以题中所给数据为例,得到权值矩阵 R,然后代入模型(一)和模型(二)编程求得结果为:问题(1)男 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B18 B17 B16 B15 B2 B19 B3 B12 B1 B14男 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20女 B20 B10 B7 B8 B6 B5 B4 B11 B9 B13问题(2)男 A1
16、 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B14 B7 B8 B18 B10 B13 B1 B5 B20 B2男 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20女 B3 B19 B15 B6 B11 B17 B16 B12 B9 B4问题(3)男 A1 A2 A3 A5 A6 A7 A8 A9 A10 A11女 B8 B2 B6 B17 B3 B7 B1 B18 B19 B11男 A12 A13 A14 A16 A17 A18 A19女 B9 B13 B16 B12 B14 B15 B103.5 模型结果的分析评价模型的优缺点优点:我们定义了好
17、感度,并定义了好感度增量进一步增加了好感度的可靠性,定义成功指数=男女双方好感度(*) 之积,如果一方好感度偏高,另一方好感度偏低,两者相差较大,成功指数也不会很大,这反映成功指数的合理性。8而且在模型中我们运用了匈牙利算法和 KM 算法使问题更加简单化,充分体现了熟练运用数学软件在我们运用数学思想解决实际问题中的重要性。缺点:在实际生活中,每个人的基本条件和择偶条件并不只包含外貌,性格,气质,事业和财富等这五个方面,实际情况也并不能够简单量化为 1-5,而且每个人择偶是对基本条件的各方面侧重也不同,所以我们的模型总体来说还是略显粗糙。但可以在特定的情况下给出比较有参考型的解决方案。模型的推广
18、交友网站是可以运用本模型的网站,根据用户自身的资料再填写对对方的要求,根据“ 我的条件 TA 对我的要求” 和“我对 TA 的要求TA 的条件”这样的关系进行条件项的匹配。这是一种比较传统的匹配。在进行交友方面的匹配时,则根据用户的兴趣爱好来进行匹配,用户可以输入:杭州 周末 登山。这一系列的匹配关键字,可以匹配到同样有这方面爱好的朋友, 另外该模型还可以用于公司雇佣员工,不仅可以求解出员工和职位的匹配方案使公司的效益最大化。而且可以用于下岗职工再就业,提供最优方案使就业的人数最大化。还可以用于确定高校招收研究生的方案等等。参考文献附 录附录 1:求权值矩阵的源代码:M1=5 3 4 3 5
19、29;3 5 4 5 2 29;4 4 5 4 4 28;3 5 4 4 2 28;2 4 3 5 5 30;3 4 3 4 4 28;5 4 4 2 3 30;4 5 4 3 2 30;5 2 3 1 4 28;2 4 5 5 5 28;4 5 3 2 5 32;5 4 3 5 4 29;4 5 2 1 3 28;5 5 4 4 2 30;5 4 4 3 3 28;2 1 4 5 5 30;3 5 4 5 2 28;5 4 5 3 4 31;3 2 5 5 5 29;95 4 3 2 1 27;M2=5 5 3 4 2;4 5 4 4 3;4 5 5 4 3;3 5 4 3 2;3 4 4
20、4 1;4 4 3 2 3;3 4 4 2 3;5 4 3 3 2;5 5 5 3 3;5 4 5 2 1;5 4 3 2 4;4 5 4 4 3;5 3 4 4 3;5 3 3 2 3;5 5 4 3 2;5 5 5 1 1;4 5 4 4 3;4 4 5 3 3;5 4 5 1 2;4 3 4 2 4;F1=5 3 3 2 5 28;4 5 4 5 2 25;3 4 5 1 5 26;5 4 4 3 2 27;4 2 3 1 3 25;5 3 4 3 5 26;2 3 4 5 4 30;5 4 5 1 3 31;5 5 5 3 1 26;4 3 2 4 4 27;5 4 4 3 4 28;
21、4 1 3 1 5 26;1 5 3 4 4 26;4 4 3 5 5 25;3 4 5 5 3 29;4 5 3 2 3 28;5 1 1 2 5 25;5 5 4 4 3 28;4 5 3 3 1 25;2 4 5 3 2 29;F2=4 5 4 5 2;3 4 4 5 4;4 5 3 4 3;105 5 4 4 5;5 4 3 4 4;4 5 4 4 3;3 4 5 5 3;4 5 4 5 4;3 4 4 4 5;4 4 5 5 3;3 4 5 4 3;5 5 4 4 1;3 5 4 3 3;4 5 5 4 2;4 5 4 4 4;4 5 4 4 5;5 5 2 5 3;3 5 4 5
22、3;4 4 4 5 5;4 4 5 4 4;for i=1:20;for j=1:20;sM(i,j)=0;sF(j,i)=0;cm=0;cf=0;if(M1(i,6)=F1(j,6)-2)for k=1:5;if F1(j,k)=M2(i,k)cm=cm+1;sM(i,j)=sM(i,j)+1+0.5*(F1(j,k)-M2(i,k);endif M1(i,k)=F2(j,k)cf=cf+1;sF(j,i)=sF(j,i)+1+0.5*(M1(i,k)-F2(j,k);endif (cm=2endendendendend附录 2:匈牙利算法:m=5;n=5;A=0 1 1 0 0 111 1
23、 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1; M(m,n)=0; for(i=1:m)for(j=1:n)if(A(i,j)M(i,j)=1;break;end;end %求初始匹配 M if(M(i,j)break;end;end %获得仅含一条边的初始匹配 M while(1) for(i=1:m)x(i)=0;end %将记录 X 中点的标号和标记* for(i=1:n)y(i)=0;end %将记录 Y 中点的标号和标记* for(i=1:m)pd=1; %寻找 X 中 M 的所有非饱和点 for(j=1:n)if(M(i,j)pd=0;end;end i
24、f(pd)x(i)=-n-1;end;end %将 X 中 M 的所有非饱和点都给以标号 0 和标记*, 程序中用 n+1 表示 0 标号, 标号为负数时表示标记* pd=0; while(1)xi=0; for(i=1:m)if(x(i)1)k=k-1; for(j=1:k)pdd=1; for(i=1:m)if(M(i,yy(j)x(i)=-yy(j);pdd=0;break;end;end %将 yj 在 M 中与之邻接的点 xk (即 xkyjM), 给以标号 j 和标记* if(pdd)break;end;end if(pdd)k=1;j=yy(j); %yj 不是 M 的饱和点 w
25、hile(1)P(k,2)=j;P(k,1)=y(j);j=abs(x(y(j); %任取 M 的一个非饱和点 yj, 逆向返回 if(j=n+1)break;end %找到 X 中标号为 0 的点时结束, 获得 M-增广路 P k=k+1;end for(i=1:k)if(M(P(i,1),P(i,2)M(P(i,1),P(i,2)=0; %将匹配 M 在增广路 P 中出现的12边去掉 else M(P(i,1),P(i,2)=1;end;end %将增广路 P 中没有在匹配 M 中出现的边加入到匹配 M 中 break;end;end;end if(pd)break;end;end %假如
26、 X 中所有有标号的点都已去掉了标记 *, 算法终止 M %显示最大匹配 M, 程序结束附录 3:KM 算法:n=4;A=4 5 5 1 2 2 4 6 4 2 3 3 5 0 2 1; for(i=1:n)L(i,1)=0;L(i,2)=0;end for(i=1:n)for(j=1:n)if(L(i,1)L(S(i),1)+L(j,2)-A(S(i),j)al=L(S(i),1)+L(j,2)-A(S(i),j);end;end;end for(i=1:jss)L(S(i),1)=L(S(i),1)-al;end %调整可行点标记 for(j=1:jst)L(T(j),2)=L(T(j),
27、2)+al;end %调整可行点标记 for(i=1:n)for(j=1:n) %生成子图 GL if(L(i,1)+L(j,2)=A(i,j)Gl(i,j)=1; else Gl(i,j)=0;end M(i,j)=0;k=0;end;end ii=0;jj=0; for(i=1:n)for(j=1:n)if(Gl(i,j)ii=i;jj=j;break;end;end if(ii)break;end;end %获得仅含 Gl 的一条边的初始匹配 M M(ii,jj)=1;break else %NL(S)T for(j=1:jsn)pd=1; %取 yNL(S)T for(k=1:jst)
28、if(T(k)=NlS(j)pd=0;break;end;end if(pd)jj=j;break;end;end pd=0; %判断 y 是否为 M 的饱和点 for(i=1:n)if(M(i,NlS(jj)pd=1;ii=i;break;end;end if(pd)jss=jss+1;S(jss)=ii;jst=jst+1;T(jst)=NlS(jj); %S=Sx, T=Ty else %获得 Gl 的一条 M-增广路, 调整匹配 M for(k=1:jst)M(S(k),T(k)=1;M(S(k+1),T(k)=0;end if(jst=0)k=0;end M(S(k+1),NlS(j
29、j)=1;break;end;end;end;end MaxZjpp=0; for(i=1:n)for(j=1:n)if(M(i,j)MaxZjpp=MaxZjpp+A(i,j);end;end;end M %显示最佳匹配 M MaxZjpp %显示最佳匹配 M 的权, 程序结束附录 5相关知识及名词解释14匹配: 是一个无向图, 是 的若干条边的集合,若 中任),(EVG)(GEMM意两条边都没有共同的结点,则称 是 的一个匹配。最大匹配:如果对 的匹配 都有 ,就说 是 的一个最大匹配。),(G即 的所有匹配中,包含边数最多的匹配即为最大匹配。),(完全匹配:二分图 的最大匹配 包含的边数不会超过 ,若 ,),(EYXGMX则称 是完全匹配。特别地,若果 ,则称 是完美匹配。正则二分图一定MY存在完美匹配。最佳匹配:权和最大或最小的完全匹配就叫做最佳匹配。