24小时热门版块排行榜    

查看: 2274  |  回复: 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 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +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值就会让这些'非优良'个体避免遗传给下一代.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-04-02 18:37:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellluoluo

金虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2013-04-02 18:37:53
GA都一个流程,约束一般都跟penalty function有关系,如果不满足约束条件,增加penalty值就会让这些'非优良'个体避免遗传给下一代.

谢谢你的关注,可我还是不太清楚怎么做,我给你发了消息!
3楼2013-04-03 10:46:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellluoluo

金虫 (小有名气)

想得到您的相助!

%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     FitnV=ranking(ObjV);
    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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dellluoluo

金虫 (小有名气)

补充:我这个问题创建初始种群想用实数编码,原来我弄错了,更正,有没有虫友愿意帮忙啊
5楼2013-04-10 21:14:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

张金星

新虫 (初入文坛)

内容已删除
6楼2015-11-21 22:10:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dellluoluo 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +10 majunge000 2026-08-11 12/600 2026-08-16 08:18 by xli1984
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +7 Ldrop2023 2026-08-13 7/350 2026-08-15 15:57 by mzhh2000
[基金申请] 关于Filecode分析方法 +10 majunge000 2026-08-10 13/650 2026-08-15 12:26 by hanpeng972
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 22/1100 2026-08-14 23:45 by Noways
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +23 Lanmanbaby 2026-08-09 37/1850 2026-08-14 13:40 by Equinoxhua
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 32/1600 2026-08-14 09:37 by 要乐观耀哥
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +10 家与远方 2026-08-10 15/750 2026-08-14 02:08 by 绵羊哥哥
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
信息提示
请填处理意见