導航:首頁 > 源碼編譯 > 遺傳演算法圖像為什麼是階梯

遺傳演算法圖像為什麼是階梯

發布時間:2022-08-19 19:32:15

1. 遺傳演算法路徑規劃是什麼原理

遺傳演算法有相當大的引用。遺傳演算法在游戲中應用的現狀在遺傳編碼時, 一般將瓦片的坐標作為基因進行實數編碼, 染色體的第一個基因為起點坐標, 最後一個基因為終點坐標, 中間的基因為路徑經過的每一個瓦片的坐標。在生成染色體時, 由起點出發, 隨機選擇當前結點的鄰居節點中的可通過節點, 將其坐標加入染色體, 依此循環, 直到找到目標點為止, 生成了一條染色體。重復上述操作, 直到達到指定的種群規模。遺傳演算法的優點:1、遺傳演算法是以決策變數的編碼作為運算對象,可以直接對集合、序列、矩陣、樹、圖等結構對象進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。另一方面也使得遺傳演算法具有廣泛的應用領域,如函數優化、生產調度、自動控制、圖像處理、機器學習、數據挖掘等領域。2、遺傳演算法直接以目標函數值作為搜索信息。它僅僅使用適應度函數值來度量個體的優良程度,不涉及目標函數值求導求微分的過程。因為在現實中很多目標函數是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。3、遺傳演算法具有群體搜索的特性。它的搜索過程是從一個具有多個個體的初始群體P(0)開始的,一方面可以有效地避免搜索一些不必搜索的點。另一方面由於傳統的單點搜索方法在對多峰分布的搜索空間進行搜索時很容易陷入局部某個單峰的極值點,而遺傳演算法的群體搜索特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全局搜索性。4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜索更為靈活,參數對其搜索效果的影響也盡可能的小。5、遺傳演算法具有可擴展性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。遺傳演算法的缺點:遺傳演算法在進行編碼時容易出現不規范不準確的問題。

2. 為什麼遺傳演算法的親和度曲線是折線呢,不是平滑曲線,一段一段的

應該是適應度曲線吧。
本質上是拆線,因為是離散的點組成(每個個體是離散的)。
一段一段是因為(MATLAB)在繪圖時把它們連成了直線

3. C語言輸出一組數,為什麼成階梯狀分布

看輸出,你是把%12ld的字母"l"打成數字"1"了,導致每個數字輸出佔121個位置,到邊緣後換行
前20項不超過10000,用%5d就夠了,把printf那行改成
printf("%5d%5d",a,b);

4. 遺傳演算法作圖像分割時的最佳閾值為什麼總在變化

在此提供兩種方法,一,最大閾值分割(大律法):I=imread('test.jpg');subplot(1,3,1);imshow(I);title('原圖');I1=rgb2gray(I);subplot(1,3,2);imhist(I1);title('直方圖');level=graythresh(I);g=im2bw(I,level);%最佳閾值levelsubplot(1,3,3);imshow(g);title('閾值分割');%在Command窗口輸出灰度閾值disp(strcat('graythresh計算灰度閾值:',num2str(uint8(level*255))))第二種:迭代求閾值I=imread('C:test.jpg');Zmax=max(max(I));Zmin=min(min(I));TK=(Zmax+Zmin)/2;%初始閾值flag=1;[m,n]=size(I);while(flag)fg=0;bg=0;fgsum=0;bgsum=0;fori=1:mforj=1:ntmp=I(i,j);if(tmp>=TK)fg=fg+1;fgsum=fgsum+double(tmp);elsebg=bg+1;bgsum=bgsum+double(tmp);endenden1=fgsum/fg;u2=bgsum/bg;TKTmp=uint8((u1+u2)/2);if(TKTmp==TK)flag=0;elseTK=TKTmp;endenddisp(strcat('迭代後的閾值:',num2str(TK)));newI=im2bw(I,double(TK)/255);subplot(1,2,1);imshow(I);title('原圖')subplot(1,2,2);imshow(newI);tltle('閾值分割圖');

5. 遺傳演算法流程圖

首先你的這個問題沒有什麼意義,明顯x=31的時候y最大嘛。。。

%定義遺傳演算法參數
NIND=40; %個體數目(Number of indivials)
MAXGEN=25; %最大遺傳代數(Maximum number of generations)
PRECI=20; %變數的二進制位數(Precision of variables)
GGAP=0.9; %代溝(Generation gap)
trace=zeros(2, MAXGEN); %尋優結果的初始值
FieldD=[20;0;31;1;0;1;1]; %區域描述器(Build field descriptor)
Chrom=crtbp(NIND, PRECI); %初始種群
gen=0; %代計數器
variable=bs2rv(Chrom, FieldD); %計算初始種群的十進制轉換
ObjV=variable.*variable; %計算目標函數值
while gen<MAXGEN
FitnV=ranking(-ObjV); %分配適應度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV, GGAP); %選擇
SelCh=recombin('xovsp', SelCh, 0.7); %重組
SelCh=mut(SelCh); %變異
variable=bs2rv(SelCh, FieldD); %子代個體的十進制轉換
ObjVSel=variable.*variable; %計運算元代的目標函數值
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新種群
variable=bs2rv(Chrom, FieldD);
gen=gen+1; %代計數器增加
%輸出最優解及其序號,並在目標函數圖像中標出,Y為最優解,I為種群的序號
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, 'bo');
trace(1, gen)=max(ObjV); %遺傳演算法性能跟蹤
trace(2, gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom, FieldD); %最優個體的十進制轉換
hold on, grid;
plot(variable,ObjV,'b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid
legend('解的變化','種群均值的變化')

上面是這個問題的MATLAB程序,你自己研究一下吧
運行的時候需要MATLAB遺傳演算法工具箱

6. 關於遺傳演算法

遺傳演算法(Genetic Algorithm,簡稱GA)是美國 Michigan大學的 John Golland提出的一種建立在自然選擇和群體遺傳學機理基礎上的隨機、迭代、進化、具有廣泛適用性的搜索方法。現在已被廣泛用於學習、優化、自適應等問題中。圖4-1 給出了 GA搜索過程的直觀描述。圖中曲線對應一個具有復雜搜索空間(多峰空間)的問題。縱坐標表示適應度函數(目標函數),其值越大相應的解越優。橫坐標表示搜索點。顯然,用解析方法求解該目標函數是困難的。採用 GA時,首先隨機挑選若干個搜索點,然後分別從這些搜索點開始並行搜索。在搜索過程中,僅靠適應度來反復指導和執行 GA 搜索。在經過若干代的進化後,搜索點後都具有較高的適應度並接近最優解。

一個簡單GA由復制、雜交和變異三個遺傳運算元組成:

圖4-2 常規遺傳演算法流程圖

7. 什麼是遺傳演算法

遺傳演算法是模擬自然界中按「優勝劣汰」法則進行進化過程而設計的演算法。Bagley和Rosengerg於1967年在他們的博士論文中首先提出了遺傳演算法的概念。1975年Holland出版的專著奠定了遺傳演算法的理論基礎。如今遺傳演算法不但給出了清晰的演算法描述,而且也建立了一些定量分析的結果,在眾多領域得到了廣泛的應用,如用於控制(煤氣管道的控制)、規劃(生產任務規劃)、設計(通信網路設計)、組合優化(TSP問題、背包問題)以及圖像處理和信號處理等。

8. 為什麼說遺傳演算法 是准三維路徑

#include "stdafx.h"
#include "stdio.h" //標准輸入輸出庫
#include "stdlib.h" //標准函數庫
#include "time.h"
#include "iostream.h"
#include "iomanip.h"
#include "math.h" //數學函數庫
#define MAX 1 //設定求最大適應值
#define MIN 2
#define CHROMLENGTH 15 //染色體長度,注意編碼變化時,要隨時修改
#define MAXNUM 1000
#define Cmax 30 //估計最大值
#define Cmin 0 //估計最小值
int PopSize = 150; //每代最大個體數
int FunctionMode = MIN;
double m_fPc = 0.9; //交叉概率
double m_fPm = 0.009; //變異概率
int MaxGeneration = 20; //最大世代數
int d[150][15]; //找到染色體並拷貝到這個數組中
int s[150][15];
int generation; //世代數
int Best_Index; //最好個體下標
int Worst_Index; //最壞個體下標
struct indivial //定義個體數據結構
{
double chrom[CHROMLENGTH+1]; //染色體
double value; //函數值
double fitness; //適應度
};
struct indivial
BestIndivial; //當代最佳個體
struct indivial
WorstIndivial;
struct indivial
Group[150]; //種群
double Random(double Low, double High)//本函數實現隨機產生Low-High之間的實數 .意思:隨機
{
return((double)rand()/RAND_MAX)*(High-Low)+Low;
}
double Max(double a, double b)
{
if(a>=b) return a;
else return b;
}
void GenerateInitialPopulation()//種群初始化,二進制編碼初始化其中'1'表示路徑頂點在最短路徑中,'0'則反之
{
int i,j;

for(i = 0; i < PopSize; i++)
{
for(j = 1; j < CHROMLENGTH-2; j++)
{
Group[i].chrom[j] = (int)(Random(1,10)

9. 遺傳演算法怎麼回事

遺傳演算法(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,則以進化過程中所得到的具有最大適應度個體作為最優解輸出,終止計算

閱讀全文

與遺傳演算法圖像為什麼是階梯相關的資料

熱點內容
愛邦網站伺服器有什麼好處 瀏覽:775
mpv源碼編譯 瀏覽:873
pdf復制限制 瀏覽:442
日夜app怎麼下載 瀏覽:775
程序員簡化邏輯 瀏覽:998
c高級編程購買 瀏覽:466
蘋果文件夾怎麼是黑色的 瀏覽:115
單片機觸發方式 瀏覽:532
安卓啟動應用為什麼有廣告 瀏覽:994
androidapphome鍵 瀏覽:938
命令方塊生物怎麼召喚 瀏覽:753
什麼清理能把空頭文件夾清理掉 瀏覽:834
晨曦加密鎖序列號怎麼查詢 瀏覽:256
ofstream編譯系統 瀏覽:134
樁基箍筋哪些地方為加密區 瀏覽:382
什麼是復印機的背包伺服器 瀏覽:249
巴樂兔租房app怎麼篩選房源 瀏覽:231
pdf數學公式 瀏覽:901
程序員代碼是自己寫還是改的 瀏覽:72
蘋果電腦遠程連接阿里雲伺服器 瀏覽:786