[发明专利]一种求解多目标资源受限项目调度的有效方法在审

专利信息
申请号: 201410449558.8 申请日: 2014-09-04
公开(公告)号: CN104217293A 公开(公告)日: 2014-12-17
发明(设计)人: 吴亚丽;郭晓平;薛芬 申请(专利权)人: 西安理工大学
主分类号: G06Q10/06 分类号: G06Q10/06
代理公司: 西安弘理专利事务所 61214 代理人: 王奇
地址: 710048*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种求解多目标资源受限项目调度的有效方法,步骤包括:1)建立基于工期-成本优化的多目标资源受限项目调度数学模型;2)产生初始的可行调度序列;3)对调度序列进行评价;4)对调度序列进行更新;5)构造非支配解集操作;6)对外部归档集进行维护;7)更新迭代直至输出最优解集,即成。本发明的方法,每个智能体对应调度问题中的一个链表序列,对任务链表的调度序列和与其相对应的执行模式序列分别进行编码,采用串行方法进行解码操作,各链表序列之间通过竞争、交叉、自学习实现进化和更新;通过调整项目的调度计划,在满足时序约束和资源约束等的条件下,使得该控制周期内的工期和成本达到综合最优。
搜索关键词: 一种 求解 多目标 资源 受限 项目 调度 有效 方法
【主权项】:
一种求解多目标资源受限项目调度的有效方法,其特点在于,按照以下步骤实施:步骤1、建立基于工期‑成本优化的多目标资源受限项目调度数学模型假设项目中的工作数为J,每个工作j之间有着前后的时序约束,则有j=1,2,...,J,记Qj是紧接着工作j之前的集合,Hj是紧接着工作j之后的集合;设定最大迭代次数H,迭代次数初值h=1,工作1是最早开始的唯一一个工作,工作J是最晚完成的唯一一个工作;项目中可更新资源种类数为K,不可更新资源种类数为N,k=1,2,...K,n=1,2,...N,第k种可更新资源在各阶段的总供给量为第n种不可更新资源总量为每个工作有多种模式可供选择,工作j需选择Mj种模式之一进行操作,且在运行过程中不能中断或更改;工作j在第m种模式下运行时,m=1,2,...Mj,第k种可更新资源的需求量为第n种不可更新资源的需求量为运行时间为djm,正在运行的工作所用的资源总数不能超过资源的总供给量,以上各量值取整数,据此创建模型如下:<mfenced open='' close='' separators=' '><mtable><mtr><mtd><mi>min</mi></mtd><mtd><msub><mi>f</mi><mi>J</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><msub><mi>ED</mi><mi>J</mi></msub></mrow><msub><mi>LD</mi><mi>J</mi></msub></munderover><mi>t</mi><mo>&CenterDot;</mo><msub><mi>x</mi><mrow><mi>J</mi><mn>1</mn><mi>T</mi></mrow></msub><mo>;</mo></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mfenced>式(1)为目标之一,此目标是最小化项目总工期的表达式,式中[EDJ,LDJ]为工作J的最早和最晚完成时间段;t表示t阶段,xj1T是工作j在第一种模式下T阶段的完成状态,若完成则xj1T=1,否则xj1T=0;<mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>min</mi></mtd><mtd><msub><mi>c</mi><mi>J</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>J</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><msub><mi>c</mi><mi>jm</mi></msub><mo>;</mo></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>式(2)为目标之二,此目标是最小化项目成本的表达式,式中Mj表示的是工作j的执行模式数;cjm是工作j在模式m下的花费;J是项目的所有工作数;<mrow><mfenced open='' close=''><mtable><mtr><mtd><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo></mtd><mtd><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><msub><mi>ED</mi><mi>j</mi></msub></mrow><msub><mi>LD</mi><mi>j</mi></msub></munderover><msub><mi>x</mi><mi>jmt</mi></msub><mo>=</mo><mn>1</mn><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>J</mi><mo>;</mo></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>式(3)表示每个工作在一种模式下只能实现一次,式中xjmt表示的是工作j在第m种模式t阶段时执行的状态;[EDj,LDj]表示的是工作j的最早和最晚完成时间段;<mrow><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><msub><mi>ED</mi><mi>j</mi></msub></mrow><msub><mi>LD</mi><mi>j</mi></msub></munderover><mi>t</mi><mo>&CenterDot;</mo><msub><mi>x</mi><mi>imt</mi></msub><mo>&le;</mo><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><msub><mi>ED</mi><mi>j</mi></msub></mrow><msub><mi>LD</mi><mi>j</mi></msub></munderover><mi>t</mi><mo>&CenterDot;</mo><msub><mi>x</mi><mi>jmt</mi></msub><mo>-</mo><msub><mi>d</mi><mi>jm</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>J</mi><mo>,</mo><mi>i</mi><mo>&Element;</mo><msub><mi>Q</mi><mi>j</mi></msub><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>式(4)表示项目的紧前约束关系,ximt和xjmt分别是工作i和工作j在第m种模式t阶段时的执行状态;djm是工作j在第m种模式下的执行时间;<mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>J</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><msubsup><mi>r</mi><mi>jmk</mi><mi>&rho;</mi></msubsup><munderover><mi>&Sigma;</mi><mrow><mi>q</mi><mo>=</mo><mi>max</mi><mo>{</mo><mi>t</mi><mo>,</mo><msub><mi>ED</mi><mi>j</mi></msub><mo>}</mo></mrow><mrow><mi>min</mi><mo>{</mo><mi>t</mi><mo>+</mo><msub><mi>d</mi><mi>jm</mi></msub><mo>-</mo><mn>1</mn><mo>,</mo><msub><mi>LD</mi><mi>j</mi></msub><mo>}</mo></mrow></munderover><mo>&le;</mo><msubsup><mi>R</mi><mi>k</mi><mi>&rho;</mi></msubsup><mo>,</mo><mi>k</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>K</mi><mo>,</mo><mi>t</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mover><mi>D</mi><mo>&OverBar;</mo></mover><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>式(5)是不等式约束,保证了各工作使用的可更新资源量不超过该阶段的总供给量,为第k种可更新资源的需求量,为第k种可更新资源在各阶段的总供给量,为工期上限;<mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>J</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><msub><mi>M</mi><mi>j</mi></msub></munderover><msubsup><mi>r</mi><mi>jmn</mi><mi>v</mi></msubsup><munderover><mi>&Sigma;</mi><mrow><mi>t</mi><mo>=</mo><msub><mi>ED</mi><mi>j</mi></msub></mrow><msub><mi>LF</mi><mi>j</mi></msub></munderover><msub><mi>x</mi><mi>jmt</mi></msub><mo>&le;</mo><msubsup><mi>R</mi><mi>n</mi><mi>v</mi></msubsup><mo>,</mo><mi>n</mi><mo>=</mo><mn>1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mi>N</mi><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>式(6)是保证所有工作使用的不可更新资源量不能超过整个项目总的供给量,为第n种不可更新资源的需求量,为第n种不可更新资源总量;xjmt={0,1},j=1,2,...,J,m=1,2,...,Mj,t=EDj,...,LDj;        (7)式(7)是模型中相关变量的取值范围,xjmt表示工作j在第m种模式下的完成状态,若完成则有xjmt=1,否则xjmt=0;步骤2、产生初始的可行调度序列项目中的每个工作由两部分组成,即:<mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>S</mi><mi>i</mi></msub></mtd></mtr><mtr><mtd><msub><mi>M</mi><mi>i</mi></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>j</mi><mn>1</mn></msub><mo>,</mo><msub><mi>j</mi><mn>2</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>j</mi><mi>J</mi></msub></mtd></mtr><mtr><mtd><msub><mi>m</mi><mn>1</mn></msub><mo>,</mo><msub><mi>m</mi><mn>2</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>m</mi><mi>J</mi></msub></mtd></mtr></mtable></mfenced><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>其中,Si=j1,j2,...jJ,Si是第i个任务链表中满足时序约束的调度序列,是项目中各个工作的执行顺序表;Mi=m1,m2,...,mJ,Mi是该任务链表中各任务所对应的模式序列,项目中的模式序列与调度序列是一一对应的,在执行过程中随机生成S所对应的模式M,并保证生成的模式数不大于该工作的总模式数,由时序约束确定工作j的紧前工作集pj和紧后工作集sj,用邻接矩阵G=[gij]J×J表示工作间的紧前紧后关系,其中当i∈Pj时,gi,j=1,否则gi,j=0;初始化项目调度序列S和已执行工作序号s1=1,令Job为空向量,k=1,检索存储邻接矩阵的sh行,查找入度为1的工作集合,加入Job序列中,从Job中删除具有最高优先权的一个工作序号u,并将该序号u赋给sh+1,同时邻接矩阵中元素aiu(i=sh+1)减1,令k=k+1,若k<J,则继续计算,否则输出S;步骤3、对调度序列进行评价根据项目生成的调度序列S和模式序列M,通过串行方案进行解码操作,令Tst表示项目的开始时间,Ti=ti1,ti2,...,tij,...,tiJ和Ci=ci1,ci2,...,cij,...,ciJ分别表示经过编码得到的第i个链表中相对应工作的开始时间和成本,判断工作在其执行模式下是否存在资源冲突,找到该链表的最早完成时间tiJ=max{tij+djm}和所对应的成本ciJ=∑cjm;步骤4、对调度序列进行更新采用多智能体进化算法对调度序列进行更新,通过与其邻域中工作的竞争、交叉、自学习三种操作方式完成更新;步骤5、构造非支配解集操作;步骤6、对外部归档集进行维护;步骤7、更新迭代次数h=h+1,如果h<J,则继续重复步骤2到步骤6,否则输出Pareto最优解集,即成。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安理工大学,未经西安理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410449558.8/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top