-
大小: 12KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2022-05-02
- 語言: Matlab
- 標簽:
資源簡介
雜草優(yōu)化算法(IWO)是一種受雜草啟發(fā)而提出的、基于種群的數(shù)值優(yōu)化計算方法,其執(zhí)行過程是模擬雜草入侵過程的算法。在matlab環(huán)境中用m語言編程實現(xiàn)了IWO,并對其收斂性進行了仿真。

代碼片段和文件信息
%%
%**************************************************************************
%*******************注意,此程序以適應度值最大作為最優(yōu)***********************
%**************************************************************************
clc
clear?all
format?long
%%?參數(shù)初始化
X_min=-30;???????????????????????????????????????????????????%區(qū)間大小
X_max=30;
G_SIZE=5;????????????????????????????????????????????????????%初始雜草個數(shù)
P_SIZE=10;???????????????????????????????????????????????????%最大雜草個數(shù)
D=2;?????????????????????????????????????????????????????????%問題的維數(shù)
iter_max=350;????????????????????????????????????????????????%迭代次數(shù)
stepLength_ini=300;??????????????????????????????????????????%初始標準差
stepLength_final=0.05;???????????????????????????????????????%最終標準差
????????????????????????
seed_max=20;?????????????????????????????????????????????????%最大種子數(shù)
seed_min=0;??????????????????????????????????????????????????%最小種子數(shù)
n=3;?????????????????????????????????????????????????????????%非線性因子
F=@(x)objectFun(x);??????????????????????????????????????????%測試函數(shù)
test_now=1;??????????????????????????????????????????????????%當前獨立運行的次數(shù)
test_all=2;?????????????????????????????????????????????????%獨立運行的總次數(shù)
%%?第一次獨立運行
while?test_now ????%%?初始化
????weed_now=[];?????????????????????????????????????????????%雜草
????weed_next=[];????????????????????????????????????????????%種子
????for?i=1:G_SIZE
%?????????temp1=[];
%?????????temp1=chaos(X_minX_maxDrand(1));
%?????????weed_now(i:)=temp1(2:end);
????????weed_now(i:)=X_min+(X_max-X_min).*rand(1D);????????%D維空間中隨即分布的G_SIZE個可行解
????end
????weed_next=weed_now;
????iter?=1?;????????????????????????????????????????????????%迭代次數(shù)初始化為1
????
????%進化
????while?iter? ????????weed_now=[];
????????weed_now=weed_next;
????????N=size(weed_now1);
????????fitness=[];
????????%%?計算步長,即當前標準差
????????stepLength_now=(iter_max-iter)^n*(stepLength_ini-stepLength_final)/(iter_max)^n+stepLength_final;
????????%%?計算雜草的適應度值
????????for?i=1:N
????????????fitness(i)=-F(weed_now(i:));
????????end
????????BestFitness=max(fitness);
????????WorstFitness=min(fitness);
????????%%?計算種子個數(shù)并產(chǎn)生種子
????????weed_g_new=[];?????????????????????????????????????????%全部種子
????????for?i=1:N
????????????%計算各個雜草所產(chǎn)生的種子個數(shù)
????????????num=(seed_max-seed_min)*(fitness(i)-WorstFitness)/(BestFitness-WorstFitness)+seed_min;
????????????num=ceil(num);?????????????????????????????????????%向上取整
????????????if?num>0
????????????????weed_temp=[];
????????????????weed_change=[];
????????????????weed_temp=repmat(weed_now(i:)num1);?????????%產(chǎn)生num*1個weed_now(i:)矩陣維數(shù)為num*D
????????????????weed_change=normrnd(0stepLength_nownumD);???%產(chǎn)生均值為0,標準差為stepLength_now的正態(tài)矩陣,維數(shù)為num*D
????????????????weed_new=weed_temp+weed_change;????????????????%某一個雜草的后代種子
????????????????weed_g_new=[weed_g_new;weed_new];??????????????%加入到全部種子中
????????????end
????????end
????????weed_now=[weed_now;weed_g_new];
????????%%?計算種子的適應度值
????????N
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1039??2014-01-06?22:43??ob
?????文件???????4960??2014-01-07?12:09??iwo_basic.m
?????文件??????43669??2014-01-05?23:14??IWO_PD_Optim.mdl
-----------?---------??----------?-----??----
????????????????49668????????????????????3
- 上一篇:FRFT的matlab
- 下一篇:基于MATLAB對心電信號的處理與分析
評論
共有 條評論