首页> 中国专利> 一种基于有向图适应度评估的混合差分进化算法

一种基于有向图适应度评估的混合差分进化算法

摘要

本发明提供了一种基于有向图适应度评估的混合差分进化算法来解决一个同时结合了时间依赖转换时间、选择与调度结合和时间依赖收益特点的调度问题,包括编码及种群初始化、变异操作、交叉操作、选择操作,本发明所述的算法在能够在不同阶段循序渐进不断调整自身的值,具有优化性能;本发明在算例上取得的收益明显优于其他算法;本发明能够处理任何形式的转换时间表现形式,具有很强的灵活性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-04-26

    未缴年费专利权终止 IPC(主分类):G06Q10/06 专利号:ZL2014102107412 申请日:20140519 授权公告日:20170908

    专利权的终止

  • 2017-09-08

    授权

    授权

  • 2014-10-08

    实质审查的生效 IPC(主分类):G06Q10/06 申请日:20140519

    实质审查的生效

  • 2014-09-03

    公开

    公开

说明书

技术领域

本发明涉及一种用于解决时间依赖转换时间调度问题的基于有向图适应度评估的混合差分进化算法。

背景技术

订单受理与调度问题来源于面向订单生产的加工制造业。企业按照订单生产加工,可以满足用户个性化、差异化的产品定制需求,降低产品的库存成本,从而提高企业的竞争力。但与此同时,面向订单生产也给企业带来一定的挑战:客户的订单通常具有时效性,如果企业不能在用户期望的时间段内提交产品,则必然降低客户的满意度,长此以往将会损害企业的利益。而由于生产能力的限制,企业如果无法按期完成所有加工订单的生产,则必须从接收的订单中选择一部分进行生产并且为各订单安排加工时间。在企业中,受理订单通常是市场部门的工作,而生产加工则由生产部门负责。如果市场部门不考虑所受理的订单对生产部门工作的影响,则很容易造成订单过量、企业无法按期交付的情况发生。因此,订单的选择与生产调度必须统一考虑。在订单受理与调度问题中,同时存在选择和调度两个决策问题,工件延期加工会产生延期惩罚。时间依赖转换时间调度问题中工件不仅存在延期惩罚,还存在提早惩罚,并且还考虑了时间依赖的转换时间,时间依赖转换时间调度问题是在订单受理与调度问题的基础上,引入时间依赖转换时间以及提早-延期惩罚,非常复杂、难以求解。

差分进化算法是由Storn和Price于上世纪90年代年提出的一种简单而有效的随机优化算法,最初被设计用于实值优化问题,又有许多其他学者陆续对差分进化算法进行了改进,上述这些方法原本是为函数优化问题而设计,在函数优化问题上,有显著优异性,但在解决时间依赖转换时间调度问题上,通过初步实验表明该结论并不成立,针对不同的算例已有方法各有所长。因此,根据解决时间依赖转换时间调度问题的特点,设计除了具有针对性的求解算法。

发明内容

本发明的目的在于提供一种基于有向图适应度评估的混合差分进化算法来解决一个同时结合了时间依赖转换时间、选择与调度结合和时间依赖收益特点的调度问题。

为了实现上述目的,本发明的技术方案是: 

一种用于解决时间依赖转换时间调度问题的基于有向图适应度评估的混合差分进化算法,所述算法包括以下步骤:

步骤1).编码及种群初始化:采用位于0和1之间的实数作为编码方式,生成一组实值向量                                                ,其中:g表示第代种群,i表示第i个个体,每个向量构成一个染色体,每个实数表示工件的实际完工时间占整个时间窗口长度的比率,根据向量中的各实数预先确定对应工件的开工时间和完工时间,并且根据工件的开工和完工时间计算不同工件之间需要的转换时间;

种群初始化时使实值向量对应的工件完工时间初始化时在其交货期附近随机采样;

步骤2). 变异操作:从当前种群中随机选择三个个体,利用其中两个生成一个差分向量,再将差分向量乘以缩放因子之后加到第三个向量上,即得到一个向量,按如下操作:

其中,的初始值设为0.5,在每次迭代过程中,记录采用第一种和第二种变异操作生成成功进入下一代的个体个数分别为和,而不能进入下一代的个体个数记为和,当这两组数字积累50代之后,采用如下方式更新:

每次更新之后,将,,和置为0进入下一次统计过程。

步骤3).交叉操作:对当前种群中的目标向量和经变异操作生成的向量进行重组生成新的向量,按如下操作:

其中是0到1之间满足均匀分布的随机数,在每次调用时重新生成;是一个随机选择的索引以确保至少从经变异操作生成的向量中获得一位基因而不会与完全重复,对每个向量生成一次;是交叉概率。

步骤4).选择操作:若交叉操作后生成的向量小于或等于变异操作前向量,则在下一代中用交叉操作后生成的向量替换掉变异操作前向量;

所述算法其特征在于:采用有向图进行适应度评估,根据给定的实值向量,计算各工件的完工时间、开工时间和收益,将各工件按照开工时间升序排列,构建一个有向无环图,图中最长路径上的节点即为被安排加工的工件,路径的长度即为该实值向量对应的目标函数。

优点及有益效果:

1.       本发明所述的算法在能够在不同阶段循序渐进不断调整自身的值,具有优化性能;

2.       本发明在算例上取得的收益明显优于其他算法;

3.       本发明能够处理任何形式的转换时间表现形式,具有很强的灵活性。

附图说明

图1为本发明的基本流程图。

图2为构造有向图的工件示例图。

图3为有向图示例图。

具体实施方式

为便于具体描述,首先引入相关元素:

 待加工工件的数量;

 工件的释放时间,;

 工件需要的加工时间,;

 工件的交货期,;

 工件的截止期,;

 工件严格按照交货期完工所能获得的收益,;

 加工工件所能获得的实际收益,;

 工件的提前完工惩罚系数,;

 工件的延期完工惩罚系数,;

 工件的开工时间,;

 工件的完工时间,;

 工件的提早完工时间,;

 工件的延期完工时间,;

 机器在时刻完成对工件的加工至在时刻开始对工件加工之间需所要的转换时间,,,依赖与前一工件的完工时间和后一工件的开工时间。

单机环境下考虑时间依赖转换时间的调度问题(S-TDSTS)可以如下描述:存在个备选工件需要在在单机环境下加工,工件之间不存在偏序关系,机器在同一时刻最多只能加工一个工件,机器在加工任意两个工件之间可以存在空闲时刻。每个工件只要在其释放期之后才能开始加工,需要的加工时间为,如果刚好在其交货期时刻完工,则能够从该工件上获得的收益为。如果工件早于交货期完工,则称该工件提前完工,每提前1个时间单位完工收益减少,加工该工件获得的收益随着工件的提早完工线性递减;如果工件晚于交货期完工,则称该工件延期完工,每延期1个时间单位完工收益减少,加工该工件获得的收益随着工件的延期完工线性递减,如果完工时间超过了截止期,则加工该工件不会产生任何收益。工件的提早完工时间,延期完工时间,加工工件获得的收益与其完工时间之间的关系为:

问题的优化目标是最大化所有加工工件的收益之和。机器在连续加工任意两个工件之间需要的转换时间取决于前一工件的完工时间与后一工件的开工时间,即。

时间依赖转换时间的调度问题与订单受理与调度问题存在两点不同:一是工件不仅存在延期惩罚,还存在提早惩罚;二是考虑了时间依赖的转换时间。因此,本发明研究的问题的数学模型与订单受理与调度问题的数学模型并不完全相同。

引入0-1变量,,,,如果工件紧接着工件之后加工,则,否则;引入虚拟工件0和虚拟工件,分别表示早于所有其他真实工件加工的第一个工件和晚于所有其他真实工件加工的最后一个工件,,,,,,,,,,。OAS的数学模型如下:

s.t.

,,, (1)

,,, (2)

,(3)

,(4)

,(5)

,(6)

,(7)

,(8)

,(9)

,(10)

,(11)

, (12)

,(13)

,(14)

,,,,(15)

,(16)

;(17)

,;(18)

,,,;(19)

其中,(1)表示如果工件紧接着工件之后加工,则工件的完工时间加上转换时间,再加上工件的加工时间不大于工件的完工时间,如果工件并没有紧接着工件之后加工,则该约束不起作用,为0-1变量,,如果工件被选择加工,则,否则;(2)表示如果工件被选中加工,则工件的完工时间至少为该工件的释放期加上加工时间,如果工件的紧前加工工件为,则工件的完工时间至少为该工件的释放期加上工件到工件的转换时间再加上工件的加工时间,如果工件没有被选中加工则该约束不起作用,为0-1变量,,,,如果工件紧接着工件之后加工,则,否则;(3)表示如果一个工件被选中加工,则该工件的完工时间不晚于截止期;(4)和(5)表示工件的收益的计算方式;(6)、(7)和(8)确定了工件的提早完工时间的计算方式;(9)、(10)和(11)确定了工件的延期的计算方式;(12)确定了工件的完工时间等于加工时间加上开工时间;(13)和(14)限定了每个工件最多只有一个紧前工件和后序工件;(15)确定了时间依赖转换时间的计算方式;(16)限定了虚拟工件的完工时间;(17)设定虚拟工件0和必须完工;(18)和(19)设定和为0-1变量。

在时间依赖转换时间的调度问题中,时间依赖的转换时间的表现形式可以是一个数学公式,或者一张数据表,还可能是一段计算机程序。这种不确定的形式,使得该问题很难用传统的数学规划方法求解。本发明提出一种基于有向图适应度评估的混合差分进化的计算方法,该方法能够处理任何形式的转换时间表现形式,具有很强的灵活性。

基本的差分进化算法是于上世纪90年代年提出的一种简单而有效的随机优化算法,最初被设计用于实值优化问题。以最小化优化目标为例,一个优化问题可以表示为:

其中为目标函数,表示一组变量(向量),表示必须满足的一组约束,和分别表示问题的维度和约束的数量,、和分别表示实数集、等式约束索引集和不等式约束索引集。优化的目标是找到一个满足约束的向量,使得对所有其他满足约束的,恒成立。

差分进化算法是一种群体搜索算法,在求解优化问题时,首先随机生成一组向量,在算法的每次迭代过程中,针对种群中的每一个目标向量,采取变异操作生成一个变异向量,再对变异向量和目标向量采用交叉和选择操作生成新的个体进入下一代。

编码方式:

对于含有个工件的S-TDSTS问题,每个个体采用维实值向量表示,,。在初始化时,为0到1之间服从均匀分布的随机实数。表示从时刻点到完工时间持续的时间占时间窗口的比例。当给定了的值之后,可以确定在第代种群中第个个体的工件的完工时间。比如假设工件的释放期,加工时间,截止期,如果,则工件的完工时间。在这种表示方法中,每个工件的完工时间一直处在时间窗口内。

适应度评估:

(1)有向无环图的构建

当给定一个维实值向量之后,就可以通过来确定各工件的完工时间,进而可以确定加工各工件所能获得的收益。此时如果机器按照各工件的完工时间加工所有工件,则可能违反如下两个约束:一是机器在同一时刻只能加工一个工件;二是机器在加工不同工件之间需要一定的转换时间,该时间取决于前一工件的完工时间和后一工件的开工时间。

因此,在确定各工件完工时间的情况下需要从所有工件中寻找一个满足以上两个约束的可行子集,使得对任意一个其他可行子集,,成立。为寻找可行子集,采用如下步骤先建立一个有向无环图:

Step1. 根据给定的,计算各工件的完工时间、开工时间以及收益:,,,;

Step2. 将所有工件按照各自开工时间升序排列,设排序后的工件序列为,工件表示在中排在位置的工件,则,满足;

Step3. 设有向图,为顶点集合,为边集合,初始化设,。向中加入顶点0表示始点,加入顶点表示终点,再向中依次加入其他表示各工件的顶点,;

Step4. 对集合中所有,向中加入长度为的有向边和长度为0的有向边;

Step5. 对于,如果满足,则向中加入一条长度为的有向边;

注意到在Step5中,由于工件的完工工时间和工件的开工时间已经确定,因此不管时间依赖函数是以何种形式给出,都可以很方便的根据可以计算出时间依赖的转换时间。

下面以一个简单的示例说明该有向无环图的构造过程。假设存在四个工件,各工件的释放期、加工时间、截止期如下:

,,;

,,;

,,;

,,;

设给定的向量,可以计算出各工件的开工时间和完工时间:

,;

,;

,;

,;

假设依据完工时间计算出各工件的收益如下:

,,,;

将各工件按照加工开始时间升序排列如图2所示。将四个工件按照加工开始时间排序后的序列为1,2,3,4。假设转换时间,,。在构造有向图时,共有6个节点,其中节点0为源节点,从节点0到节点1,2,3,4各存在一条有向边,边的长度分别为1.5,3.2,0.7和2.6,从节点1,2,3,4到终点5也各存在一条有向边,长度均为0。检查工件1和位于其后加工的其它工件,由于,因此节点1和2之间不存在有向边,由于,,因此节点1和节点3,4分别存在一条有向边,长度分别为0.7和2.6;检查工件2和位于其后加工的其它工件,由于,因此节点2和节点3之间不存在边,由于,因此节点2和4之间存在一条长度为2.6的边;检查工件3和位于其后加工的其它工件,由于,因此节点3和节点4之间不存在边。最终形成的有向图如图3所示。

(2)最长路径算法

当依据给定的向量构造出有向无环图之后,从所有工件之中找出一个可行子集以最大化收益之和等同于从中寻找一条从源节点0至终节点的最长路径。这是因为当确定了各工件的加工开始时间和结束时间之后,该问题就变成了一个以最大化完工工件权重之和为目标的固定开工和完工时间非抢占式调度问题,这等同于从构造的有向无环图中寻找一条最长路径,路径的长度等于工件的权重。这里将所有边的长度乘以-1,采用Bellman-Ford最短路算法寻找从源点到终点的最短路,寻找到的最短路的绝对值即为中最长路径的长度,除了源点和终点之外,出现在路径中的节点即为被安排加工的工件。如图2中,粗线表示的路径0-2-4-5就是图中由源点0到终点5的最长路径,工件2和工件4是被安排加工的两个工件。

基于有向无环图的适应度评估:

(1)种群初始化

在函数优化问题中,通常要求初始种群中的个体均匀分布于搜索空间,初始种群第个个体的第维变量,其中表示生成0和1之间满足均匀分布的随机数,和分别为第维变量的下界和上界。当无法利用问题本身的先验知识时,采用完全随机的方式生成初始种群是一种很自然的方式。但是在S-TDSTS问题中,对于单个工件来说,希望其完工时间尽量靠近交货期,极端情况下,当问题中只有一个工件时,直接令该工件的完工时间等于交货期即为最优结果。 因此利用该先验知识,在GFEHDE中,采用如下初始化方式:

其中,为服从均值与标准差分别为和0.1的高斯随机数。该方法让个体中第个变量所对应的工件完工时间初始化时在其交货期附近随机采样。

(2)变异操作

JADE中采用DE/Current-to-pbest变异操作,既能够利用种群中优良个体的特性,又避免了DE/Current-to-best过于“贪婪”的变异方式。但是Yang认为,DE/Current-to-pbest无法让选择到种群中前之外的个体,这对于复杂的多峰值函数优化问题来说,显得不够具有鲁棒性。为此,Yang提出了一种DE/Current-to-lpbest方法,每次将种群中的个体随机分为组,,将每组中的最优个体作为lpbest个体。这种方法里,尽管仍然倾向选择较优的个体,但同时又使每个个体均有机会被选择。考虑到S-TDSTS是复杂的组合优化问题,难以确切知道哪种变异方式适合问题,这里借鉴SaDE的思想,让算法在搜索过程中从两种变异操作中自适应选择:

其中,的初始值设为0.5,在每次迭代过程中,记录采用第一种和第二种变异操作生成成功进入下一代的个体个数分别为和,而不能进入下一代的个体个数记为和,当这两组数字积累50代之后,采用如下方式更新:

每次更新之后,将,,和置为0进入下一次统计过程。

(3)交叉操作

试用向量的生成过程如下:

其中是0到1之间满足均匀分布的随机数,在每次调用时重新生成;是一个随机选择的索引以确保至少从中获得一位基因而不会与完全重复,对每个向量生成一次;是交叉概率, 

(4)参数调整

当统计样本数量小于某一阈值时,GFEHDE不采用自适应调整机制来设置和。GFEHDE采取如下方法调整参数:

(1)缩放因子:每次为目标个体生成一个位置和规模参数分别为和0.1的柯西随机数作为缩放因子:

其中,初始值设为0.5,设为在第代成功生成进入下一代个体的缩放因子集合,以后每次迭代后采用如下方法更新:

其中为0到1之间的常数,这里设为0.1。的初始值设为0.5,在每次迭代过程中,记录采用高斯随机数和柯西随机数生成成功进入下一代的个体个数分别为和,而不能进入下一代的个体个数记为和,当这两组数字积累50代之后,采用如下方式更新:

每次更新之后,将,,和置为0进入下一次统计过程。

(2)交叉概率:每次为目标个体生成一个均值和标准差分别为和0.1的高斯随机数作为交叉概率:

如果则重新生成,如果则令。设为在第代成功生成进入下一代个体的交叉概率集合,的初始值设为0.5,以后每次迭代采用如下方法更新:

其中为0到1之间的常数,设为0.1。

本发明所述的实施例仅仅是对本发明的优选实施方式进行的描述,并非对本发明构思和范围进行限定,在不脱离本发明设计思想的前提下,本领域中工程技术人员对本发明的技术方案作出的各种变型和改进,均应落入本发明的保护范围,本发明请求保护的技术内容,已经全部记载在权利要求书中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号