| 8 | 1/1 | 返回列表 |
| 查看: 3080 | 回復(fù): 7 | ||
dellluoluo金蟲 (小有名氣)
|
[求助]
求助:遺傳算法的matlab編程求解資源優(yōu)化問(wèn)題
|
|
最近在研究項(xiàng)目資源優(yōu)化問(wèn)題,其中一個(gè)問(wèn)題即工期固定,資源均衡問(wèn)題,用遺傳算法來(lái)做,使用matlab的遺傳算法工具箱自己編程來(lái)實(shí)現(xiàn),有詳細(xì)的文獻(xiàn)和例子,只做單資源的,需要將目標(biāo)函數(shù)寫成.m 文件, 遇到困難:目標(biāo)函數(shù)是使得資源均衡,滿足工序的合適開(kāi)始時(shí)間即基因值 ,困難是基因值不體現(xiàn)在目標(biāo)函數(shù)的顯式表達(dá)式中,而是在約束條件中,不知道怎么處理? 如果有哪位蟲友感興趣并愿意提供幫助,將不勝感激!如果需要,我可以把例子附上。 |
金蟲 (小有名氣)
|
其實(shí)我也不太看得懂你的需求,不過(guò)約束條件可以在區(qū)域描述器(Build field descriptor)時(shí)來(lái)約束變量范圍。 因?yàn)槲沂怯肧heffield大學(xué)的那個(gè)工具箱而不是matlab自帶的,所以不太清楚matlab自帶的是怎樣用的,你也可以下sheffield大學(xué)的這個(gè)工具箱來(lái)看看,它自帶例子,上手挺簡(jiǎn)單的 |
金蟲 (小有名氣)
|
呵呵,是我自己說(shuō)錯(cuò)了,我也是用的Sheffeild工具箱來(lái)編的,可是還是糊涂,我的編碼看文獻(xiàn)說(shuō)染色體用實(shí)數(shù)編碼,我的染色體不是顯示的體現(xiàn)在目標(biāo)函數(shù)中,我的問(wèn)題應(yīng)是單目標(biāo)優(yōu)化,屬于多元多峰函數(shù)的優(yōu)化,我想在雷英杰那本Matlab遺傳算法工具箱那本書的7.3的例子的基礎(chǔ)上修改,可是改的很糊涂。 如果您樂(lè)意幫助我,咱們可以QQ或郵件交流,我可以將具體問(wèn)題發(fā)給你幫我看看。先感謝你! |
金蟲 (小有名氣)
|
想得到您的相助! 下面是我的具體問(wèn)題 %programm: %計(jì)算工期固定,資源均衡的程序,為資源均衡之前的結(jié)果,得到RLI=76 clear; T0=16;%固定工期,由project軟件求得關(guān)鍵路徑 n=11;%活動(dòng)數(shù) for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個(gè)活動(dòng)日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個(gè)活動(dòng)持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 2 4 4 1 7 7 10 15];%每個(gè)活動(dòng)最早開(kāi)始時(shí)間 %esi=[0 0 0 2] efi=esi+di;%每個(gè)活動(dòng)最早完成時(shí)間 xij=zeros(i,j);%系數(shù)矩陣 r_=sum(ri*di')/T0;%每個(gè)活動(dòng)平均日資源需求 ti=esi;%每個(gè)活動(dòng)實(shí)際開(kāi)始時(shí)間 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_));%目標(biāo)函數(shù),絕對(duì)誤差和 end end end x=1:T0; bar(x,rij);%直方圖 xlabel('Time'); ylabel('Daily Resource Demand Before Leveling'); 上面這個(gè)已經(jīng)得到結(jié)果!下面這個(gè)是想要得到的結(jié)果: %programm:想要得到的結(jié)果,即想要通過(guò)遺傳算法的計(jì)算,找到一組合適的基因值,也即是 %每個(gè)活動(dòng)合適的實(shí)際開(kāi)始時(shí)間ti屬于[esi(i);esi(i)+tfi(i)],得到如下的結(jié)果,使RLI=25。 clear; T0=16;%固定工期 n=11;%活動(dòng)數(shù) for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個(gè)活動(dòng)日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個(gè)活動(dòng)持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 10 7 4 1 14 11 10 15];%每個(gè)活動(dòng)最早開(kāi)始時(shí)間 %esi=[0 0 0 2] efi=esi+di;%每個(gè)活動(dòng)最早完成時(shí)間 xij=zeros(i,j);%系數(shù)矩陣 r_=sum(ri*di')/T0;%每個(gè)活動(dòng)平均日資源需求 ti=esi;%每個(gè)活動(dòng)實(shí)際開(kāi)始時(shí)間%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %(這個(gè)是需要經(jīng)過(guò)遺傳算法計(jì)算后得到的結(jié)果)% ![]() %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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_));%目標(biāo)函數(shù) end end end x=1:T0; bar(x,rij);%直方圖 xlabel('Time'); ylabel('Daily Resource Demand After Leveling'); 下面想用GA求:程序沒(méi)有寫明白????????????????? %GA programm T0=16;%固定工期 %T0=6; n=11;%活動(dòng)數(shù) for j=1:T0 for i=1:n ri=[2 1 4 4 2 4 6 0 2 1 2];%每個(gè)活動(dòng)日資源 % ri=[2 1 4 4] di=[2 4 1 4 3 6 6 1 4 5 1];%每個(gè)活動(dòng)持續(xù)工期 %di=[2 4 1 4] esi=[0 0 0 2 4 4 1 7 7 10 15];%每個(gè)活動(dòng)最早開(kāi)始時(shí)間(遺傳算法應(yīng)用之前) %esi=[0 0 0 2] efi=esi+di;%每個(gè)活動(dòng)最早完成時(shí)間 lsi=[6 0 3 10 8 4 4 14 11 10 15];%最遲開(kāi)始時(shí)間 tfi=lsi-esi;%總時(shí)差 xij=zeros(i,j);%系數(shù)矩陣 r_=sum(ri*di')/T0;%每個(gè)活動(dòng)平均日資源需求 ti=esi;%每個(gè)活動(dòng)實(shí)際開(kāi)始時(shí)間 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_));%目標(biāo)函數(shù),絕對(duì)誤差和 end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %想把上面這一段寫成function的形式來(lái)調(diào)用!不清楚怎么寫?% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %定義 遺傳算法參數(shù) NVAR=11;%變量維數(shù) NIND=50;%基因規(guī)模 PRECI=20;%基因長(zhǎng)度 GGAP=0.9;%代溝 Pc=0.5;%交叉率 Pm=0.4;%變異率 MAXGEN=100;%演化代數(shù) %建立區(qū)域掃描器%%%%%%%%%%%% %想在下面這段遺傳算法的程序基礎(chǔ)上修改,這個(gè)程序是雷英杰那個(gè)書上的的 %7.3求多元多峰函數(shù)優(yōu)化的實(shí)例%%%%%%%%%%%%%,不會(huì)寫目標(biāo)函數(shù)???? %這個(gè)目標(biāo)函數(shù)在遺傳算法中不知道怎么寫 RLI=sum(abs(rij-r_)) %關(guān)鍵是基因值沒(méi)有體現(xiàn)在目標(biāo)函數(shù)中,只是隱含在xij中,當(dāng)ti在活動(dòng)的 %【esi,esi+tfi】之間時(shí),xij=1,才計(jì)算RLI. else xij=0不計(jì)算 %最終得到的結(jié)果是找到一組合適的ti,使得計(jì)算的RLI=25 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% trace = zeros(MAXGEN,NVAR); for i=1:NVAR FieldDR = [rep([PRECI],[2,NVAR]);rep([esi(i);esi(i)+tfi(i)],[2,NVAR]);rep([1;0;1;1],[2,NVAR])];%這句不清楚是否有%問(wèn)題? end; Chrom=crtrp(NIND,FieldDR);%創(chuàng)建初始實(shí)值種群 % gen = 0; trace=zeros(MAXGEN,2); ObjV= RLI;%%%%%%%%%%%%%%%%%%這個(gè)函數(shù)不會(huì)寫? while gen SelCh=select('sus',Chrom,FitnV,GGAP); SelCh=recombin('xovsp',SelCh,0.5); SelCh=mut(SelCh,0.4); ObjVSel=RLI;%%%%%%%%%%%%%%%%%%%%%%%%???????? [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); gen=gen+1; %輸出最優(yōu)解 [Y,I] = min(ObjVSel); % 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'). |
金蟲 (小有名氣)
金蟲 (小有名氣)
銅蟲 (初入文壇)
金蟲 (小有名氣)
| 8 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 296求調(diào)劑 +4 | 大口吃飯 身體健 2026-03-13 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 274求調(diào)劑0856材料化工 +13 | z2839474511 2026-03-11 | 14/700 |
|
|
[考研] 一志愿蘇州大學(xué)材料工程(085601)專碩有科研經(jīng)歷三項(xiàng)國(guó)獎(jiǎng)兩個(gè)實(shí)用型專利一項(xiàng)省級(jí)立項(xiàng) +6 | 大火山小火山 2026-03-16 | 8/400 |
|
|
[考博] 26申博 +4 | 八旬速覽 2026-03-16 | 4/200 |
|
|
[考研] 材料工程專碩274一志愿211求調(diào)劑 +6 | 薛云鵬 2026-03-15 | 6/300 |
|
|
[考研] 278求調(diào)劑 +3 | Yy7400 2026-03-13 | 3/150 |
|
|
[考研] 一志愿,福州大學(xué)材料專碩339分求調(diào)劑 +3 | 木子momo青爭(zhēng) 2026-03-15 | 3/150 |
|
|
[考研] 藥學(xué)383 求調(diào)劑 +3 | 藥學(xué)chy 2026-03-15 | 4/200 |
|
|
[考研] 286求調(diào)劑 +3 | lemonzzn 2026-03-16 | 5/250 |
|
|
[文學(xué)芳草園] 伙伴們,祝我生日快樂(lè)吧 +17 | myrtle 2026-03-10 | 26/1300 |
|
|
[基金申請(qǐng)]
今年的國(guó)基金是打分制嗎?
50+3
|
zhanghaozhu 2026-03-14 | 3/150 |
|
|
[考研] 304求調(diào)劑 +5 | 素年祭語(yǔ) 2026-03-15 | 5/250 |
|
|
[考研] 279求調(diào)劑 +3 | Dizzy123@ 2026-03-10 | 3/150 |
|
|
[考研] 【考研調(diào)劑求收留】 +3 | Ceciilia 2026-03-11 | 3/150 |
|
|
[碩博家園] 085600 260分求調(diào)劑 +3 | 天空還下雨么 2026-03-13 | 5/250 |
|
|
[考研] 考研調(diào)劑 +4 | 芬達(dá)46 2026-03-12 | 4/200 |
|
|
[考研] 307求調(diào)劑 +5 | 超級(jí)伊昂大王 2026-03-12 | 5/250 |
|
|
[考研] 求調(diào)劑 +3 | 程雨杭 2026-03-12 | 3/150 |
|
|
[考研] 289求調(diào)劑 +3 | 李政瑩 2026-03-12 | 3/150 |
|
|
[考博] 2026年博士申請(qǐng) +3 | QwQwQW10 2026-03-11 | 3/150 |
|