【正文】
p_position(kn,kd)p_position_min % 最小位置制約 p_position(kn,kd)=p_position_min。 end if p_position(kn,kd)p_position_max % 最大位置制約 p_position(kn,kd)=p_position_max。 end end end %適應函數(shù)值的比較,來記錄記憶個體最優(yōu),和找到全局最優(yōu) %來記錄記憶個體最優(yōu) % tic for kn=1:p_num temp=p_position(kn,:)。 f_temp1=f(temp(1):temp(1)+row21,temp(2):temp(2)+colu21)。 f_temp2=abs(f_temp1t)。 p_fit_new(kn)=sum(sum(f_temp2))/(row2*colu2)。 % p_fit_new(kn)計算當前位置的適應度函數(shù)值 if p_fit_new(kn)=p_local_value(kn) p_local_value(kn)=p_fit_new(kn)。 % 更新個體記憶最優(yōu)值 p_local_position(kn,:)=p_position(kn,:)。 % 更新個體記憶最優(yōu)位置 end end %找到全局最優(yōu)(通過上面找到的個體最優(yōu)) % tic p_global_value=p_local_value(1)。 % 先假定第一個粒子擁有目前全局最優(yōu)值 for kn=1:p_num % 尋找當前全局最優(yōu)粒子 if p_global_value=p_local_value(kn) p_global_value=p_local_value(kn)。 % 更新全局最優(yōu)值信息 p_global_position=p_position(kn,:)。 % 更新全局最優(yōu)粒子位置信息 end end % t3=toc %是否改變迭代標志的判斷 if k_iter=p_iter % 判斷迭代次數(shù)是否達到要求 flag_stop=1。 end k_iter=k_iter+1。 %更新迭代次數(shù)數(shù)據(jù)信息end%輸出最優(yōu)值的信息disp(39。*************************************************************39。)disp(39。函數(shù)的全局最優(yōu)位置坐標為:39。)p_global_positionimshow(f),title(39。原始基準圖像39。)。figure,imshow(t),title(39。實時圖像39。)。figure,imshow(f),title(39。PSO尋找匹配結果39。)hold onrectangle(39。Position39。,[p_global_position(1),p_global_position(2),row2,colu2],39。edgecolor39。,39。w39。,39。LineWidth39。,2)hold offtoc % 顯示程序總用時間disp(39。*************************************************************39。)