91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13KB
    文件類型: .m
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-18
  • 語言: Matlab
  • 標簽: NSGA算法??

資源簡介

多目標盤優化詳細代碼以及中文代碼注釋,非支配排序,擁擠的計算等

資源截圖

代碼片段和文件信息

function?nsga_2_optimization
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%此處可以更改
%更多機器學習內容請訪問omegaxyz.com
pop?=?200;?%種群數量
gen?=?500;?%迭代次數
M?=?2;?%目標函數數量
V?=?30;?%維度(決策變量的個數)
min_range?=?zeros(1?V);?%下界?生成1*30的個體向量?全為0
max_range?=?ones(1V);?%上界?生成1*30的個體向量?全為1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
chromosome?=?initialize_variables(pop?M?V?min_range?max_range);%初始化種群
chromosome?=?non_domination_sort_mod(chromosome?M?V);%對初始化種群進行非支配快速排序和擁擠度計算


for?i?=?1?:?gen
????pool?=?round(pop/2);%round()?四舍五入取整?交配池大小
????tour?=?2;%競標賽??參賽選手個數
????parent_chromosome?=?tournament_selection(chromosome?pool?tour);%競標賽選擇適合繁殖的父代
????mu?=?20;%交叉和變異算法的分布指數
????mum?=?20;
????offspring_chromosome?=?genetic_operator(parent_chromosomeM?V?mu?mum?min_range?max_range);%進行交叉變異產生子代?該代碼中使用模擬二進制交叉和多項式變異?采用實數編碼
????[main_pop~]?=?size(chromosome);%父代種群的大小
????[offspring_pop~]?=?size(offspring_chromosome);%子代種群的大小
????
????clear?temp
????intermediate_chromosome(1:main_pop:)?=?chromosome;
????intermediate_chromosome(main_pop?+?1?:?main_pop?+?offspring_pop1?:?M+V)?=?offspring_chromosome;%合并父代種群和子代種群
????intermediate_chromosome?=?non_domination_sort_mod(intermediate_chromosome?M?V);%對新的種群進行快速非支配排序
????chromosome?=?replace_chromosome(intermediate_chromosome?M?V?pop);%選擇合并種群中前N個優先的個體組成新種群
????if?~mod(i100)
????????clc;
????????fprintf(‘%d?generations?completed\n‘i);
????end
end


if?M?==?2
????plot(chromosome(:V?+?1)chromosome(:V?+?2)‘*‘);
????xlabel(‘f_1‘);?ylabel(‘f_2‘);
????title(‘Pareto?Optimal?Front‘);
elseif?M?==?3
????plot3(chromosome(:V?+?1)chromosome(:V?+?2)chromosome(:V?+?3)‘*‘);
????xlabel(‘f_1‘);?ylabel(‘f_2‘);?zlabel(‘f_3‘);
????title(‘Pareto?Optimal?Surface‘);
end
function?f?=?initialize_variables(N?M?V?min_range?max_range)%f是一個由種群個體組成的矩陣
min?=?min_range;
max?=?max_range;
K?=?M?+?V;%%K是數組的總元素個數。為了便于計算,決策變量和目標函數串在一起形成一個數組。??
%對于交叉和變異,利用目標變量對決策變量進行選擇
for?i?=?1?:?N
????for?j?=?1?:?V
????????f(ij)?=?min(j)?+?(max(j)?-?min(j))*rand(1);%f(i?j)表示的是種群中第i個個體中的第j個決策變量,
????????????????????????????????????????????????????%這行代碼為每個個體的所有決策變量在約束條件內隨機取值
????end
????f(iV?+?1:?K)?=?evaluate_objective(f(i:)?M?V);?%?M是目標函數數量?V是決策變量個數
????????????????????????????????????????????????????%為了簡化計算將對應的目標函數值儲存在染色體的V?+?1?到?K的位置。
end
%%?對初始種群開始排序?快速非支配排序
%?使用非支配排序對種群進行排序。該函數返回每個個體對應的排序值和擁擠距離,是一個兩列的矩陣。??
%?并將排序值和擁擠距離添加到染色體矩陣中?
function?f?=?non_domination_sort_mod(x?M?V)
[N?~]?=?size(x);%?N為矩陣x的行數,也是種群的數量
clear?m
front?=?1;
F(front).f?=?[];
individual?=?[];
?
for?i?=?1?:?N
????individual(i).n?=?0;%n是個體i被支配的個體數量
????individual(i).p?=?[];%p是被個體i支配的個體集合
????for?j?=?1?:?N
????????dom_less?=?0;
????????dom_equal?=?0;
????????dom_more?=?0;
????????for?k?=?1?:?M????????%判斷個體i和個體j的支配關系
????????????if?(x(iV?+?k)?????????????????dom_less?=?dom_less?+?1;
????????????elseif?(x(iV?+?k)?==?x(jV?+?k))
????????????????dom_equal?=?dom_equal?+?1;

評論

共有 條評論

相關資源