MATLAB 盖尔-沙普利算法(多对一稳定匹配)

该博客介绍了如何在MATLAB中使用盖尔-沙普利算法进行多对一稳定匹配,主要针对交换机与控制器的偏好列表。在匹配过程中,考虑了控制器可以接受多个交换机的请求,并处理了控制器的容量限制,确保负载量不超过控制器的容量上限。算法通过不断迭代和响应,最终得出稳定匹配的交换机-控制器对。
摘要由CSDN通过智能技术生成

% 盖尔-沙普利算法,输入交换机与控制器的偏好列表,输出稳定匹配的交换机-控制器对
% 由于控制器可以接受多个交换机的匹配请求并完成配对;
% 是一个多对一的匹配过程;
% 相比于经典的G-S算法有不同的地方
function f = Gale_Shapley( GAMMA_switch, I, GAMMA_controller, J, lammd_expand )

global x_initial
global alpha
global beta
global lammd_expand

% I 交换机的偏好列表,控制器编号,行降序排列
% J 控制器的偏好列表,交换机编号,列降序排列
accept_num = 6;         % 女生最大接受数量
Male = I;
Female = J';
[ M_num, F_num ] = size( I );


x_stable = zeros( M_num, F_num );
x_match = zeros( M_num, F_num );

M_origin = Male;
F_origin = Female;
%% define couple list
M_sg = ones( M_num, 1 );            % 交换机的分配标记
M_cp = zeros(M_num,1);           
F_cp = zeros(F_num,1);
Mlove_rank = zeros(M_num,1);
Flove_rank = zeros(F_num,1);
Mlove_score = zeros(1);
Flove_score = zeros(1);
F_mark = zeros(F_num,M_num);       % 提议表,列号表示提议接受方,行号表示接受方对提议的评级


M_favor_rank = F_num;
F_favor_rank = M_num;


times = 0;
while sum(M_sg)>0
    % M: courtship
    for i=1:M_num                               % 对于每个男生
        if M_sg(i)==1                        

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值