📄 t_f_g_a_s_w_gini.m
字号:
% =========================================================================
% Copyright (c)2006, 东南大学移动通信国家重点实验室
% All rights reserved.
%
% 文件名称:T_F_g_A_S_w_Gini.m
% function描述:Gini Index下的目标函数
% 当前版本: 1.0
% 作 者:梁浩
% 完成日期: 2007年6月
%==========================================================================
function [T F g A S] = T_F_g_A_S_w_Gini(w, N, aimFair, mean, sigma, lambda, precision)
ww = [1, w]; % ww是将w向量的第一个元素固定为1之后的结果
for i = 1:N
Th(i) = quadl(@IntegralGene, -20, 100, 10^(-6), [], N, ww, mean, sigma, i);
end
T = 0 - sum(Th);
F = Fairness_Gini(N, Th) - aimFair;
L = T + lambda .* F;
%%% 为求梯度,将w再各个方向上按照precision散开
for gradient_num = 1:length(w)
w_for_gradient_low(gradient_num,:) = w;
w_for_gradient_high(gradient_num,:) = w;
w_for_gradient_low(gradient_num,gradient_num) = w_for_gradient_low(gradient_num,gradient_num) - precision; % precision为梯度求解的精度,即横坐标间隔
w_for_gradient_high(gradient_num,gradient_num) = w_for_gradient_high(gradient_num,gradient_num) + precision;
end
%%% 求中心点两侧点处的取值
for gradient_num = 1:length(w)
% gradient_num
ww_for_gradient_low = [1, w_for_gradient_low(gradient_num,:)]; % ww是将w向量的第一个元素固定为1之后的结果
ww_for_gradient_high = [1, w_for_gradient_high(gradient_num,:)]; % ww是将w向量的第一个元素固定为1之后的结果
for i = 1:N
Th_low(i) = quadl(@IntegralGene, -20, 100, 10^(-6), [], N, ww_for_gradient_low, mean, sigma, i);
Th_high(i) = quadl(@IntegralGene, -20, 100, 10^(-6), [], N, ww_for_gradient_high, mean, sigma, i);
end
T_low = 0 - sum(Th_low);
F_low = Fairness_Gini(N, Th_low) - aimFair;
L_low = T_low + lambda .* F_low;
T_high = 0 - sum(Th_high);
F_high = Fairness_Gini(N, Th_high) - aimFair;
L_high = T_high + lambda .* F_high;
g_temp = gradient([T_low T T_high], precision);
A_temp = gradient([F_low F F_high], precision);
S_temp = gradient([L_low L L_high], precision);
g(gradient_num) = g_temp(2); % 取中心差分值
A(gradient_num) = A_temp(2); % 取中心差分值
S(gradient_num) = S_temp(2); % 取中心差分值
clear ww_for_gradient_low
clear ww_for_gradient_high
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -