| 6 | 1/1 | 返回列表 |
| 查看: 1992 | 回復: 5 | |||
dellluoluo金蟲 (小有名氣)
|
[求助]
求助:資源優(yōu)化問題的遺傳算法matlab編程
|
|
最近在研究項目資源優(yōu)化問題,其中一個問題即工期固定,資源均衡問題,用遺傳算法來做,使用matlab的遺傳算法工具箱自己編程來實現,有詳細的文獻和例子,只做單資源的,需要將目標函數寫成.m 文件, 遇到困難:目標函數是使得資源均衡,滿足工序的合適開始時間即基因值 ,困難是基因值不體現在目標函數的顯式表達式中,而是在約束條件中,不知道怎么處理? 如果有哪位蟲友感興趣并愿意提供幫助,將不勝感激!如果需要,我可以把例子附上。 圖1.gif 圖2.gif 圖片不清晰,附上文獻的鏈接,文中的測試問題1,圖5 http://www.sciencedirect.com/sci ... i/S0926580599000114 [ Last edited by dellluoluo on 2013-4-2 at 17:45 ] |
至尊木蟲 (著名寫手)
驃騎將軍
| GA都一個流程,約束一般都跟penalty function有關系,如果不滿足約束條件,增加penalty值就會讓這些'非優(yōu)良'個體避免遺傳給下一代. |

金蟲 (小有名氣)
金蟲 (小有名氣)
|
想得到您的相助! %programm: %計算工期固定,資源均衡的程序,為資源均衡之前的結果,得到RLI=76 clear; T0=16;%固定工期,由project軟件求得關鍵路徑 n=11;%活動數 for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個活動日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個活動持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 2 4 4 1 7 7 10 15];%每個活動最早開始時間 %esi=[0 0 0 2] efi=esi+di;%每個活動最早完成時間 xij=zeros(i,j);%系數矩陣 r_=sum(ri*di')/T0;%每個活動平均日資源需求 ti=esi;%每個活動實際開始時間 rij=0; end; end; for j=1:T0 for i=1:n if (j>= ti(i)+1)&(j<=ti(i)+di(i)) xij(i,j)=1; rij=ri*xij; tii(i)=ti(i); RLI=sum(abs(rij-r_));%目標函數,絕對誤差和 end end end x=1:T0; bar(x,rij);%直方圖 xlabel('Time'); ylabel('Daily Resource Demand Before Leveling'); 上面這個已經得到結果!下面這個是想要得到的結果: %programm:想要得到的結果,即想要通過遺傳算法的計算,找到一組合適的基因值,也即是 %每個活動合適的實際開始時間ti屬于[esi(i);esi(i)+tfi(i)],得到如下的結果,使RLI=25。 clear; T0=16;%固定工期 n=11;%活動數 for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個活動日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個活動持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 10 7 4 1 14 11 10 15];%每個活動最早開始時間 %esi=[0 0 0 2] efi=esi+di;%每個活動最早完成時間 xij=zeros(i,j);%系數矩陣 r_=sum(ri*di')/T0;%每個活動平均日資源需求 ti=esi;%每個活動實際開始時間%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(需要經過遺傳算法計算后得到的結果)% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% rij=0; end; end; for j=1:T0 for i=1:n if (j>= ti(i)+1)&(j<=ti(i)+di(i)) xij(i,j)=1; rij=ri*xij; tii(i)=ti(i); RLI=sum(abs(rij-r_));%目標函數 end end end x=1:T0; bar(x,rij);%直方圖 xlabel('Time'); ylabel('Daily Resource Demand After Leveling'); 下面想用GA求:程序沒有寫明白????????????????? %GA programm T0=16;%固定工期 %T0=6; n=11;%活動數 for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個活動日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個活動持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 2 4 4 1 7 7 10 15];%每個活動最早開始時間(遺傳算法應用之前) %esi=[0 0 0 2] efi=esi+di;%每個活動最早完成時間 lsi=[6 0 3 10 8 4 4 14 11 10 15];%最遲開始時間 tfi=lsi-esi;%總時差 xij=zeros(i,j);%系數矩陣 r_=sum(ri*di')/T0;%每個活動平均日資源需求 ti=esi;%每個活動實際開始時間 rij=0; end; end; for j=1:T0 for i=1:n if (j>= ti(i)+1)&(j<=ti(i)+di(i)) xij(i,j)=1; rij=ri*xij; tii(i)=ti(i); RLI=sum(abs(rij-r_));%目標函數,絕對誤差和 end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %想把上面這一段寫成function的形式來調用!不清楚怎么寫?% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %定義 遺傳算法參數 NVAR=11;%變量維數 NIND=50;%基因規(guī)模 PRECI=20;%基因長度 GGAP=0.9;%代溝 Pc=0.5;%交叉率 Pm=0.4;%變異率 MAXGEN=100;%演化代數 %建立區(qū)域掃描器%%%%%%%%%%%% %想在下面這段遺傳算法的程序基礎上修改,這個程序是雷英杰那個書上的的 %7.3求多元多峰函數優(yōu)化的實例%%%%%%%%%%%%%,不會寫目標函數???? %這個目標函數在遺傳算法中不知道怎么寫 RLI=sum(abs(rij-r_)) %關鍵是基因值沒有體現在目標函數中,只是隱含在xij中,當ti在活動的 %【esi,esi+tfi】之間時,xij=1,才計算RLI. else xij=0不計算 %最終得到的結果是找到一組合適的ti,使得計算的RLI=25 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% trace = zeros(MAXGEN,NVAR); for i=1:NVAR FieldD = [rep([PRECI],[1,NVAR]);rep([esi(i);esi(i)+tfi(i)],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; end; Chrom=crtbp(NIND,NVAR*PRECI);%創(chuàng)建初始種群 gen = 0; trace=zeros(MAXGEN,2); x=bs2rv(Chrom,FieldD) ObjV= RLI;%%%%%%%%%%%%%%%%%%這個函數不會寫? while gen SelCh=select('sus',Chrom,FitnV,GGAP); SelCh=recombin('xovsp',SelCh,0.5); SelCh=mut(SelCh,0.4); x=bs2rv(Chrom,FieldD) ObjVSel=RLI;%%%%%%%%%%%%%%%%%%%%%%%%???????? [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); gen=gen+1; %輸出最優(yōu)解 [Y,I] = min(ObjVSel); Y,bs2rv(Chrom(I, ,FieldD);% plot(variable(I),Y,'bo'); trace(gen,1)=min(ObjV); trace(gen,2)=sum(ObjV)/length(ObjV); if (gen==100) figure(2); plot(ObjV);hold on; plot(ObjV,'b*');grid; end end figure(3);clf; plot(trace(:,1));hold on; plot(trace(:,2)','-.');grid; %legend('aa','bb'). ![]() |
金蟲 (小有名氣)
| 6 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 268求調劑 +3 | 簡單點0 2026-03-17 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 材料,紡織,生物(0856、0710),化學招生啦 +3 | Eember. 2026-03-17 | 7/350 |
|
|
[考研] 考研化學學碩調劑,一志愿985 +4 | 張vvvv 2026-03-15 | 6/300 |
|
|
[考研] 26考研求調劑 +6 | 丶宏Sir 2026-03-13 | 6/300 |
|
|
[考研] 材料專碩274一志愿陜西師范大學求調劑 +5 | 薛云鵬 2026-03-13 | 5/250 |
|
|
[論文投稿] 有沒有大佬發(fā)小論文能帶我個二作 +3 | 增銳漏人 2026-03-17 | 4/200 |
|
|
[考研] 267一志愿南京工業(yè)大學0817化工求調劑 +6 | SUICHILD 2026-03-12 | 6/300 |
|
|
[考研] 286求調劑 +3 | lemonzzn 2026-03-16 | 5/250 |
|
|
[教師之家] 焦慮 +7 | 水冰月月野兔 2026-03-13 | 9/450 |
|
|
[考研] 0856求調劑 +3 | 劉夢微 2026-03-15 | 3/150 |
|
|
[考研] 326求調劑 +3 | mlpqaz03 2026-03-15 | 3/150 |
|
|
[考研] 297求調劑 +4 | 學海漂泊 2026-03-13 | 4/200 |
|
|
[考研] 【0703化學調劑】-一志愿華中師范大學-六級475 +5 | Becho359 2026-03-11 | 5/250 |
|
|
[考研] 331求調劑(0703有機化學 +5 | ZY-05 2026-03-13 | 6/300 |
|
|
[考研] 266求調劑 +4 | 學員97LZgn 2026-03-13 | 4/200 |
|
|
[考研] 0703化學一志愿211 總分320求調劑 +5 | 瑪卡巴卡啊哈 2026-03-11 | 5/250 |
|
|
[考研] 328化工專碩求調劑 +4 | 。,。,。,。i 2026-03-12 | 4/200 |
|
|
[考研] 085600材料與化工 309分請求調劑 +7 | dtdxzxx 2026-03-12 | 8/400 |
|
|
[考博] 福州大學楊黃浩課題組招收2026年專業(yè)學位博士研究生,2026.03.20截止 +3 | Xiangyu_ou 2026-03-12 | 3/150 |
|
|
[考研] 081200-11408-276學碩求調劑 +3 | 崔wj 2026-03-12 | 4/200 |
|