24小时热门版块排行榜    

查看: 1993  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂,总分315,考的生物医药,一志愿湖南师范大学。调剂到任何专业都可以 +4 小丁想进步 2026-03-11 5/250 2026-03-17 16:05 by 外星文明
[考研] 271求调剂 +12 生如夏花… 2026-03-11 14/700 2026-03-17 10:56 by lovewei0727
[考研] 289求调剂 +6 步川酷紫123 2026-03-11 6/300 2026-03-17 10:23 by Sammy2
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +5 Liwangman 2026-03-15 5/250 2026-03-16 17:10 by 我的船我的海
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
[考研] 材料与化工一志愿南昌大学327求调剂推荐 +7 Ncdx123456 2026-03-13 8/400 2026-03-16 12:15 by karry wen
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 294求调剂 +3 Zys010410@ 2026-03-13 4/200 2026-03-15 10:59 by zhq0425
[考研] 材料与化工 323 英一+数二+物化,一志愿:哈工大 本人本科双一流 +4 自由的_飞翔 2026-03-13 5/250 2026-03-14 19:39 by hmn_wj
[考研] 【0703化学调剂】-一志愿华中师范大学-六级475 +5 Becho359 2026-03-11 5/250 2026-03-14 11:35 by 哦哦123
[考研] 材料与化工求调剂一志愿 985 总分 295 +8 dream…… 2026-03-12 8/400 2026-03-13 22:17 by 星空星月
[考研] 材料工程调剂 +9 咪咪空空 2026-03-12 9/450 2026-03-13 22:05 by 星空星月
[考研] (081700)化学工程与技术-298分求调剂 +12 11啦啦啦 2026-03-11 35/1750 2026-03-13 21:25 by JourneyLucky
[考研] 求调剂 +7 18880831720 2026-03-11 7/350 2026-03-13 16:10 by JourneyLucky
[考研] 307求调剂 +5 超级伊昂大王 2026-03-12 5/250 2026-03-13 15:56 by 棒棒球手
[论文投稿] 投稿问题 5+4 星光灿烂xt 2026-03-12 6/300 2026-03-13 14:17 by god_tian
[考研] 0817化学工程与技术考研312分调剂 +3 T123 tt 2026-03-12 3/150 2026-03-13 10:49 by houyaoxu
[考研] 290求调剂 +3 ADT 2026-03-13 3/150 2026-03-13 10:19 by peike
[考研] 化工学硕306求调剂 +9 42838695 2026-03-12 9/450 2026-03-13 10:16 by houyaoxu
信息提示
请填处理意见