what does line9 ( Newsol.x=p​op(S).x.*(​1-Cr)+sol.​x.*Cr; ) do?

1 ビュー (過去 30 日間)
hossein moradi
hossein moradi 2016 年 10 月 25 日
編集済み: Ganesh Hegade 2016 年 10 月 25 日
1- function sol=CrossOver(Kw_Kgb,gpop,sol,nvar,pop,data) 2- Newsol=sol; 3- Npop=length(pop); 4- C_rate = 0.8 + 0.2*(sol.fit-gpop.fit)/Kw_Kgb; 5- Cr = rand(1,nvar) < C_rate ; 6- % Random selection of Krill No. for Crossover 7- S = randi([1 Npop]); 8- % Crossover scheme 9- Newsol.x=pop(S).x.*(1-Cr)+sol.x.*Cr; 10- Newsol=fitness(Newsol,data);
11- if Newsol.fit<sol.fit 12- sol=Newsol; 13- end
14- end

回答 (1 件)

Ganesh Hegade
Ganesh Hegade 2016 年 10 月 25 日
編集済み: Ganesh Hegade 2016 年 10 月 25 日
Hi,
Line number 9 just assigns new vales to Newsol.x. It means the output sol.x will have a new value (Newsol.x)
function sol=CrossOver(Kw_Kgb,gpop,sol,nvar,pop,data)
Newsol=sol;
Npop=length(pop);
C_rate = 0.8 + 0.2*(sol.fit-gpop.fit)/Kw_Kgb;
Cr = rand(1,nvar) < C_rate ;
% Random selection of Krill No. for Crossover
S = randi([1 Npop]);
% Crossover scheme
Newsol.x=pop(S).x.*(1-Cr)+sol.x.*Cr;
Newsol=fitness(Newsol,data);
if Newsol.fit<sol.fit
sol=Newsol;
end
end

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by