%f(x)=11sin(6x)+7cons(5x),0<=x<=2*pi
%注意程式中num2gray函式和gray2num函式可以參照我上面的另外兩個博文中有**
%%初始化引數
l=16; %編碼為16位二進位制數
n=32; %初始種群規模
m=48; %m個中間體,運用運算元選擇出m/2對母體,進行交叉;對m個中間體進行變異
t=100; %進化代數
pc=0.8; %交叉概率
pm=0.03; %變異概率
%%將十進位制編碼成16位的二進位制,再將16位的二進位制轉成格雷碼
for i=1:1:n
x1(1,i)=rand()*2*pi;
x2(1,i)=uint16(x1(1,i)/(2*pi)*65535);
graycode(i,:)=num2gray(x2(1,i),l);
end%% 開始遺傳運算元操作
for t=1:1:t
y1=11*sin(6*x1)+7*cos(5*x1)
fori=1:1:m/2
[a,b]=min(y1) ;%找到y1中的最小值a,及其對應的編號b
graycodenew(i,:)=graycode(b,:);%將找到的最小數放到graycodenew中
graycodenew(i+m/2,:)=graycode(b,:);%與上面相同就可以有m/2對格雷碼可以作為母體
y1(1,b)=inf;%用來排除已找到的最小值
endfori=1:1:m/2
p=unidrnd(l);%生成乙個大於零小於l的數,用於下面進行交叉的位置
if rand()%將選定的染色體的點
遺傳演算法之函式優化
一 遺傳演算法簡介 遺傳演算法是模擬生物在自然環境下的遺傳和進化過程的一種自適應的全域性優化搜尋演算法,通過借助遺傳學的原理,經過自然選擇 遺傳 變異等作用機制進而篩選出具有適應性更高的個體 適者生存 遺傳演算法從20世紀七八十年代的誕生到現在主要集中的適用範圍為 np問題 指存在多項式演算法能夠解...
遺傳演算法解決函式優化問題
一 實驗目的 1.掌握遺傳演算法的基本原理和步驟。2.複習vb vc的基本概念 基本語法和程式設計方法,並熟練使用vb或vc編寫遺傳演算法程式。二 實驗內容 1.上機編寫程式,解決以下函式優化問題 2.除錯程式。3.根據實驗結果,撰寫實驗報告。三 實驗原理 遺傳演算法是一類隨機優化演算法,但它不是簡...
遺傳演算法優化例子
遺傳演算法的手工模擬計算示例 為更好地理解遺傳演算法的運算過程,下面用手工計算來簡單地模擬遺傳演算法的各個主要執行步驟。例 求下述二元函式的最大值 1 個體編碼 遺傳演算法的運算物件是表示個體的符號串,所以必須把變數 x1,x2 編碼為一種 符號串。本題中,用無符號二進位制整數來表示。因 x1,x2...