求matlab的遺傳演算法程式,求乙個matlab的遺傳演算法程式

時間 2022-03-23 09:49:42

1樓:幻世萌

先看這個結構裡面的這些函式都是幹什麼用的,prob,概率。[1:keep],這裡應該能大概看出來keep是整數,1:

keep 等價於1:1:keep,比如1:

10,就是1,2,3,4,5,6,7,8,9,10。步長為1,從1到keep.

右上角的',這個符號,表示轉置,比如1:10,是乙個1行10列的矩陣,通過轉置變成10行一列。

其中,sum([1:keep]),表示對這個矩陣(從1到keep求和),但是這個語句 prob=flipud([1:keep]'/sum([1:keep]));

裡面總覺得缺少了乙個.。prob=flipud([1:keep]'.

/sum([1:keep])); 這樣看來應該才能執行,我沒嘗試,在command window裡面直接做是可以的,但是在指令碼檔案裡面做,可能會報錯。這個和矩陣運算有關,暫且放在這裡。

然後到外部,這樣我們知道了在第一行flipud()函式體裡面,實際上是在用1到keep的每乙個數,除以1到keep的和值,得到乙個長度為keep的矩陣。值得注意的是,這個矩陣的和值為1,在下面會用到這一點。

然後flipud()函式的作用,是把矩陣倒置,比如[1,3,4,5],使用flipud()之後變成[5,4,3,1]。注意,這個操作和sort()函式不同,這個只是把以前的順序倒置,並不排序。

從這裡大概可以看出來,其實這個keep的值,等於chromosomes,染色體數量。這樣,對於不同的染色體,配對概率就不一樣了。從這裡可以看出來,染色體配對概率應該是第一條最高,然後依次遞減。

然後計算或然率,cumsum(),進行累加求和,比如matlab中給出的例子,我們用[1,2 ,3] 也可以寫作1:3,來說,cumsum之後的結果是[1, 3, 6],也就是從第乙個開始加和,一直加到這一項。這一點,非常類似高斯函式積分的感覺。

用來計算概率cumulative distribution。

然後odd變數,把0加在了cumsum結果的前面,比如剛剛的例子[0 cumsum([1, 2, 3])],就變成了[0, 1, 3,6]。

注意這個地方他又轉置了一次,因為在第一行計算prob的時候,他把乙個行向量,轉換成了列向量,然後現在要把0加在頭上,所以在進行cumsun()運算的時候,又把結果從列向量轉換成了行向量。

僅從這兩行**裡面,就大概只能看出這個意思了。

不過簡單一說,現在看不出來這個遺傳演算法的核心是什麼樣的,一般的神經網路裡面只有連鎖交換定律的應用,一般沒有基因分離定律的應用。看這個樣子,這是分離出來然後自由配對的做法,應該是比較高階的東西吧。

2樓:ccch博士

matlab有自帶的遺傳演算法工具箱和程式。工具箱你可以到matlab介面去找。函式是ga,你在matlab裡help ga就能看到詳細資訊了。

遺傳演算法具體應用

3樓:牛得天下

應用很多了,數值優化、組合優化、機器學習、智慧型控制、人工生命、影象處理、模式識別版等領域都有應

權用。最簡單的應用就是函式優化問題了,即求某一較複雜的函式的極值。相關matlab**或c**你想要的話,我可以發給你,留下郵箱。

4樓:匿名使用者

應用很多,基本上可以用在所有求最優解的問題中。

求大神給編個matlab遺傳演算法程式!!!!!!!!很急!!!!!!! 10

5樓:匿名使用者

不好意思,這個可能是題目沒太看明白。

不過看起來,我覺得好像目標函式z的最小值就是x1和x2都取最小值的時候吧

求matlab編遺傳演算法的程式?

6樓:冰魄

figure(1);

fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);

nind=40;

maxgen=25;

preci=20;

ggap=0.9;

trace=zeros(2,maxgen);

fieldd=[20;-1;2;1;0;1;1];

chrom=crtbp(nind,preci);

gen=0;

variable=bs2rv(chrom,fieldd);

objv=variable.*sin(10*pi*variable)+2.0;

while gen

fitnv=ranking(-objv);

selch=select('sus',chrom,fitnv,ggap);

selch=recombin('xovsp',selch,0.7)

selch=mut(selch);

variable=bs2rv(selch,fieldd);

objvsel=variable.*sin(10*pi*variable)+2.0;

[chrom,objv]=reins(chrom,selch,1,1,objv,objvsel);

gen=gen+1;

[y,i]=max(objv),hold on;

plot(variable(i),y,'bo');

trace(1,gen)=max(objv);

trace(2,gen)=sum(objv)/length(objv);

endvariable=bs2rv(chrom,fieldd);

hold on;

grid;

plot(variable',objv','b*');

figure(2);

plot(trace(1,:)');

hold on;

plot(trace(2,:)','-.');

grid;

看看這個能用得上麼

i never think of the future. it comes soon enough.

7樓:匿名使用者

matlab裡使用遺傳演算法只有兩個函式,分別是gaoptimset和ga函式,在命令列輸入 doc gaoptimset或者doc ga可以檢視他們的用法。

matlab編遺傳演算法源程式

用matlab解方程,matlab求方程的解

syms w kc real tjw 7.8 kc 7.8 kc 0.11 w 2 j w solve abs tjw sqrt sym 1 2 w ans 2 11 1250 2145 kc 5 214500 kc 62500 368082 abs kc 2 1 2 1 2 2 11 1250 2...

怎麼用matlab算含有未知係數的方程 即方程中未知量多於

用 a,b,c,d solve eeq1,eq2,eq3,eq4,a,b,c,d 結果 a 15000000000000000000000000000000e 1 m m 2 40000 98 m 100 m 2 1584 1 2 15000000000000000000000000000000e ...

matlab中求中心差分的方法,matlab中diff函式求差分什麼意思

第8章 matlab數值積分與微分 8.1 數值積分 8.2 數值微分 8.1 數值積分 8.1.1 數值積分基本原理 求解定積分的數值方法多種多樣,如簡單的梯形法 辛普生 simpson 法 牛頓 柯特斯 newton cotes 法等都是經常採用的方法。它們的基本思想都是將整個積分區間 a,b ...

求用維納濾波方法處理雜訊的matlab程式必須

假設乙個點目標在x,y平面上繞單位圓做圓周運動,由於外界干擾,其運動軌跡發生了偏移。其中,x方向的干擾為均值為0,方差為0.05的高斯雜訊 y方向干擾為均值為0,方差為0.06的高斯雜訊。1 試設計一fir維納濾波器,確定最佳傳遞函式,並用該濾波器處理觀測訊號,得到其最佳估計。注 自行設定誤差判定閾...

如何用MATLAB求兩條曲線的交點

description example s solve eqn,var solves the equation eqn for the variablevar.if you do not specify var,the symvar function determines the variable ...