% 盖尔-沙普利算法,输入交换机与控制器的偏好列表,输出稳定匹配的交换机-控制器对
% 由于控制器可以接受多个交换机的匹配请求并完成配对;
% 是一个多对一的匹配过程;
% 相比于经典的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