日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Matlab] 二进制蝙蝠算法用于解决背包问题

發(fā)布時間:2023/12/9 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Matlab] 二进制蝙蝠算法用于解决背包问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

二進制蝙蝠算法用于解決背包問題

    • 算法流程
    • 背包問題
    • Matlab 代碼
        • 目標(biāo)函數(shù)
    • 仿真結(jié)果
    • 參考文獻(xiàn)

算法流程

背包問題

參考[Matlab] 離散二進制粒子群算法(BPSO )解決背包問題

Matlab 代碼

%% 二進制蝙蝠算法%初始化種群 r = 0.7; narvs = 10; %問題的維度 n = 100; dim = narvs; maxgen = 100; populationSize = 100;Qmin=0; % Frequency minimum 頻率最小值 Qmax=2; % Frequency maximum 頻率最大值Q=zeros(n,1); % Frequency v=zeros(n,dim); % Velocities 速度cg_curve=zeros(1,maxgen);x = randsrc(n,narvs,[0,1;0.5,0.5]);%計算適應(yīng)度值 fitness =targetPackage(x',100);%找到當(dāng)前最好 [fmax,I]=max(fitness); best=x(I,:);A = 0.6; bestfit = zeros(maxgen,1); for i = 1:maxgencg_curve(i)=fmax; %當(dāng)前值for j = i:populationSizefor d = 1:dimQ(i) = Qmin+(Qmin-Qmax)*rand; %更新頻率v(j,d) = v(j,d)+(x(j,d)-best(d))*Q(j); %更新速度% V型的轉(zhuǎn)換函數(shù),很多采用的是西格瑪函數(shù)用于速度到位置的離散轉(zhuǎn)換V_shaped_transfer_function=abs((2/pi)*atan((pi/2)*v(j,d))); if rand<V_shaped_transfer_function % Equation 10 in the paperx(j,d)=~x(j,d);elsex(j,d)=x(j,d);endif rand > r % Pulse rate ()x(j,d)=best(d);endendFnew = targetPackage(x(j,:)',1);if (Fnew >= fitness(j,:))&&(rand < A)x(j,:)=x(j,:);fitness(j,:) = Fnew;endif Fnew>=fmaxbest=x(j,:);fmax=Fnew;endend bestfit(i,:) = fmax; endtargetPackage(best',1) plot(bestfit)

目標(biāo)函數(shù)

function fitness = targetPackage(x,indNum) %targetPackage 此處顯示有關(guān)此函數(shù)的摘要 % X:表示種群 volume=[95 75 23 73 50 22 6 57 89 98]; %物品體積 value=[89 59 19 43 100 72 44 16 7 64]; %物品價值 Weight=300; %背包重量 % a = zeros(indNum,1); % for i=1:indNum % a(i,1) = volume*x(:,i); % end %超過總重量的個體的適應(yīng)度值都視為0 k = find(volume*x<Weight); fitness=zeros(indNum,1); for j=1:size(k,2)fitness(k(j),1) = value*x(:,k(j)); end end

仿真結(jié)果

參考文獻(xiàn)

[1] Mirjalili, Seyedali, Seyed Mohammad Mirjalili, and Xin-She Yang. 2014. “Binary Bat Algorithm.” Neural Computing and Applications 25 (3): 663–81.

總結(jié)

以上是生活随笔為你收集整理的[Matlab] 二进制蝙蝠算法用于解决背包问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。