| 查看: 2952 | 回复: 7 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
dellluoluo金虫 (小有名气)
|
[求助]
求助:遗传算法的matlab编程求解资源优化问题
|
|
|
最近在研究项目资源优化问题,其中一个问题即工期固定,资源均衡问题,用遗传算法来做,使用matlab的遗传算法工具箱自己编程来实现,有详细的文献和例子,只做单资源的,需要将目标函数写成.m 文件, 遇到困难:目标函数是使得资源均衡,满足工序的合适开始时间即基因值 ,困难是基因值不体现在目标函数的显式表达式中,而是在约束条件中,不知道怎么处理? 如果有哪位虫友感兴趣并愿意提供帮助,将不胜感激!如果需要,我可以把例子附上。 |
» 猜你喜欢
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
物理学I论文润色/翻译怎么收费?
已经有108人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有23人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
» 本主题相关价值贴推荐,对您同样有帮助:
matlab优化报错
已经有8人回复
求助MATLAB中程序看不懂的简单问题!谢谢!
已经有3人回复
MATLAB求二次规划的最优解
已经有11人回复
求助算法优化试验怎么做?
已经有8人回复
关于有约束非线性函数的优化问题
已经有8人回复
有偿求助会用matlab对粒子群算法编程的同学
已经有5人回复
求解相算法的相关matlab程序块
已经有3人回复
matlab编程约束条件问题
已经有10人回复
matlab ga遗传算法 精度
已经有7人回复
matlab下用遗传算法求最小值的问题
已经有8人回复
请教下优化类的算法 处理带约束问题
已经有7人回复
求助 matlab做拓扑优化
已经有4人回复
求助:资源优化问题的遗传算法matlab编程
已经有5人回复
求粒子群优化算法进行变量优选的matlab程序
已经有20人回复
求助matlab编程
已经有13人回复
【分享】粒子群算法和遗传算法应用与改进实验框架
已经有42人回复
小小懵懂先森
金虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 1274.5
- 红花: 1
- 帖子: 253
- 在线: 23.8小时
- 虫号: 4096431
- 注册: 2015-09-23
- 性别: GG
- 专业: 海洋工程
8楼2017-05-29 19:35:35
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
csgt0: 金币+1, 谢谢 2013-04-10 16:58:40
dbb627: 2013-06-01 11:38:40
dellluoluo(dbb627代发): 金币+10 2013-06-01 11:39:10
csgt0: 金币+1, 谢谢 2013-04-10 16:58:40
dbb627: 2013-06-01 11:38:40
dellluoluo(dbb627代发): 金币+10 2013-06-01 11:39:10
|
其实我也不太看得懂你的需求,不过约束条件可以在区域描述器(Build field descriptor)时来约束变量范围。 因为我是用Sheffield大学的那个工具箱而不是matlab自带的,所以不太清楚matlab自带的是怎样用的,你也可以下sheffield大学的这个工具箱来看看,它自带例子,上手挺简单的 |
2楼2013-04-09 13:39:28
dellluoluo
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 1398.8
- 散金: 21
- 帖子: 146
- 在线: 238.1小时
- 虫号: 550976
- 注册: 2008-04-25
- 专业: 项目管理
3楼2013-04-10 21:04:04
dellluoluo
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 1398.8
- 散金: 21
- 帖子: 146
- 在线: 238.1小时
- 虫号: 550976
- 注册: 2008-04-25
- 专业: 项目管理
★
fegg7502: 金币+1, 鼓励交流 2013-04-11 10:38:27
fegg7502: 金币+1, 鼓励交流 2013-04-11 10:38:27
|
想得到您的相助! 下面是我的具体问题 %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 FieldDR = [rep([PRECI],[2,NVAR]);rep([esi(i);esi(i)+tfi(i)],[2,NVAR]);rep([1;0;1;1],[2,NVAR])];%这句不清楚是否有%问题? end; Chrom=crtrp(NIND,FieldDR);%创建初始实值种群 % gen = 0; trace=zeros(MAXGEN,2); ObjV= RLI;%%%%%%%%%%%%%%%%%%这个函数不会写? 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,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'). |
4楼2013-04-10 21:30:32













回复此楼
