Ⅰ 遺傳演算法是否可以通過硬體電路實現
雖然我不知道遺傳演算法的公式,但是我可以告訴你硬體電路可以完成非常復雜的公式運算,模擬電路中的集成運放建各種運算電路,數字電路也可以,用verilog描述自動生成復雜的電路圖。
Ⅱ 懸賞100分了啊!!!各位大大給我推薦本好書啊,有關遺傳演算法的matlab編程(電力系統方面)
個人意見:如果你搞清楚了遺傳演算法,那你所謂的電力系統方面就不是問題,因為僅僅是換了個系統方程,別的沒有什麼實質的改變。所以建議你先看看遺傳演算法的內容,嘗試編寫個很簡單的例子,然後套用到你電力系統方面就ok了。
Ⅲ 遺傳演算法都能幹啥啊
遺傳演算法的應用有很多,一般用於解決工程優化問題。像選址問題、排班問題、路線優化、參數優化、函數求極值等等
Ⅳ 求一個遺傳演算法進行電力系統優化調度 代碼
發一份自編的MATLAB遺傳演算法代碼,用簡單遺傳演算法(Simple Genetic Algorithm or Standard Genetic Algorithm ,SGA)求取函數最大值,初版編寫於7年前上學期間,當時是MATLAB 5.x,在演算法運行效率方面做了修改,主要是採用矩陣操作減少了循環。
遺傳演算法為群體優化演算法,也就是從多個初始解開始進行優化,每個解稱為一個染色體,各染色體之間通過競爭、合作、單獨變異,不斷進化。
優化時先要將實際問題轉換到遺傳空間,就是把實際問題的解用染色體表示,稱為編碼,反過程為解碼,因為優化後要進行評價,所以要返回問題空間,故要進行解碼。SGA採用二進制編碼,染色體就是二進制位串,每一位可稱為一個基因;解碼時應注意將染色體解碼到問題可行域內。
遺傳演算法模擬「適者生存,優勝劣汰」的進化機制,染色體適應生存環境的能力用適應度函數衡量。對於優化問題,適應度函數由目標函數變換而來。一般遺傳演算法求解最大值問題,如果是最小值問題,則通過取倒數或者加負號處理。SGA要求適應度函數>0,對於<0的問題,要通過加一個足夠大的正數來解決。這樣,適應度函數值大的染色體生存能力強。
遺傳演算法有三個進化運算元:選擇(復制)、交叉和變異。
SGA中,選擇採用輪盤賭方法,也就是將染色體分布在一個圓盤上,每個染色體占據一定的扇形區域,扇形區域的面積大小和染色體的適應度大小成正比。如果輪盤中心裝一個可以轉動的指針的話,旋轉指針,指針停下來時會指向某一個區域,則該區域對應的染色體被選中。顯然適應度高的染色體由於所佔的扇形區域大,因此被選中的幾率高,可能被選中多次,而適應度低的可能一次也選不中,從而被淘汰。演算法實現時採用隨機數方法,先將每個染色體的適應度除以所有染色體適應度的和,再累加,使他們根據適應度的大小分布於0-1之間,適應度大的占的區域大,然後隨機生成一個0-1之間的隨機數,隨機數落到哪個區域,對應的染色體就被選中。重復操作,選出群體規模規定數目的染色體。這個操作就是「優勝劣汰,適者生存」,但沒有產生新個體。
交叉模擬有性繁殖,由兩個染色體共同作用產生後代,SGA採用單點交叉。由於SGA為二進制編碼,所以染色體為二進制位串,隨機生成一個小於位串長度的隨機整數,交換兩個染色體該點後的那部分位串。參與交叉的染色體是輪盤賭選出來的個體,並且還要根據選擇概率來確定是否進行交叉(生成0-1之間隨機數,看隨機數是否小於規定的交叉概率),否則直接進入變異操作。這個操作是產生新個體的主要方法,不過基因都來自父輩個體。
變異採用位點變異,對於二進制位串,0變為1,1變為0就是變異。採用概率確定變異位,對每一位生成一個0-1之間的隨機數,看是否小於規定的變異概率,小於的變異,否則保持原狀。這個操作能夠使個體不同於父輩而具有自己獨立的特徵基因,主要用於跳出局部極值。
遺傳演算法認為生物由低級到高級進化,後代比前一代強,但實際操作中可能有退化現象,所以採用最佳個體保留法,也就是曾經出現的最好個體,一定要保證生存下來,使後代至少不差於前一代。大致有兩種類型,一種是把出現的最優個體單獨保存,最後輸出,不影響原來的進化過程;一種是將最優個體保存入子群,也進行選擇、交叉、變異,這樣能充分利用模式,但也可能導致過早收斂。
由於是基本遺傳演算法,所以優化能力一般,解決簡單問題尚可,高維、復雜問題就需要進行改進了。
下面為代碼。函數最大值為3905.9262,此時兩個參數均為-2.0480,有時會出現局部極值,此時一個參數為-2.0480,一個為2.0480。演算法中變異概率pm=0.05,交叉概率pc=0.8。如果不採用最優模式保留,結果會更豐富些,也就是演算法最後不一定收斂於極值點,當然局部收斂現象也會有所減少,但最終尋得的解不一定是本次執行中曾找到過的最好解。
(註:一位網名為mosquitee的朋友提醒我:原代碼的變異點位置有問題。檢驗後發現是將最初的循環實現方法改為矩陣實現方法時為了最優去掉mm的第N行所致,導致變異點位置發生了變化,現做了修改,修改部分加了顏色標記,非常感謝mosquitee,2010-4-22)
% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480
% Author: Wang Yonglin ([email protected])
clc;clear all;
format long;%設定數據顯示格式
%初始化參數
T=100;%模擬代數
N=80;% 群體規模
pm=0.05;pc=0.8;%交叉變異概率
umax=2.048;umin=-2.048;%參數取值范圍
L=10;%單個參數字串長度,總編碼長度2L
bval=round(rand(N,2*L));%初始種群
bestv=-inf;%最優適應度初值
%迭代開始
for ii=1:T
%解碼,計算適應度
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目標函數
xx(i,:)=[x1,x2];
end
func=obj;%目標函數轉換為適應度函數
p=func./sum(func);
q=cumsum(p);%累加
[fmax,indmax]=max(func);%求當代最佳個體
if fmax>=bestv
bestv=fmax;%到目前為止最優適應度值
bvalxx=bval(indmax,:);%到目前為止最佳位串
optxx=xx(indmax,:);%到目前為止最優參數
end
Bfit1(ii)=bestv; % 存儲每代的最優適應度
%%%%遺傳操作開始
%輪盤賭選擇
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%最優保留
bval=newbval;
%單點交叉
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%取得一個1到2L-1的整數
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%最優保留
%位點變異
mm=rand(N,2*L)<pm;%N行
mm(N,:)=zeros(1,2*L);%最後一行不變異,強制賦0
bval(mm)=1-bval(mm);
end
%輸出
plot(Bfit1);% 繪制最優適應度進化曲線
bestv %輸出最優適應度值
optxx %輸出最優參數
Ⅳ 什麼是遺傳演算法
遺傳演算法 網路名片
遺傳演算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法,它最初由美國Michigan大學J.Holland教授於1975年首先提出來的,並出版了頗有影響的專著《Adaptation in Natural and Artificial Systems》,GA這個名稱才逐漸為人所知,J.Holland教授所提出的GA通常為簡單遺傳演算法(SGA)。
遺傳演算法(Genetic Algorithm)是一類借鑒生物界的進化規律(適者生存,優勝劣汰遺傳機制)演化而來的隨機化搜索方法。它是由美國的J.Holland教授1975年首先提出,其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;採用概率化的尋優方法,能自動獲取和指導優化的搜索空間,自適應地調整搜索方向,不需要確定的規則。遺傳演算法的這些性質,已被人們廣泛地應用於組合優化、機器學習、信號處理、自適應控制和人工生命等領域。它是現代有關智能計算中的關鍵技術。 對於一個求函數最大值的優化問題(求函數最小值也類同),一般可以描述為下列數學規劃模型:遺傳演算法 式中為決策變數,為目標函數式,式2-2、2-3為約束條件,U是基本空間,R是U的子集。滿足約束條件的解X稱為可行解,集合R表示所有滿足約束條件的解所組成的集合,稱為可行解集合。 遺傳演算法的基本運算過程如下: a)初始化:設置進化代數計數器t=0,設置最大進化代數T,隨機生成M個個體作為初始群體P(0)。 b)個體評價:計算群體P(t)中各個個體的適應度。 c)選擇運算:將選擇運算元作用於群體。選擇的目的是把優化的個體直接遺傳到下一代或通過配對交叉產生新的個體再遺傳到下一代。選擇操作是建立在群體中個體的適應度評估基礎上的。 d)交叉運算;將交叉運算元作用於群體。所謂交叉是指把兩個父代個體的部分結構加以替換重組而生成新個體的操作。遺傳演算法中起核心作用的就是交叉運算元。 e)變異運算:將變異運算元作用於群體。即是對群體中的個體串的某些基因座上的基因值作變動。 群體P(t)經過選擇、交叉、變異運算之後得到下一代群體P(t 1)。 f)終止條件判斷:若tT,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算。
[編輯本段]遺傳演算法定義
遺傳演算法是從代表問題可能潛在的解集的一個種群(population)開始的,而一個種群則由經過基因(gene)編碼的一定數目的個體(indivial)組成。每個個體實際上是染色體(chromosome)帶有特徵的實體。染色體作為遺傳物質的主要載體,即多個基因的集合,其內部表現(即基因型)是某種基因組合,它決定了個體的形狀的外部表現,如黑頭發的特徵是由染色體中控制這一特徵的某種基因組合決定的。因此,在一開始需要實現從表現型到基因型的映射即編碼工作。由於仿照基因編碼的工作很復雜,我們往往進行簡化,如二進制編碼,初代種群產生之後,按照適者生存和優勝劣汰的原理,逐代(generation)演化產生出越來越好的近似解,在每一代,根據問題域中個體的適應度(fitness)大小選擇(selection)個體,並藉助於自然遺傳學的遺傳運算元(genetic operators)進行組合交叉(crossover)和變異(mutation),產生出代表新的解集的種群。這個過程將導致種群像自然進化一樣的後生代種群比前代更加適應於環境,末代種群中的最優個體經過解碼(decoding),可以作為問題近似最優解。
Ⅵ 電力系統中關於遺傳演算法的應用
可以直接將X設為一個母體,每個母體由X1,X2,X3,X4組成。每一組解為一個母體。
種群大小就是你取的母體(X)的個數。
約束條件在函數中可以用if等語句實現。
我也只是用遺傳演算法做了一下畢業設計,沒有深究,夠用就行了
歡迎LL單Q我討論.....
Ⅶ 遺傳演算法實踐當中真的能用嗎
找注冊信息不適合用遺傳演算法,我覺得憑日常經驗寫一個函數判斷信息的相似程度就可以了。判斷相似可以用神經網路演算法,但不能用遺傳
現實中01背包問題和旅行商問題最好的演算法就是遺傳演算法,一些集成電路內部的布線就是用遺傳演算法設計的
Ⅷ 遺傳演算法婚姻法
遺傳演算法的應用領域:
計算機自動設計 (N700列車「氣動雙翼」的獨特空氣動力造型車鼻;是遺傳演算法運算結果)
工業工程與運作管理
物流系統設計
生產調度
製造系統控制
系統優化設計
汽車設計,包括材料選擇、多目標汽車組件設計、減輕重量等。
機電系統設計。
分布計算機網路的拓撲結構。
電路設計,此類用途的遺傳演算法叫做進化電路。
電子游戲設計,例如計算平衡解決方案。
機器智能設計和機器人學習。
模糊控制系統的訓練。
移動通訊優化結構。
時間表安排,例如為一個大學安排不沖突的課程時間表。
旅行推銷員問題。
神經網路的訓練,也叫做神經進化。
有什麼不懂的可以繼續提問。
Ⅸ 遺傳演算法優化電力系統無功問題
GA程序流程:
0、初始化GA參數:種群數N、控制變數數M、選擇概率、交叉概率、變異概率;
1、設置控制變數初值, i=1;
2、計算第i個粒子的潮流;
3、根據潮流結果計算網損,計算第i個粒子的目標函數及適應度函數並保存,i++;
4、i是否大於M,若否,則轉步驟2,若是,則轉下一步;
5、得到最優粒子及其適應度,判斷適應度變化是否小於某閥值,若小,則轉步驟8,否則繼續下一步;
6、選擇操作;交叉操作;變異操作;
7、i=1,轉步驟2;
8、輸出最優粒子及其適應度。