亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mysf.m

?? 這是一個用MATLAB寫的免疫算法程序。
?? M
字號:
%2008-07-11 13:02%這是免疫算法。這個算法幾乎與遺傳算法一樣,只是多用了一個免疫函數
%免疫算法是遺傳算法的變體,它不用雜交,而是采用注入疫苗的方法。
%疫苗是優秀染色體中的一段基因,把疫苗接種到其它染色體中

%注意:標準遺傳算法的一個重要概念是,染色體是可能解的2進制順序號,由這個序號在可能解的集合(解空間)中找到可能解
%這是免疫算法的主程序,它需要調用的函數如下。
%接種疫苗函數:
%function inoculateChromosome=immunity(chromosomeGroup,bacterinChromosome,parameter)
%parameter:1,隨機制取染色體接種。2,每個染色體都接種。3,每個染色體都接種,但接種的位置是隨機的
%這個函數實現對染色體的疫苗接種
%由染色體(可能解的2進制)順序號找到可能解:
%x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum);
%把解代入非線性方程組計算誤差函數:functionError=nonLinearSumError1(x);
%判定程是否得解函數:[solution,isTrue]=isSolution(x,funtionError,solutionSumError);
%選擇最優染色體函數:
%[bestChromosome,leastFunctionError]=best_worstChromosome(fatherChromosomeGroup,functionError);
%誤差比較函數:從兩個染色體中,選出誤差較小的染色體
%[holdBestChromosome,holdLeastFunctionError]...
% =compareBestChromosome(holdBestChromosome,holdLeastFunctionError,...
% bestChromosome,leastFuntionError)
%為染色體定義概率函數,好的染色體概率高,壞染色體概率低
%p=chromosomeProbability(functionError);
%按概率選擇染色體函數:
%slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p);
%父代染色體雜交產生子代染色體函數
%sonChrmosomeGroup=crossChromosome(slecteChromosomeGroup,2);
%防止染色體超出解空間的函數
%chromosomeGroup=checkSequence(chromosomeGroup,solutionSum)
%變異函數
%fatherChromosomeGroup=varianceCh(sonChromosomeGroup,0.8,solutionN);
%通過實驗有如下結果:
%1。染色體應當多一些
%2。通過概率選擇染色體,在迭代早期會有效選出優秀的染色體,使解的誤差迅速降低,
%但隨著迭代的進行,概率選擇也會導致某種染色體在基因池中迅速增加,使染色體趨同,
%這就減少了物種的多樣性,反而難以逼近解
%3。不用概率選擇,僅采用染色體雜交,采用保留優秀染色體,也可以得到解
%4。單純免疫效果不好,雜交+免疫效果比較好

%%%%%%%%%%%%%%%%%%%%%%%%程序開始運行

clear,clc;%清理內存,清屏
circleN=200;%迭代次數
format long

%%%%%%%%%%%%%%%構造可能解的空間,確定染色體的個數、長度
solutionSum=4;
leftBoundary=-10;
rightBoundary=10;
distance=1;
chromosomeSum=500;
solutionSumError=0.1;
%solutionSum:非線性方程組的元數(待解變量的個數);leftBoundary:可能解的左邊界;
%rightBoundary:可能解的右邊界;distance:可能解的間隔,也是解的精度
%chromosomeSum:染色體的個數;solveSumError:解的誤差
oneDimensionSet=leftBoundary:distance:rightBoundary;
%oneDimensionSet:可能解在一個數軸(維)上的集合
oneDimensionSetN=size(oneDimensionSet,2);       %返回oneDimensionSet中的元素個數
solutionN=oneDimensionSetN^solutionSum;         %解空間(解集合)中可能解的總數
binSolutionN=dec2bin(solutionN);                %把可能解的總數轉換成二進制數,dec2bin()為轉換函數
chromosomeLength=size(binSolutionN,2);          %由解空間中可能解的總數(二進制數)計算染色體的長度

%%%%%%%%%%%%%%%%程序初始化
%隨機生成初始可能解的順序號,+1是為了防止出現0順序號
solutionSequence=fix(rand(chromosomeSum,1)*solutionN)+1;
for i=1:chromosomeSum%防止解的順序號超出解的個數
    if  solutionSequence(i)>solutionN;
        solutionSequence(i)=solutionN;
    end
end
%染色體是解集合中的序號,它對應一個可能解
%把解的十進制序號轉成二進制序號,解碼dec2bin()
fatherChromosomeGroup=dec2bin(solutionSequence,chromosomeLength);
holdLeastFunctionError=Inf;%可能解的最小誤差的初值
holdBestChromosome=0;%對應最小誤差的染色體的初值

%%%%%%%%%%%%%%%%%%開始計算
compute=1;
circle=0;
while compute%開始迭代求解
    %%%%%%%%%%%%%1:由可能解的序號尋找解本身(關鍵步驟)
    x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum);
    %%%%%%%%%%%%%2:把解代入非線性方程計算誤差
    functionError=nonLinearSumError1(x);%把解代入方程計算誤差
    [solution,minError,isTrue]=isSolution(x,functionError,solutionSumError);
    %isSolution函數根據誤差functionError判定方程是否已經解開,isTrue=1,方程得解。solution是方程的解
    if isTrue==1
        '方程得解'
    solution
    minError
    return%結束程序
end
%%%%%%%%%%%%%3:選擇最好解對應的最優染色體
[bestChromosome,leastFunctionError]=best_worstChromosome(fatherChromosomeGroup,functionError);
%%%%%%%%%%%%%4:保留每次迭代產生的最好的染色體
%本次最好解與上次最好解進行比較,如果上次最好解優于本次最好解,保留上次最好解;
%反之,保留本次最好解。保留的最好染色體放在holdBestChromosome中
[holdBestChromosome,holdLeastFunctionError]...
=compareBestChromosome(holdBestChromosome,holdLeastFunctionError,...
bestChromosome,leastFunctionError);
circle=circle+1
%minError
%solution
holdLeastFunctionError
if  circle>circleN
    return
end
%%%%%%%%%%%%%%5:把保留的最好的染色體holdBestChromosome加入到染色體群中
order=round(rand(1)*chromosomeSum);
if  order==0
    order=1;
end
fatherChromosomeGroup(order,:)=holdBestChromosome;
functionError(order)=holdLeastFunctionError;

%%%%%%%%%%%%%%%6:為每一條染色體(即可能解的序號)定義一個概率(關鍵步驟)
%%%%%%%%%%%%%%%好的染色體概率高,壞的概率低。依據誤差functionError計算概率
[p,trueP]=chromosomeProbability(functionError);
if  trueP =='Fail'
    '可能解嚴重不適應方程,請重新開始'
    return%結束程序
end
%%%%%%%%%%%%%%%7:按照概率篩選染色體(關鍵步驟)
%fa=bin2dec(fatherChromosomeGroup)%顯示父染色體
%從父染體中選擇優秀染色體
%selecteChromosomeGroup=selecteChromosome(fatherChromosomeGroup,p);
%%%%%%%%%%%%%%%8:染色體雜交(關鍵步驟)
%sle=bin2dec(selecteChromosomeGroup)%顯示選擇出來的解的序號(染色體)
%用概率篩選出的染色體selecteChromosomeGroup進行雜交,產生子代染色體
%sonChromosomeGroup=crossChromosome(selecteChromosomeGroup,2);
%不用概率篩選出的染色體selecteChromosomeGroup進行雜交,而直接用上一代(父代)的
sonChromosomeGroup=crossChromosome(fatherChromosomeGroup,2);
%sonChromosomeGroup=immunity(fatherChromosomeGroup,holdBestChromosome,3);
%把疫苗接種到其它染色體中
sonChromosomeGroup=immunity(sonChromosomeGroup,holdBestChromosome,3);
%cro=bin2dec(sonChromosomeGroup)%顯示雜交后的子代染色體
sonChromosomeGroup=checkSequence(sonChromosomeGroup,solutionN);%檢查雜交后的染色體是否越界
%%%%%%%%%%%%%%%9:變異
%不雜交直接變異
%fatherChromosomeGroup=varianceCh(fatherChromosomeGroup,0.1,solutionN);
%雜交后變異
fatherChromosomeGroup=varianceCh(sonChromosomeGroup,0.5,solutionN);
fatherChromosomeGroup=checkSequence(fatherChromosomeGroup,solutionN);%檢查變異后的染色體是否越界
end

 

%接種疫苗函數,這是和遺傳算法唯一不同的函數,可以用它代替染色體的交叉操作。

%chromosomeGroup:染色體組
%bachterinChromosome:疫苗染色體,即最好的染色體。從這個染色體上取疫苗
%parameter:接種疫苗的參數,即用什么方法接種
%inoculateChromosome:接種疫苗后的染色體
function inoculateChromosome=immunity(chromosomeGroup,bacterinChromosome,parameter)
[chromosomeGroupSum,chromosomeLength]=size(chromosomeGroup);
[row,bacterinChromosomeLength]=size(bacterinChromosome);
%chromosomeGroupSum:染色體的條數;chromosomeLength:染色體的長度
switch parameter
    case 1      %隨機選擇染色體進行接種
            for i=1:chromosomeGroupSum
                 %%%%%%%%%%%%從疫苗染色體上定位疫苗
                headDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上左邊的點位
                if headDot==0%防止出現0點位
                    headDot=1;
                end
                tailDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上右邊的點位
                if tailDot==0%防止出現0點位
                    tailDot=1;
                end
                if  tailDot>headDot%防止右邊的點位大于左邊的點位
                    dot=headDot;
                    headDot=tailDot;
                    tailDot=dot;
                end
                %%%%%%%%%%%%%接種
                randChromosomeSequence=round(rand(1)*chromosomeGroupSum);
                %隨機產生1條染色體的序號,對這條染色體進行接種
                if randChromosomeSequence==0%防止產生0序號
                    randChromosomeSequence=1;
                end
                inoculateChromosome(i,:)...%先把輸入染色體傳給輸出
                =chromosomeGroup(randChromosomeSequence,:);
                %執行免疫,即從疫苗染色體上取出一段基因做疫苗,再注入到其它染色體中
                inoculateChromosome(i,headDot:tailDot)...
                =bacterinChromosome(1,headDot:tailDot);
            end
    case 2 %所有染色體挨個接種
            for i=1:chromosomeGroupSum
                %%%%%%%%%%%%從疫苗染色體上定位疫苗
                headDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上左邊的點位
                if  headDot==0%防止出現0點位
                    headDot=1;
                end
                tailDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上右邊的點位
                if  tailDot==0%防止出現0點位
                    tailDot=1;
                end
                if  tailDot>headDot%防止右邊的點位大于左邊的點位
                    dot=headDot;
                    headDot=tailDot;
                    tailDot=dot;
                end
                %%%%%%%%%%%%%接種
                inoculateChromosome(i,:)=chromosomeGroup(i,:);%先把輸入染色體傳給輸出
                %執行免疫,即從疫苗染色體上取出一段基因做疫苗,再注入到其它染色體中
                inoculateChromosome(i,headDot:tailDot)...
                =bacterinChromosome(1,headDot:tailDot);
            end
    case 3 %接種位置是隨機的
            for i=1:chromosomeGroupSum
                %%%%%%%%%%%%從疫苗染色體上定位疫苗
                headDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上左邊的點位
                if  headDot==0%防止出現0點位
                    headDot=1;
                end
                tailDot=fix(rand(1)*bacterinChromosomeLength);
                %疫苗在染色體上右邊的點位
                if  tailDot==0%防止出現0點位
                    tailDot=1;
                end
                if  tailDot>headDot%防止右邊的點位大于左邊的點位
                    dot=headDot;
                    headDot=tailDot;
                    tailDot=dot;
                end
                %%%%%%%%%%%%%在染色體上隨機定位接種位置
                inoculateDot=fix(rand(1)*chromosomeLength);%隨機選擇染色體的接種點位
                if  inoculateDot==0
                    inoculateDot=1;
                    inoculateChromosome(i,:)=chromosomeGroup(i,:);
                    inoculateChromosome(i,inoculateDot:tailDot-headDot+1)...
                    =bacterinChromosome(1,headDot:tailDot);
                elseif inoculateDot<=headDot
                    inoculateChromosome(i,:)=chromosomeGroup(i,:);
                    inoculateChromosome(i,inoculateDot:inoculateDot+tailDot-headDot)...
                    =bacterinChromosome(1,headDot:tailDot);
                elseif (chromosomeLength-inoculateDot)>=(tailDot-headDot)
                    inoculateChromosome(i,:)=chromosomeGroup(i,:);
                    inoculateChromosome(i,inoculateDot:inoculateDot+tailDot-headDot)...
                    =bacterinChromosome(1,headDot:tailDot);
                else
                    inoculateChromosome(i,:)=chromosomeGroup(i,:);
                    inoculateChromosome(i,headDot:tailDot)...
                    =bacterinChromosome(1,headDot:tailDot);
                end
            end
end
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产aⅴ天堂久久| 美女国产一区二区三区| 污片在线观看一区二区| 国产成人亚洲综合a∨婷婷| 欧美制服丝袜第一页| 26uuu欧美日本| 偷窥国产亚洲免费视频| 91女厕偷拍女厕偷拍高清| 欧美mv日韩mv国产网站app| 亚洲永久免费视频| 成人av电影观看| 久久蜜桃香蕉精品一区二区三区| 亚洲观看高清完整版在线观看 | 成人av小说网| www亚洲一区| 免费国产亚洲视频| 欧美日韩一区二区不卡| 亚洲少妇中出一区| eeuss鲁片一区二区三区| 久久综合九色综合欧美亚洲| 免费一级欧美片在线观看| 欧美色爱综合网| 一区二区三区免费| 91在线porny国产在线看| 国产精品女人毛片| 国产69精品久久久久毛片| 中文字幕日韩精品一区| 免费日本视频一区| 欧美一区二区三区白人| 五月综合激情日本mⅴ| 欧洲国内综合视频| 一区二区三区四区在线播放| 91性感美女视频| 日韩毛片视频在线看| 91在线观看免费视频| 亚洲人成7777| 欧洲精品一区二区三区在线观看| 亚洲视频免费看| 91丨九色丨黑人外教| 亚洲视频一区在线| 欧美综合一区二区三区| 亚洲永久精品大片| 欧美精品高清视频| 麻豆精品一二三| 国产午夜精品福利| av一区二区三区四区| 亚洲一区二区在线免费观看视频| 欧美日韩一区二区三区视频| 日韩电影一区二区三区四区| 日韩三级视频在线观看| 国产一区二区精品久久| 欧美高清在线一区| 在线观看av不卡| 麻豆精品精品国产自在97香蕉| 久久久久九九视频| 91女神在线视频| 日本 国产 欧美色综合| 久久久久国产免费免费| jlzzjlzz亚洲女人18| 亚洲成a人v欧美综合天堂下载| 日韩欧美国产一二三区| 福利一区在线观看| 亚洲国产精品嫩草影院| 久久亚洲一区二区三区明星换脸| av亚洲精华国产精华精华| 亚洲国产另类av| 26uuu久久综合| 91成人免费在线| 国产一区二区三区黄视频| 中文字幕一区在线观看| 91精品国产综合久久久久久| 国产成人激情av| 亚洲国产成人91porn| 久久嫩草精品久久久精品| 色香蕉久久蜜桃| 狠狠色伊人亚洲综合成人| 亚洲色图另类专区| 精品成人免费观看| 在线欧美小视频| 国产91清纯白嫩初高中在线观看| 亚洲福利视频三区| 欧美高清在线视频| 日韩天堂在线观看| 色丁香久综合在线久综合在线观看| 久久国产视频网| 亚洲国产成人91porn| 国产精品久久久99| 久久综合狠狠综合久久激情| 欧美精品xxxxbbbb| 色国产精品一区在线观看| 国产suv精品一区二区三区| 日本午夜精品一区二区三区电影| 亚洲欧美视频一区| 欧美国产精品劲爆| 国产亚洲一本大道中文在线| 日韩亚洲欧美在线| 欧美高清hd18日本| 91小宝寻花一区二区三区| 国产精品一区二区三区网站| 免费视频一区二区| 日韩中文字幕91| 亚洲高清一区二区三区| 亚洲最新视频在线播放| 亚洲嫩草精品久久| 国产精品毛片无遮挡高清| 国产日韩精品一区二区三区| 26uuu色噜噜精品一区| 欧美xxxxx牲另类人与| 欧美精品v日韩精品v韩国精品v| 欧美色图12p| 欧美性大战久久| 日韩视频免费直播| 欧美日韩免费一区二区三区视频| 91国在线观看| 欧美视频第二页| 欧美日韩视频在线一区二区| 精品污污网站免费看| 欧美日韩日日摸| 欧美日韩国产综合一区二区三区 | 欧美日韩一区二区在线视频| 色综合欧美在线| 一本一道波多野结衣一区二区| av亚洲精华国产精华精华| 94-欧美-setu| 99国产精品久久久久久久久久| 91免费视频大全| 欧美在线不卡视频| 欧美精品乱码久久久久久| 日韩欧美久久久| 久久综合久久综合久久| 国产精品无圣光一区二区| 国产精品护士白丝一区av| 亚洲免费av高清| 天天射综合影视| 国产中文一区二区三区| 成人免费高清视频| 91色|porny| 5566中文字幕一区二区电影| 欧美tk—视频vk| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲人123区| 日本v片在线高清不卡在线观看| 国内国产精品久久| 99久久精品国产网站| 欧美日韩精品二区第二页| 久久亚洲春色中文字幕久久久| 亚洲国产成人午夜在线一区| 一区二区欧美国产| 久99久精品视频免费观看| 不卡视频在线看| 欧美日本精品一区二区三区| 久久久久久久久久久久久久久99 | 欧美不卡在线视频| 国产精品剧情在线亚洲| 亚洲一区二区视频| 国产精品资源在线观看| 欧美性一级生活| 国产欧美日韩另类视频免费观看| 一区二区三区免费观看| 国产在线不卡一卡二卡三卡四卡| 91国产免费看| 久久色在线视频| 午夜精品爽啪视频| 波多野结衣中文字幕一区| 91精品欧美综合在线观看最新| 国产精品久久久久久久久久免费看| 午夜精品久久久久久久| 成人在线视频一区| 欧美一级爆毛片| 亚洲一区二区三区视频在线| 国产成人午夜99999| 欧美一区二区精品久久911| 最好看的中文字幕久久| 国产乱码字幕精品高清av| 欧美日韩免费视频| 一区二区三区鲁丝不卡| 国产风韵犹存在线视精品| 欧美一区二区三级| 亚洲风情在线资源站| 97精品国产露脸对白| 国产日韩欧美精品综合| 麻豆成人免费电影| 6080国产精品一区二区| 亚洲女人小视频在线观看| 不卡一区二区中文字幕| 一区二区三区精品| 岛国精品在线播放| 久久精品视频免费| 国模一区二区三区白浆| 日韩一级高清毛片| 日韩电影一区二区三区| 欧美日本视频在线| 日韩精品国产精品| 欧美精品日韩综合在线| 亚洲午夜久久久久久久久久久| 精品成人一区二区三区| 性欧美大战久久久久久久久| 99久久婷婷国产精品综合| 国产日韩精品一区二区三区| 激情欧美日韩一区二区|