多目標演算法
⑴ 多目標優化演算法有哪些
主要內容包括:多目標進化演算法、多目標粒子群演算法、其他多目標智能優化演算法、人工神經網路優化、交通與物流系統優化、多目標生產調度和電力系統優化及其他。
⑵ 多目標遺傳演算法 目標函數的權重問題
推薦演算法中幾種常用的多目標變單一目標的方法:
(1)目標加權法:F(x)=∑λf(x),∑λ=1。λ可固定或隨機或自適應,加權求和之前一般需要進行無量綱化處理
(2)乘除法:min F(x)=(minf1×minf2×...)/(maxfn×maxfn+1×...).
(3)主要目標法/約束法:次要目標構成對主要目標的約束條件, 缺點:需要人為設定次要目標的約束參數
謝採納~
⑶ 多目標優化演算法的多目標是什麼意思
多目標優化的本質在於,大多數情況下,某目標的改善可能引起其他目標性能的降低,同時使多個目標均達到最優是不可能的,只能在各目標之間進行協調權衡和折中處理,使所有目標函數盡可能達到最優,而且問題的最優解由數量眾多,甚至無窮大的Pareto最優解組成。
⑷ 請推薦幾本多目標優化演算法的書
《基於微粒群演算法的堆石壩壩料參數反演分析》 ·《基於演化演算法的多目標優化方法及其應用研究》 ·《粒子群優化演算法的理論分析與應用研究》 ·《多目標遺傳演算法及其在發動機控制系統設計中的應用》
⑸ 求大神給出基於粒子群演算法的多目標搜索演算法的完整程序。。。從目標函數到最後。。
%% 該函數演示多目標perota優化問題
%清空環境
clc
clear
load data
%% 初始參數
objnum=size(P,1); %類中物品個數
weight=92; %總重量限制
%初始化程序
Dim=5; %粒子維數
xSize=50; %種群個數
MaxIt=200; %迭代次數
c1=0.8; %演算法參數
c2=0.8; %演算法參數
wmax=1.2; %慣性因子
wmin=0.1; %慣性因子
x=unidrnd(4,xSize,Dim); %粒子初始化
v=zeros(xSize,Dim); %速度初始化
xbest=x; %個體最佳值
gbest=x(1,:); %粒子群最佳位置
% 粒子適應度值
px=zeros(1,xSize); %粒子價值目標
rx=zeros(1,xSize); %粒子體積目標
cx=zeros(1,xSize); %重量約束
% 最優值初始化
pxbest=zeros(1,xSize); %粒子最優價值目標
rxbest=zeros(1,xSize); %粒子最優體積目標
cxbest=zeros(1,xSize); %記錄重量,以求約束
% 上一次的值
pxPrior=zeros(1,xSize);%粒子價值目標
rxPrior=zeros(1,xSize);%粒子體積目標
cxPrior=zeros(1,xSize);%記錄重量,以求約束
%計算初始目標向量
for i=1:xSize
for j=1:Dim %控制類別
px(i) = px(i)+P(x(i,j),j); %粒子價值
rx(i) = rx(i)+R(x(i,j),j); %粒子體積
cx(i) = cx(i)+C(x(i,j),j); %粒子重量
end
end
% 粒子最優位置
pxbest=px;rxbest=rx;cxbest=cx;
%% 初始篩選非劣解
flj=[];
fljx=[];
fljNum=0;
%兩個實數相等精度
tol=1e-7;
for i=1:xSize
flag=0; %支配標志
for j=1:xSize
if j~=i
if ((px(i)<px(j)) && (rx(i)>rx(j))) ||((abs(px(i)-px(j))<tol)...
&& (rx(i)>rx(j)))||((px(i)<px(j)) && (abs(rx(i)-rx(j))<tol)) || (cx(i)>weight)
flag=1;
break;
end
end
end
%判斷有無被支配
if flag==0
fljNum=fljNum+1;
% 記錄非劣解
flj(fljNum,1)=px(i);flj(fljNum,2)=rx(i);flj(fljNum,3)=cx(i);
% 非劣解位置
fljx(fljNum,:)=x(i,:);
end
end
%% 循環迭代
for iter=1:MaxIt
% 權值更新
w=wmax-(wmax-wmin)*iter/MaxIt;
%從非劣解中選擇粒子作為全局最優解
s=size(fljx,1);
index=randi(s,1,1);
gbest=fljx(index,:);
%% 群體更新
for i=1:xSize
%速度更新
v(i,:)=w*v(i,:)+c1*rand(1,1)*(xbest(i,:)-x(i,:))+c2*rand(1,1)*(gbest-x(i,:));
%位置更新
x(i,:)=x(i,:)+v(i,:);
x(i,:) = rem(x(i,:),objnum)/double(objnum);
index1=find(x(i,:)<=0);
if ~isempty(index1)
x(i,index1)=rand(size(index1));
end
x(i,:)=ceil(4*x(i,:));
end
%% 計算個體適應度
pxPrior(:)=0;
rxPrior(:)=0;
cxPrior(:)=0;
for i=1:xSize
for j=1:Dim %控制類別
pxPrior(i) = pxPrior(i)+P(x(i,j),j); %計算粒子i 價值
rxPrior(i) = rxPrior(i)+R(x(i,j),j); %計算粒子i 體積
cxPrior(i) = cxPrior(i)+C(x(i,j),j); %計算粒子i 重量
end
end
%% 更新粒子歷史最佳
for i=1:xSize
%現在的支配原有的,替代原有的
if ((px(i)<pxPrior(i)) && (rx(i)>rxPrior(i))) ||((abs(px(i)-pxPrior(i))<tol)...
&& (rx(i)>rxPrior(i)))||((px(i)<pxPrior(i)) && (abs(rx(i)-rxPrior(i))<tol)) || (cx(i)>weight)
xbest(i,:)=x(i,:);%沒有記錄目標值
pxbest(i)=pxPrior(i);rxbest(i)=rxPrior(i);cxbest(i)=cxPrior(i);
end
%彼此不受支配,隨機決定
if ~( ((px(i)<pxPrior(i)) && (rx(i)>rxPrior(i))) ||((abs(px(i)-pxPrior(i))<tol)...
&& (rx(i)>rxPrior(i)))||((px(i)<pxPrior(i)) && (abs(rx(i)-rxPrior(i))<tol)) || (cx(i)>weight) )...
&& ~( ((pxPrior(i)<px(i)) && (rxPrior(i)>rx(i))) ||((abs(pxPrior(i)-px(i))<tol) && (rxPrior(i)>rx(i)))...
||((pxPrior(i)<px(i)) && (abs(rxPrior(i)-rx(i))<tol)) || (cxPrior(i)>weight) )
if rand(1,1)<0.5
xbest(i,:)=x(i,:);
pxbest(i)=pxPrior(i);rxbest(i)=rxPrior(i);cxbest(i)=cxPrior(i);
end
end
end
%% 更新非劣解集合
px=pxPrior;
rx=rxPrior;
cx=cxPrior;
%更新升級非劣解集合
s=size(flj,1);%目前非劣解集合中元素個數
%先將非劣解集合和xbest合並
pppx=zeros(1,s+xSize);
rrrx=zeros(1,s+xSize);
cccx=zeros(1,s+xSize);
pppx(1:xSize)=pxbest;pppx(xSize+1:end)=flj(:,1)';
rrrx(1:xSize)=rxbest;rrrx(xSize+1:end)=flj(:,2)';
cccx(1:xSize)=cxbest;cccx(xSize+1:end)=flj(:,3)';
xxbest=zeros(s+xSize,Dim);
xxbest(1:xSize,:)=xbest;
xxbest(xSize+1:end,:)=fljx;
%篩選非劣解
flj=[];
fljx=[];
k=0;
tol=1e-7;
for i=1:xSize+s
flag=0;%沒有被支配
%判斷該點是否非劣
for j=1:xSize+s
if j~=i
if ((pppx(i)<pppx(j)) && (rrrx(i)>rrrx(j))) ||((abs(pppx(i)-pppx(j))<tol) ...
&& (rrrx(i)>rrrx(j)))||((pppx(i)<pppx(j)) && (abs(rrrx(i)-rrrx(j))<tol)) ...
|| (cccx(i)>weight) %有一次被支配
flag=1;
break;
end
end
end
%判斷有無被支配
if flag==0
k=k+1;
flj(k,1)=pppx(i);flj(k,2)=rrrx(i);flj(k,3)=cccx(i);%記錄非劣解
fljx(k,:)=xxbest(i,:);%非劣解位置
end
end
%去掉重復粒子
repflag=0; %重復標志
k=1; %不同非劣解粒子數
flj2=[]; %存儲不同非劣解
fljx2=[]; %存儲不同非劣解粒子位置
flj2(k,:)=flj(1,:);
fljx2(k,:)=fljx(1,:);
for j=2:size(flj,1)
repflag=0; %重復標志
for i=1:size(flj2,1)
result=(fljx(j,:)==fljx2(i,:));
if length(find(result==1))==Dim
repflag=1;%有重復
end
end
%粒子不同,存儲
if repflag==0
k=k+1;
flj2(k,:)=flj(j,:);
fljx2(k,:)=fljx(j,:);
end
end
%非劣解更新
flj=flj2;
fljx=fljx2;
end
%繪制非劣解分布
plot(flj(:,1),flj(:,2),'o')
xlabel('P')
ylabel('R')
title('最終非劣解在目標空間分布')
disp('非劣解flj中三列依次為P,R,C')
⑹ 多目標差分進化演算法
差分進化演算法(Differential Evolution, DE)是一種基於群體差異的啟發式隨機搜索演算法,該演算法是由R.Storn和K.Price為求解Chebyshev多項式而提出的。是一種用於最佳化問題的後設啟發式演算法。本質上說,它是一種基於實數編碼的具有保優思想的貪婪遺傳演算法。
將問題的求解表示成"染色體"的適者生存過程,通過"染色體"群的一代代不斷進化,包括復制、交叉和變異等操作,最終收斂到"最適應環境"的個體,從而求得問題的最優解或滿意解。
差分進化演算法類似遺傳演算法,包含變異,交叉操作,淘汰機制,而差分進化演算法與遺傳演算法不同之處,在於變異的部分是隨選兩個解成員變數的差異,經過伸縮後加入當前解成員的變數上,因此差分進化演算法無須使用概率分布產生下一代解成員。最優化方法分為傳統優化方法和啟發式優化方法兩大類。傳統的優化方法大多數都是利用目標函數的導數求解;而啟發式優化方法以仿生演算法為主,通過啟發式搜索策略實現求解優化。啟發式搜索演算法不要求目標函數連續、可微等信息,具有較好的全局尋優能力,成為最優化領域的研究熱點。
在人工智慧領域中,演化演算法是演化計算的一個分支。它是一種基於群體的元啟發式優化演算法,具有自適應、自搜索、自組織和隱並行性等特點。近年來,很多學者將演化演算法應用到優化領域中,取得了很大的成功,並已引起了人們的廣泛關注。越來越多的研究者加入到演化優化的研究之中,並對演化演算法作了許多改進,使其更適合各種優化問題。目前,演化演算法已廣泛應用於求解無約束函數優化、約束函數優化、組合優化、多目標優化等多種優化問題中。
⑺ 什麼是多目標遺傳演算法
http://www.easyworm.com/chinese/document/Chapter4.htm
比較復雜,解釋起來不知是否可行,你先去這看看吧。
大學圖書館里這些書一找一大堆,可以去翻翻
⑻ matlab程序Pareto 遺傳多目標演算法
您好,GA不論是在應用、演算法設計上,還是在基礎理論上,均取得了長足的發展,應用也非常廣泛.本文通過對基本遺傳演算法的研究,以及對其在多目標優化問題上的實現,在遺傳演算法領域進行探討,並通過程序來驗證.在多目標優化問題的研究中,所採用的一些方法在一些算例中獲得了比較好的Pareto解集.
遺傳演算法作為求解全局優化問題的有力工具之一,應用十分廣泛,目前主要應用在以下幾個領域:
(1)基於遺傳演算法的機器學習(GeneticBaseMachineLearning).這一新的學習機制給解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。
(2)遺傳演算法與其他計算智能方法的相互滲透和結合.
(3)並行處理的遺傳演算法的研究十分活躍.這一研究不僅是對遺傳演算法本身的發展,而且對新一代智能計算機體系結構的研究都是十分重要的.(4)遺傳演算法在數據挖掘(DataMining)領域中的應用。
⑼ 多目標優化演算法 是不是只有perato
多目標優化智能演算法太多,但設定的條件下,都是實現多目標優化