| 查看: 1908 | 回复: 5 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
dellluoluo金虫 (小有名气)
|
[求助]
求助:资源优化问题的遗传算法matlab编程
|
|
|
最近在研究项目资源优化问题,其中一个问题即工期固定,资源均衡问题,用遗传算法来做,使用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 ] |
» 猜你喜欢
上海工程技术大学【激光智能制造】课题组招收硕士
已经有6人回复
带资进组求博导收留
已经有11人回复
自荐读博
已经有5人回复
求个博导看看
已经有16人回复
上海工程技术大学张培磊教授团队招收博士生
已经有4人回复
求助院士们,这个如何合成呀
已经有4人回复
临港实验室与上科大联培博士招生1名
已经有9人回复
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab论文分享(包括神经网络,遗传算法,粒子群算法)
已经有442人回复
matlab中是否可以用simulink实现遗传算法
已经有6人回复
如何MATLAB程序实现遗传算法
已经有11人回复
一个关于matlab的遗传算法的问题
已经有3人回复
求助有关Matlab有约束非线性最优化问题
已经有9人回复
【分享】matlab遗传算法工具箱与应用(雷英杰)【已搜索无重复】
已经有74人回复
【求助】matlab 二次规划的优化的问题
已经有4人回复
【求助】matlab 遗传算法工具箱绘图命令是什么?
已经有6人回复
dellluoluo
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 1398.8
- 散金: 21
- 帖子: 146
- 在线: 238.1小时
- 虫号: 550976
- 注册: 2008-04-25
- 专业: 项目管理
5楼2013-04-10 21:14:10
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
dellluoluo(ben_ladeng代发): 金币+8, 应楼主要求代发金币 2013-06-01 13:31:46
ben_ladeng: 金币+2, 谢谢专家 2013-06-01 13:32:36
ben_ladeng: 专家考核, 代发金币 2013-06-01 13:33:33
ben_ladeng: 2013-06-01 13:33:59
dellluoluo(ben_ladeng代发): 金币+2 2013-06-01 13:34:11
感谢参与,应助指数 +1
dellluoluo(ben_ladeng代发): 金币+8, 应楼主要求代发金币 2013-06-01 13:31:46
ben_ladeng: 金币+2, 谢谢专家 2013-06-01 13:32:36
ben_ladeng: 专家考核, 代发金币 2013-06-01 13:33:33
ben_ladeng: 2013-06-01 13:33:59
dellluoluo(ben_ladeng代发): 金币+2 2013-06-01 13:34:11
| GA都一个流程,约束一般都跟penalty function有关系,如果不满足约束条件,增加penalty值就会让这些'非优良'个体避免遗传给下一代. |

2楼2013-04-02 18:37:53
dellluoluo
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 1398.8
- 散金: 21
- 帖子: 146
- 在线: 238.1小时
- 虫号: 550976
- 注册: 2008-04-25
- 专业: 项目管理
3楼2013-04-03 10:46:51
dellluoluo
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 1398.8
- 散金: 21
- 帖子: 146
- 在线: 238.1小时
- 虫号: 550976
- 注册: 2008-04-25
- 专业: 项目管理
|
想得到您的相助! %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];%每个活动持续工期 %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];%每个活动持续工期 %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];%每个活动持续工期 %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;%基因规模 PRECI=20;%基因长度 GGAP=0.9;%代沟 Pc=0.5;%交叉率 Pm=0.4;%变异率 MAXGEN=100;%演化代数 %建立区域扫描器%%%%%%%%%%%% %想在下面这段遗传算法的程序基础上修改,这个程序是雷英杰那个书上的的 %7.3求多元多峰函数优化的实例%%%%%%%%%%%%%,不会写目标函数???? %这个目标函数在遗传算法中不知道怎么写 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);%创建初始种群 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,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'). ![]() |
4楼2013-04-08 13:57:39







回复此楼
,FieldD);