一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

优化装置、优化方法和记录介质与流程

2021-12-07 21:43:00 来源:中国专利 TAG:


1.本文中的公开内容涉及优化装置、优化方法和优化程序。


背景技术:

2.资源约束的项目调度问题是组合优化方面的问题。资源约束的项目调度问题涉及对多个任务和多个资源施加约束的情况,并且要求在满足约束的同时将多个资源分配给多个任务,使得项目的持续时间短于目标优化时段。资源约束的项目调度问题中使用的目标函数的一个示例是项目完成时间(即,所有任务完成的时间)。使最大完成时间(makespan)最小化的问题称为最大完成时间最小化问题。
3.因此,在资源约束的项目调度问题中可能存在以下需求:提供一种在短时间内以高准确性获得最大完成时间最小化问题的近似解的方法。
4.[相关技术文献]
[0005]
[专利文献]
[0006]
[专利文献1]日本公开特许公报第2018

185639号。
[0007]
[专利文献2]日本公开特许公报第11

195066号。


技术实现要素:

[0008]
[本发明要解决的问题]
[0009]
根据实施方式的一个方面,一种用于重复获得资源约束的项目调度问题中的违反约束的解、满足约束的解和近似解的优化装置,其包括存储器和耦接至存储器的一个或更多个运算电路,所述一个或更多个运算电路被配置成执行:将目标优化时段的结束时间设置在第一完成时间与第二完成时间之间的时间点处,然后通过使用元启发式算法获得近似解,所述第一完成时间等于最新版本的违反约束的解的完成时间,所述第二完成时间等于最新版本的满足约束的解的完成时间;做出有关近似解是违反约束还是满足约束的确定;基于所述确定,当近似解违反约束时执行使用近似解的完成时间更新第一完成时间,以及当近似解满足约束时执行使用近似解的完成时间更新第二完成时间;其中,在更新第一完成时间和第二完成时间的同时重复获得近似解。
附图说明
[0010]
图1是示出用于执行优化方法的优化装置的硬件配置的示例的图;
[0011]
图2是示出优化装置的功能配置的示例的图;
[0012]
图3是示意性地示出资源约束的项目调度问题的示例的图;
[0013]
图4是示出图3所示的资源约束的项目调度问题的基于二进制变量的模型的示例的图;
[0014]
图5是示出在优化处理中使用并且基于松弛解和最佳解生成的输入数据的示例的图;
[0015]
图6是示出通过使用对生成的近似解进行指示的数据来更新松弛解数据和最佳解数据中的任一者的图;
[0016]
图7是示出近似方法的过程的示例的流程图;
[0017]
图8是示出生成松弛解的过程的示例的流程图;
[0018]
图9是示出任务列表的示例的图;
[0019]
图10是示出对资源约束的项目调度问题进行限定的模型的初始状态的示例的图;
[0020]
图11是示出在分配一个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图;
[0021]
图12是示出在分配两个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图;
[0022]
图13是示出在分配三个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图;
[0023]
图14是示出在分配四个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图;
[0024]
图15是示出在分配五个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图;以及
[0025]
图16是示出在分配六个任务之后观察到的对资源约束的项目调度问题进行限定的模型的状态的图。
具体实施方式
[0026]
在诸如资源约束的项目调度问题的组合优化问题中,搜索空间的维数的增加导致变量组合数的爆炸性增加。在这种情况下,使用计算所有可能的组合的穷举搜索需要很长的计算时间,这实际上是不可行的。因此,替代寻找真正的最优解,可以使用基于启发式方法的通用近似算法(即,元启发式算法),或者可以使用在实际可行的计算时间内获得良好近似解的近似算法。
[0027]
如果给定足够长的计算时间,元启发式算法可以通过从初始状态开始来搜索相继获得较小目标函数值的解的状态转换来获得最优解或足够接近最优解的解。然而,在实际可行的计算时间内并不总是容易获得足够接近最优解的解。
[0028]
用于执行作为一类元启发式算法的模拟退火的装置的示例包括使用伊辛能量函数的伊辛机器(即玻尔兹曼机器)。在伊辛机器中,待要解决的问题被表示为使用二进制变量的伊辛模型。为了使得伊辛机器能够通过使表示资源约束的项目调度问题的模型公式化来获得近似解,可以将关于多个任务和多个资源的各种约束并入目标函数中,并且然后,目标函数可以最小化以获得解。然而,在伊辛模型中存在的问题在于,难以直接使最大完成时间最小化问题公式化。
[0029]
用于将最大完成时间最小化问题间接合并入伊辛模型中的一种方法是使用表示为二进制变量的辅助变量的方法。即,例如,引入n个二进制变量y
i
(i=1至n),并且这些n个二进制变量用于表示值c=y1 2y2 3y3 4y4

ny
n
。使用伊辛机器以在满足“所有任务的完成时间<c”和“仅y
i
中的一个是1”的约束时最小化目标函数c的值使得能够获得最大完成时间最小化问题中的近似解。然而,使用这种方法会使组合优化中的搜索空间的维数增加n,
11实现。数据存储单元20的功能可以由图1所示的ram 15或hdd 16来实现。元启发式计算单元24的功能可以由图1所示的cpu 11或元启发式计算单元19来实现。
[0040]
可以注意,以框示出的功能块之间的边界指示功能边界,并且不一定对应于程序模块之间的边界或控制逻辑方面的分隔。一个功能块和另一功能块可以组合成用作一个块的一个功能块。一个功能块可以被划分成协同操作的多个功能块。
[0041]
数据存储单元20在其中存储任务信息数据库(任务信息db)20a、资源信息数据库(资源信息db)20b、松弛解数据20c和最佳解数据20d。
[0042]
数据获取单元21在任务信息数据库20a和资源信息数据库20b中存储从外部源提供以限定资源约束的项目调度问题的关于各个任务的数据和关于各个资源的数据。关于各个任务和各个资源的约束的数据也可以存储在任务信息数据库20a和资源信息数据库20b中。
[0043]
图3是示意性地示出资源约束的项目调度问题的示例的图。图3中所示的资源约束的项目调度问题被限定为使得针对产品a和产品b中的每一个的任务#1至任务#3以及针对产品c的任务#1和任务#2被分配至四个设施1至4。在这种资源约束的项目调度问题中的最大完成时间最小化问题是以下问题:该问题要求所有的任务都被调度例如用以使项目完成时间tms(即,最后完成的任务的完成时间)尽可能地早。
[0044]
在资源约束的项目调度问题中,可以对多个任务和多个资源施加各种约束。在图3所示的示例中,例如,指示为“不可用”的时间段是指其中所指示的设施不能用于执行任务的时间段。以这种方式,可以对资源可用时间施加约束。此外,可以施加作为任务顺序上的约束的约束,使得对于给定产品的任务#1、#2和#3可能需要以指定的顺序执行,而在时间上彼此不交叠。此外,可以对任务与资源之间的对应关系施加约束,例如,特定任务仅可以由特定资源执行的要求,并且可以对各个任务的可允许开始时间和所需完成时间施加约束。
[0045]
图4是示出图3所示的资源约束的项目调度问题的基于二进制变量的模型的示例的图。为了使图2所示的元启发式计算单元24用作伊辛机器以执行公式化为伊辛模型的优化处理,将资源约束的项目调度问题公式化为基于二进制变量的模型,在该模型上执行优化处理。如图4所示的基于二进制变量的模型不仅适用于由伊辛机器执行的优化处理,而且还适用于由不同的元启发式算法执行的优化处理。
[0046]
为了使图3所示的资源约束的项目调度问题的基于二进制变量的模型公式化,可以限定二进制变量x
jmt
。下标j标识任务,下标m标识资源,以及下标t标识时间。例如,针对产品a的任务#1由任务j=1标识,给设施1的分配由资源m=1标识,以及时间8:30由时隙号1标识。对于j=1、m=1和t=1,x
jmt
的值变为1(即x
111
=1)的事实表示以下事实:针对产品a的任务#1通过使用设施1在时间8:30开始。
[0047]
图4所示的表的每一行表示时间(通过以30分钟为单位的时隙表示时间),以及每一列表示任务与设施之间的组合。例如,列31示出了变量x
11t
在时间t处的值,该变量x
11t
限定了以下事实:针对产品a的任务#1被分配给设施1。针对产品a的任务#1通过使用设施1在时间8:30开始,使得x
11t
的值仅在与时间8:30相对应的时隙中呈现“1”(即,x
111
=1),并且在任何其他时隙中呈现“0”。
[0048]
作为任务j的值,针对产品a的任务#k可以由任务j=k标识,针对产品b的任务#k可以由任务j=3 k标识,以及针对产品c的任务#k由任务j=6 k标识。例如,用于表示以下事
实的变量是x
51t
:针对产品b的任务#2被分配给设施1。根据这种布置,图4中所示的列从左至右对应于下面的变量:x
11t
、x
12t
、x
13t
、x
14t
、x
21t
、x
22t
、x
23t
、x
24t
、x
31t
、x
32t
、x
33t
、x
34t
、x
41t
、x
42t
、x
43t
、x
44t
、x
51t
、x
52t
、x
53t

……
、x
74t
、x
81t
、x
82t
、x
83t
、x
84t
。变量x
51t
对应于列32,并且仅在时间10:30时呈现值“1”,这表示以下事实:针对产品b的任务#2通过使用设施1在时间10:30时开始。可以注意,与时间10:30相对应的时隙是由时间t=5标识的第五时隙,因此x
515
=1。
[0049]
完成每个任务所需的时间长度(即,所需时间)不是由变量x
jmt
的值限定的。替代地,用于表示每个任务所需时间的常数是单独限定的。如稍后将描述的,该常数用于操纵下标t,从而允许指定关于所需时间的条件。
[0050]
在下面,将给出通过使用在上述示例中描述的二进制变量x
jmt
使资源约束的项目调度问题公式化的示例的描述。为了使资源约束的项目调度问题公式化,可以通过二进制变量x
jmt
来限定在由元启发式计算单元24执行的优化处理中要最小化的目标函数。
[0051]
为了指定关于二进制变量x
jmt
的各种约束,限定了下面的常数。
[0052]
jt
j
:针对任务j的所需时间的时隙数,
[0053]
jst
j
:针对任务j的可允许开始时间的时隙的序列号,
[0054]
jdt
j
:针对任务j的完成时间的时隙的序列号,
[0055]
c
k
:针对约束项qk的权重。
[0056]
此外,限定了下面的集合。
[0057]
j:任务j的集合,
[0058]
m:资源m的集合,
[0059]
t:经历优化的时隙的集合,
[0060]
mt
m
:可分配给资源m的时隙的集合
[0061]
m_job
m
:可以由资源m执行的任务的集合
[0062]
pre:各自包括任务jp、任务jn和等待时间wait的组合的集合(即,任务以及等待时间的组合的集合,其中对于该等待时间,在任务jp开始后在时间wait结束时发生任务jn的开始)。
[0063]
基于这些常数和集合,将目标函数e公式化为约束项qk乘以相应的权重因子ck的加权和,如下所示。
[0064]
e=c1q1 c2q2 c3q3 c4q4 c5q5 c6q6 c7q7
[0065][0066][0067]
[0068][0069][0070][0071][0072]
在以上示出的每个约束项中,在未限定求和范围的情况下,关于时隙t的求和符号∑意指获得在经历优化的时隙的集合t上的和。
[0073]
约束项q1限定了以下约束:在预设开始时间处或在预设开始时间后开始每个任务(其中,任务j的开始时间是时隙序列号jst
j
)。获得——满足在时隙序列号jst
j
之前发生开始的条件的——二进制变量x
jmt
的和,使得当经历求和的x
jmt
的值变为1时,目标函数e的值由于惩罚而增加。
[0074]
约束项q2限定了以下约束:每个任务都通过预设完成时间完成(其中,任务j的完成时间是时隙序列号jdt
j
)。获得——满足在时隙序列号jdt
j

jt
j
(即,完成时间

需要的时间=需要的开始时间)后发生开始的条件的——二进制变量x
jmt
的和,使得当经历求和的x
jmt
的值变为1时,目标函数e的值由于惩罚而增加。
[0075]
约束项q3限定了以下约束:在资源可用时间之外的时间(即,属于由可分配给资源m的时隙构成的集合mt
m
的补集的时间)期间不使用资源。针对属于由可分配给资源m的时隙构成的集合mt
m
的补集的时隙序列号来获得二进制变量x
jmt
的和,使得当经历求和的x
jmt
的值变为1时,目标函数e的值由于惩罚而增加。
[0076]
约束项q4限定了以下约束:仅可分配给资源的任务(即,属于由资源m可执行的任务构成的集合m_job
m
的任务)被分配给这样的资源。针对属于由资源m可执行的任务构成的集合m_job
m
的补集的任务来获得二进制变量x
jmt
的和,使得当经历求和的x
jmt
的值变为1时,目标函数e的值由于惩罚而增加。
[0077]
约束项q5限定了以下约束:每个任务仅执行一次。包括在约束项q5中的平方项是通过将指定特定任务j的二进制变量x
jmt
的针对所有资源m和所有时隙t获得的和减去1而获得的数的平方。当x
jmt
的值对于所有资源m和所有时隙t仅变为1一次时,该平方项变为0。在其他情况下,平方项呈现大于0的值,使得目标函数e的值由于惩罚而增加。
[0078]
约束项q6限定了以下约束:没有资源被同时分配给两个或更多个任务。相对于给定的资源m,当任务j在时隙t开始时,变量x
jmt
呈现值1,以及当另一任务j'在时隙t与时隙t之后的任务j的所需时间jt
j
的结束之间的时段t'期间开始时,变量x
j'mt'
呈现值1,这导致这两个变量的乘积变为1。在这些乘积的和被合并入目标函数中情况下,将两个或更多个任务同时分配给给定的资源会导致目标函数e的值由于惩罚而增加。
的解。替选地,满足约束中的一部分(例如,前面描述的约束项q1至q7中的一些约束项)的解可以被限定为满足约束的解,而不满足约束中的这样的部分的解可以被限定为违反约束的解。在这种情况下,应当由满足约束的解满足的约束中的这样的部分可以是需要满足的约束或重要的约束,并且可以根据问题的配置来限定。例如,每个任务仅执行一次的条件和在可用时间之外不使用资源的条件可能是重要的。在这种情况下,满足这两个条件(即,q3=q5=0)的解可以被视为满足约束的解,而不满足这些条件的解可以被视为违反约束的解。
[0089]
松弛解生成单元22可以基于元启发式算法生成松弛解。在这样做时,可以相对于一个或更多个约束项将权重因子c
k
设置成零,所述一个或更多个约束项例如是包括在前面描述的目标函数e中的约束项qk的一部分,并且限定除约束的一部分(例如,要求每个任务仅执行一次的约束项q5)以外的一个或更多个条件。然后,通过最小化目标函数获得近似解。利用这种布置,可以获得违反约束的解,对于所述违反约束的解,例如,要求在资源可用时间之外不使用资源的约束项q3呈现大于零的值(即,在资源不可用时间期间使用资源)。
[0090]
松弛解生成单元22可以通过使用确定性算法而不是通过使用元启发式算法来生成松弛解。通常,设计一种元启发式算法,使得在满足约束的同时,使用概率因子逐渐减小目标函数值,而不会陷入不利的局部解,从而生成满意解。松弛解生成单元22足以在不考虑任何约束的情况下生成解。因此,忽略约束的确定性算法可以容易地生成松弛解。使用确定性算法使得能够以有效的方式容易地获得松弛解的初始值。
[0091]
基于存储在数据存储单元20中的数据,优化数据生成单元23生成在由元启发式计算单元24执行的优化处理中使用的输入数据。由优化数据生成单元23生成的输入数据包括目标优化时段的结束时间,所述目标优化时段用于由元启发式计算单元24执行的优化处理。目标优化时段的结束时间等于属于经历优化处理的时隙的集合t的最后时隙的序列号,所述序列号是结合先前描述的资源约束的项目调度问题的模型公式化描述的常数之一。如稍后将描述的,该时间是基于松弛解数据20c和最佳解数据20d获得的。具体地,目标优化时段的结束时间设置在由松弛解数据20c指示的松弛解的结束时间与由最佳解数据20d指示的最佳解的完成时间之间。
[0092]
图5是示出在优化处理中使用的并且基于松弛解和最佳解生成的输入数据的示例的图。在图5中,为了便于说明,仅示出对针对产品a的任务#1至#3(即,任务a1至a3)进行指示的数据,并且松弛解数据20c和最佳解数据20d存储在数据存储单元20中。
[0093]
松弛解数据20c指定基于使用先前描述的二进制变量x
jmt
的模型的松弛解的状态。同样,最佳解数据20d指定基于使用二进制变量x
jmt
的模型的最佳解的状态。在图5中,通过使用类似于图4的表格格式的表格格式来示出变量x
jmt
的值的阵列,以便使得能够直观识别解的状态。在示出松弛解数据20c和最佳解数据20d的表格中,以点阴影突出显示的时间时段指示其间不可使用所指示的资源的时段。
[0094]
在图5所示的示例中,根据是否满足先前描述的约束项q3——即,是否仅在资源可用时间期间使用所指示的资源——对满足约束的解与违反约束的解进行区分。在图5所示的松弛解的表格中,通过使用设施3开始任务a3(即,针对产品a的任务#3)的时间是10:00,在所述时间10:00时,不可以使用设施3。即,该松弛解是违反约束的解,对于所述解,前面描述的约束项q3的值大于零(即,在资源不可用时间期间使用资源)。在最佳解的表格中,调度任务不包括在资源不可用时间期间执行的任何任务,因此该解满足由约束项q3表示的约
束。即,该最佳解是满足约束的解,对于所述解,前面描述的约束项q3的值为零(即,仅在资源可用时间期间使用资源)。
[0095]
在图5中,包括在松弛解中的任务中的最后完成的任务的完成时间是松弛解的完成时间t1。此外,包括在最佳解中的任务中的最后完成的任务的完成时间是最佳解的完成时间t2。在该示例中,完成时间t1的时隙序列号为9,并且完成时间t2的时隙序列号为15。
[0096]
如图5所示,优化数据生成单元23基于存储在数据存储单元20中的松弛解数据20c和最佳解数据20d生成用于优化处理的输入数据41。输入数据41表示经历基于使用二进制变量x
jmt
的模型的优化处理的任务、设施和时隙。输入数据41限定问题的配置,其中,进行调度以在特定时隙将任务分配给设施。在图5中,通过使用类似于图4的表格格式的表格格式来示出变量x
jmt
的值的阵列,以便使得能够直观识别变量的状态。输入数据41限定了:优化处理要被执行,使得在8:30处的时隙序列号0与15:00处的时隙序列号13之间将三个任务分配给三个设施。可以注意,如前面描述的经历优化处理的时隙的集合t相应地包括从8:30到15:00的时隙作为集合的元素。
[0097]
优化数据生成单元23生成输入数据41,使得输入数据41的最后时隙的时间(即,目标优化时段的结束时间)位于上述松弛解的完成时间t1与最佳解的完成时间t2之间。这样,在完成时间t1与完成时间t2之间的间隔可以以预定比率(例如,1:1)划分,使得目标优化时段的结束时间设置在划分点处。根据预定比率设置目标优化时段的结束时间能够实现以有效方式生成输入数据41的简单处理。基于如上所述生成的输入数据41,元启发式计算单元24执行以下将描述的优化处理。
[0098]
通过再次参照图2,元启发式计算单元24基于由优化数据生成单元23配置的数据执行启发式优化处理,从而生成使所设计的目标函数的值最小化的近似解。在执行优化处理时,调度任务,使得任何给定任务的完成时间不晚于由优化数据生成单元23设置的目标优化时段的结束时间。即,例如,当目标优化时段的结束时间被设置到15:00处的时隙时,优化处理仅评估其中所有任务在15:00的时隙之前或在15:00的时隙时完成的那些调度。这是通过将经历优化处理的时隙的集合t中的最后时隙设置到目标优化时段的结束时间来实现的。由元启发式计算单元24生成的近似解有时可以是违反约束的解,并且有时可以是满足约束的解,这取决于包括目标优化时段的结束时间的各种条件。
[0099]
由解更新单元26使用由元启发式计算单元24生成的违反约束的解或满足约束的解来更新松弛解数据20c或最佳解数据20d,如稍后将详细描述的。具体地,解更新单元26在违反约束的解出现时使用指示违反约束的解的数据替代松弛解数据20c,并且在满足约束的解出现时使用指示满足约束的解的数据替代最佳解数据20d。以这种方式,重复地执行通过元启发式计算单元24的优化处理计算近似解,并且通过解更新单元26更新松弛解数据20c和最佳解数据20d,从而连续地更新解。
[0100]
在下面,将更详细地描述上述解的更新。
[0101]
优化数据生成单元23和元启发式计算单元24用作优化处理单元30。优化处理单元30基于任务信息数据库20a、资源信息数据库20b、松弛解数据20c和最佳解数据20d对资源约束的项目调度问题执行优化处理,以生成近似解。具体地,优化处理单元30将目标优化时段的结束时间设置在第一完成时间(即前一违反约束的解的完成时间)与第二完成时间(即前一满足约束的解的完成时间)之间的时间点处,接着通过使用元启发式算法获得近似解。
即,优化处理单元30将目标优化时段的结束时间设置在由最新松弛解数据20c指示的解的完成时间(即,第一完成时间)与由最后最佳解数据20d指示的解的完成时间(即,第二完成时间)之间的时间点处,接着通过使用元启发式算法获得近似解。
[0102]
在此,术语“近似解”是指不保证出现用于优化的目标函数的最小值的解,并且可以被视为对使目标函数最小化的最优解的适当近似。为了使优化处理单元30获得近似解,优化处理在搜索空间中进行连续的状态转换,例如用以随机地减小目标函数的值。在转换了预先确定的预定次数时,在该实例中观察到的状态可以被输出作为近似解。替选地,优化处理单元30可以在预先确定的预定持续时间内执行优化处理,并且然后,可以输出在该实例中观察到的状态作为近似解。替选地,优化处理单元30可以检测其中优化处理的值变得小于或等于预先确定的预定值的事件,并且然后可以输出在该实例中观察到的状态作为近似解。
[0103]
当第一次执行基于松弛解数据20c的完成时间和最佳解数据20d的完成时间执行的优化处理时,相应初始值数据被用作松弛解数据20c的完成时间和最佳解数据20d的完成时间。用作第一松弛解数据20c的初始值是由如先前描述的松弛解生成单元22生成的松弛解数据20c。
[0104]
为了提供用于最佳解数据20d的初始值,优化处理单元30可以生成满足约束的解。当提供用于最佳解的初始值时,可以将目标优化时段的结束时间设置成足够大的值(即,足够晚的时间点),所述足够大的值从为任务进行时间调度的观点来看是可行和明智的。此外,在优化处理中,可以将针对包括在用于优化的目标函数中的相关约束的权重因子设置成足够大的值,从而确保一定获得满足约束的解。替选地,优化处理中使用的解搜索空间可被限制为满足约束的空间,使得仅当下一个状态满足约束时才可以允许在优化处理中进行的状态转换。对由优化处理单元30首先生成的满足约束的解进行指示的数据被存储为数据存储单元20中的最佳解数据20d的初始值数据。
[0105]
当优化处理单元30生成近似解作为解更新处理的一部分时,解检查单元25确定由优化处理单元30生成的近似解是违反约束的解还是满足约束的解。这样,解检查单元25可以确定满足所有约束(例如,先前描述的所有约束项q1至q7)的解是满足约束的解,并且可以确定不满足约束中的至少一些约束的解是违反约束的解。替选地,解检查单元25可以确定满足多个约束中的预定约束的近似解是满足约束的解,并且可以确定不满足这些预定约束的近似解是违反约束的解。更具体地,解检查单元25可以确定满足先前描述的约束项q1至q7中的预定约束项的解是满足约束的解,并且可以确定不满足这些预定约束项中的至少一些约束项的解是违反约束的解。
[0106]
响应于是否满足预定约束来确定解的类型实现了响应于问题的配置并且反映各个约束的重要性等的适当解确定,从而实现了用于最大完成时间最小化问题的有效解搜索处理。通常,当由优化数据生成单元23设置的目标优化时段的结束时间早时,获得的近似解很可能是违反约束的解。当由优化数据生成单元23设置的目标优化时段的结束时间晚时,获得的近似解很可能是满足约束的解。
[0107]
基于由解检查单元25进行的确定,解更新单元26在近似解是违反约束的解时通过使用近似解的完成时间来更新第一完成时间,并且在近似解是满足约束的解时通过使用近似解的完成时间来更新第二完成时间。即,在其中由优化处理单元30生成的近似解是违反
约束的解的情况下,近似解的数据用于更新(即,替代)存储在数据存储单元20中的松弛解数据20c(包括指示解的完成时间的数据)。此外,在其中由优化处理单元30生成的近似解是满足约束的解的情况下,近似解的数据用于更新(即,替代)存储在数据存储单元20中的最佳解数据20d(包括指示解的完成时间的数据)。
[0108]
图6是示出通过使用对生成的近似解进行指示的数据来更新松弛解数据和最佳解数据中的任一者的图。在图6中,与图5的元素相同或相对应的元素由相同或相对应的标记表示,并且将适当地省略其描述。
[0109]
基于如结合图5描述的由优化数据生成单元23生成的输入数据41,元启发式计算单元24执行优化处理以生成近似解。在图6所示的示例中,由元启发式计算单元24获得的近似解51指示在资源可用时间期间执行所有任务。在这种情况下,解检查单元25可以确定获得的近似解51是满足约束的解(即,最佳解)。
[0110]
基于该确定,解更新单元26使用对获得的近似解51进行指示的数据替代存储在数据存储单元20中的最佳解数据20d。在图6所示的示例中,数据存储单元20中的最佳解数据20d被更新,使得最佳解的完成时间t2从时隙序列号15改变至时隙序列号11。
[0111]
如上所述,图2所示的优化装置相继更新由松弛解数据20c指示的解的完成时间(即,第一完成时间)和由最佳解数据20d指示的解的完成时间(即,第二完成时间),并且在执行这种更新时使元启发式计算单元24重复地产生近似解。通过该处理,由松弛解数据20c指示的解的完成时间(即,第一完成时间)和由最佳解数据20d指示的解的完成时间(即,第二完成时间)逐渐彼此接近。
[0112]
终止检查单元27检查由松弛解数据20c指示的解的完成时间(即,第一完成时间)与由最佳解数据20d指示的解的完成时间(即,第二完成时间)之间的差是否变得小于或等于预定值。当时间的差变得小于或等于预定值时,即,当第一完成时间和第二完成时间变得彼此足够接近或彼此相等时,终止检查单元27终止由优化装置执行的获得近似于最大完成时间最小解的解的处理。因此,在两个完成时间变得彼此相等或基本相等时由最佳解数据20d指示的解是针对最大完成时间最小解的适当近似解。替选地,终止检查单元27可以检查第二完成时间与目标优化时段的结束时间之间的差是否变得小于或等于预定值,并且可以基于这样的检查结果终止获得近似于最大完成时间最小解的解的处理。
[0113]
在下面,将给出如上所述的其中第一完成时间和第二完成时间彼此接近的操作的进一步的描述。
[0114]
第一完成时间表示为t1,第二完成时间表示为t2,以及最大完成时间最小解(即,理想解)表示为t
ideal
。t1等于当不可能(或难以)获得满足约束的解时的解的完成时间。t2等于当成功获得满足约束的解时的解的完成时间。因此,以高概率满足t1<t2的条件。当目标优化时段的结束时间表示为t
end
时,由于t
end
设置在t1与t2之间,因此满足t
end
<t2的条件。用以更新t2的近似解的完成时间总是早于t
end
,因此每当t2被更新时其总是被更新至更早的时间。因此,t2单调地减小(即,确定地逐渐移至更早的时间)。最大完成时间最小解是满足约束的所有可能解中具有最早完成时间的解,使得满足t
ideal
≤t2的条件。由于t2是从满足约束的所有解的完成时间中选取诸如用以单调地减小,因此t2确定地迅速接近t
ideal
。当t2变得基本上等于t1时,t2的值因此是t
ideal
的高度精确的近似值。
[0115]
可以注意,t1和t2中的较晚者是t1——即t2<t1——的情况可以以低概率发生。即
使考虑到这种情况,t
end
总是早于t
latter
,所述t
latter
是t1和t2中的较晚者。即,满足了t
end
<t
latter
的条件。用以更新t1和t2的近似解的完成时间总是早于t
end
,使得每当更新t
latter
时所述t
latter
总是被更新至更早的时间。因此,t1和t2中较大的一个(即,较晚者)单调地减小(即,确定地逐渐移至较早的时间)。即,t2也以高概率单调地减小。根据以上内容可以理解,即使在考虑到其中t2<t1以某种概率发生的情况,t2也类似于先前描述的方式,大体确定地迅速接近t
ideal
。当t2变得基本上等于t1时,t2的值因此是t
ideal
的高度精确的近似值。
[0116]
数据输出单元28输出对以上述方式获得的并且近似于最大完成时间最小解的解进行指示的数据。输出数据可以经由图1所示的显示单元12被提供至显示屏幕、至hdd 16、经由可移除存储介质驱动器18被提供至存储介质m、或者经由网络接口17被提供至外部设备。
[0117]
如上所述,图2所示的优化装置相继更新由松弛解数据20c指示的解的完成时间和由最佳解数据20d指示的解的完成时间,并且在执行这样的更新时使元启发式优化处理重复地产生近似解。作为该优化装置的特征,在元启发式优化处理中经历最小化的目标函数不包括其值随着最大完成时间(即,项目完成时间)变得越来越早而减小的项。
[0118]
难以将用于评估最大完成时间的指标直接合并至目标函数中。因此,将现有技术中的最大完成时间评估指标间接地或作为近似合并至目标函数中,随后执行元启发式优化处理以获得近似于最大完成时间最小解的解。相比之下,图2所示的优化装置未使用间接地或作为近似合并至目标函数中的最大完成时间评估指标。因此,在对于一轮重复处理的优化处理中,没有合并用于减少最大完成时间的任何机制。
[0119]
对于一轮元启发式优化处理,图2所示的优化装置不评估最大完成时间,而是获得针对目标优化时段的给定结束时间的近似解,所述近似解使限定约束的目标函数最小化。然后,基于由当前轮优化处理获得的近似解,将目标优化时段的结束时间在近似于最大完成时间最小解的解所在或可能所在的方向上转移,以及然后,相对于目标优化时段的转移结束时间执行下一轮优化处理。如上所述的目标优化时段的结束时间的转移和更新使得通过优化处理获得的近似解能够移动得更接近于近似于最大完成时间最小解的解。
[0120]
如上所述,图2所示的优化装置不需要将用于资源约束的项目调度问题的最大完成时间评估指标间接地或作为近似合并至目标函数中,从而避免了元启发式优化处理的效率的降低和解的准确度的降低。此外,目标优化时段的结束时间通过类似于二进制搜索的过程来转移。因此,当时隙总数为n时,将优化处理执行近似等于log2n的次数使得能够获得用于最大完成时间最小化的适当近似解。
[0121]
图7是示出近似方法的过程的示例的流程图。图7所示的近似方法可以由图2所示的功能单元通过使用图1所示的硬件来执行。
[0122]
可以注意,在图7和随后的流程图中,执行流程图中示出的步骤的顺序仅是示例。所公开的技术的范围不限于所公开的顺序。例如,描述可以说明在执行b步骤之前执行a步骤。尽管有这样的描述,但是在a步骤之前执行b步骤在物理上和逻辑上是可能的,同时可以在b步骤之前执行a步骤。在这种情况下,不管首先执行哪个步骤,影响流程图的结果的所有结果都可以是相同的。然后,因此,出于所公开技术的目的,显然可以在执行a步骤之前执行b步骤。尽管说明了a步骤是在b步骤之前执行的,但是这样的描述并不旨在将如上所述的明显情况置于所公开技术的范围之外。这种明显的情况不可避免地落入由本公开内容所预期
的技术的范围内。
[0123]
在步骤s1中,数据获取单元21接收包括资源信息、任务信息、时间信息等的输入数据。由数据获取单元21接收的数据被存储在数据存储单元20中。
[0124]
在步骤s2中,松弛解生成单元22经由通过忽略约束违反将资源分配给任务来得到解,随后,将指示得到的解的数据作为松弛解数据20c存储在数据存储单元20中。这样,松弛解生成单元22可以使用确定性算法来将资源分配给任务。
[0125]
在步骤s3中,元启发式计算单元24例如通过使用伊辛机器得到满足约束的解,随后,将指示得到的解的数据作为最佳解数据20d存储在数据存储单元20中。
[0126]
在步骤s4中,优化数据生成单元23将完成时间t1设置成由松弛解数据20c指示的解的任务完成时间,并且将c1设置成由松弛解数据20c指示的解的约束违反的量。在此,约束违反的量是对违反约束的解违反约束的程度进行指示的值。在图7所示的优化方法中,目标优化时段的结束时间没有设置在第一完成时间与第二完成时间之间的间隔被以预定比率划分的时间点处,而是基于约束违反的量和约束符合余裕的量设置的,这将在稍后描述。
[0127]
约束违反的量可以是例如由松弛解中的任务和资源(即,设施)的组合违反约束的时隙总数。具体地,例如,可以考虑要求仅在资源可用时间期间将任务分配给资源的约束。然后,将通过分配违反该约束的时隙数用作约束违反的量。例如,在由图5所示的松弛解数据20c指示的松弛解的情况下,任务a3在作为资源不可用时间的时隙序列号“3”和“4”(即,10:00和10:30)处被分配给设施3。因此,在该松弛解数据的情况下,约束违反的量可以是2。
[0128]
在步骤s5中,优化数据生成单元23将完成时间t2设置成由最佳解数据20d指示的解的任务完成时间,并且将c2设置成由最佳解数据20d指示的解的约束符合余裕的量。在此,约束符合余裕的量是对满足约束的解满足约束所存在的余裕的程度进行指示的值。
[0129]
约束符合余裕的量可以是例如在最佳解中未分配和可用并且在所有资源上计数的时隙的总数。具体地,可以针对每个资源获得在资源不可用时间之外未分配和可用的时隙数目,并且可以在所有资源上对这样的时隙数目求和。在由图5所示的最佳解数据20d指示的最佳解的情况下,例如,对于设施1未分配和可用的时隙的数目是15。此外,对于设施2未分配和可用的时隙的数目是10,并且对于设施3未分配和可用的时隙的数目是7。因此,在该最佳解数据的情况下,约束符合余裕的量可以是32=15 10 7。
[0130]
在步骤s6中,优化数据生成单元23基于约束违反的量c1和约束符合余裕的量c2来计算目标优化时段的结束时间,并且酌情对分数进行四舍五入,随后将t
end
设置成所获得的目标优化时段的结束时间。例如,目标优化时段的结束时间可以设置在根据与松弛解的约束违反的量c1(即,违反约束的前一解的初始值)以及最佳解的约束符合余裕的量c2(即,满足约束的前一解的初始值)相对应的比率来划分第一完成时间t1与第二完成时间t2之间的间隔的时间点处。
[0131]
更具体地,例如,可以使用以下公式来计算目标优化时段的结束时间t
end

[0132]
t
end
=t1 (t2

t1)c1/(c1 c2)
[0133]
以这种方式对目标优化时段的结束时间进行计算使得当约束违反的量c1相对大时——即当松弛解的完成时间t1位于太早的时间处时目标优化时段的结束时间被设置成相对晚的时间(即,更接近于t2而非t1的时间)。此外,当约束符合余裕的量c2相对大时——即当最佳解的完成时间t2如此晚以提供足够余裕时,将目标优化时段的结束时间设置成相
对早的时间(即,更接近于t1而非t2的时间)。
[0134]
替选地,例如,可以使用下面的公式计算目标优化时段的结束时间t
end

[0135]
t
end
=t1 (t2

t1)(1/3)(当c1<c2时)
[0136]
t
end
=t1 (t2

t1)(1/2)(当c1=c2时)
[0137]
t
end
=t1 (t2

t1)(2/3)(当c1>c2时)
[0138]
在这种情况下,目标优化时段的结束时间被设置成根据基于约束违反的量c1和约束符合余裕的量c2的比率——即根据响应于c1和c2中的哪一个更大的比率(1/3、1/2、或2/3)划分t1与t2之间的间隔的时间点。与先前公式的情况类似,当约束违反的量c1相对大时——即当松弛解的完成时间t1位于太早的时间时,目标优化时段的结束时间被设置成相对晚的时间(即,更接近于t2而非t1的时间)。此外,当约束符合余裕的量c2相对大时——即当最佳解的完成时间t2如此晚以提供足够余裕时,将目标优化时段的结束时间设置成相对早的时间(即,更接近于t1而非t2的时间)。
[0139]
基于约束违反的量和约束符合余裕的量设置目标优化时段的结束时间使得能够响应于对松弛解太早或最佳解的余裕过大进行指示的指标来设置时间,从而能够有效地调整目标优化时段的结束时间。因此,以更有效的方式迅速地获得用于最大完成时间最小化的近似解。
[0140]
在步骤s7中,终止检查单元27检查t
end
和t2是否彼此相等。由于通过时隙序列号给出的时间指示是离散的,因此将优化处理重复足够次数使得t
end
最终变得等于t2。当t
end
和t2不相等时,过程进行至步骤s8。
[0141]
在步骤s8中,元启发式计算单元24针对目标优化时段的结束时间t
end
使用伊辛机器来得到近似解。在步骤s9中,解检查单元25检查得到的解是否是违反约束的解。在得到的解是违反约束的解的情况下,过程进行至步骤s10,其中解更新单元26将指示得到的解的数据存储在数据存储单元20中作为松弛解数据20c。在得到的解不是违反约束的解的情况下,过程进行至步骤s11,其中解更新单元26将指示得到的解的数据存储在数据存储单元20中作为最佳解数据20d。此后,过程返回至步骤s4,从该步骤s4重复随后处理。
[0142]
当在步骤s7中发现t
end
和t2彼此相等时,优化处理结束。因此,在优化处理的终止时存在的最佳解数据20d被视为针对最大完成时间最小解的适当近似解。
[0143]
图8是示出生成松弛解的过程的示例的流程图。图8所示的生成松弛解的过程可以由图2所示的松弛解生成单元22执行。
[0144]
在步骤s21中,松弛解生成单元22基于任务信息数据库20a的数据以任务持续时间的降序对任务进行排序。即,生成任务列表,使得由任务信息数据库20a的数据指示的多个任务中具有最长持续时间的任务被放置为最上面的列表元素,并且任务被布置成使得任务在列表中的位置越低,任务持续时间越短。生成的任务列表作为joblist存储在数据存储单元20中。
[0145]
图9是示出任务列表的示例的图。由松弛解生成单元22生成的joblist的示例被示出为列表61。该示例的列表61包括6个任务,所述6个任务从顶部开始以下面的顺序排列:任务#1、任务#2、任务#3、任务#4、任务#5和任务#6。
[0146]
图10是示出限定资源约束的项目调度问题的模型的初始状态的示例的图。图10所示的资源约束的项目调度问题是将6个任务#1至#6分配给3个设施1至3的问题,其中经历调
度的时间范围是从8:30的时隙到15:30的时隙。在图10中,以点阴影突出显示的时间段指示在其期间不可以使用所指示的设施的时段。松弛解生成单元22期望将包括在图9的列表61中的六个任务分配给图10中限定的模型中的资源(即,设施)。
[0147]
在图8的步骤s22中,松弛解生成单元22从joblist的顶部移除任务,随后将移除的任务指定为targetjob。在图9所示的示例中,存储在列表61顶部的任务是任务#1,因此该任务#1被移除并且被指定为targetjob。
[0148]
在步骤s23中,松弛解生成单元22选择具有最早任务未分配时间t的资源,并且将所选择的资源指定为“resource”。在图10所示的初始状态下,没有向资源(即设施)分配任务。因此,步骤s23中的处理可以选择任意设施例如设施1,并且可以将所选择的设施指定为“resource”。
[0149]
在图8的步骤s24中,松弛解生成单元22将targetjob分配给“resource”,使得targetjob在“resource”中的最早任务未分配时间t处开始。在这个分配处理中,分配是通过忽略约束(例如,要求任务仅分配给设施可用时间的约束)来执行的。
[0150]
图11是示出在分配一个任务后观察到的限定资源约束的项目调度问题的模型的状态的图。如上所述,任务#1被分配给设施1例如用以在8:30开始,所述8:30是设施1中没有分配任务的最早时间。因此,状态使得任务#1被分配至由箭头71指示的位置。
[0151]
在步骤s25中,松弛解生成单元22检查joblist中的元素数目是否为零。当元素的数目不是零时,由松弛解生成单元22进行的过程返回至步骤s22。
[0152]
返回步骤s22时存在的joblist的顶部是任务#2,因此松弛解生成单元22移除任务#2作为targetjob。然后执行步骤s23和s24,这使得松弛解生成单元22将任务#2分配给设施2。由于该分配处理,图11所示的状态后面的当前状态如图12所示,其中任务#2如由箭头72所指示的被分配。在该分配处理中,通过忽略在其期间设施2不可用的时段(即,以点阴影突出显示的时段)将任务#2在不可用时间处分配给设施2。此后,该过程再次返回至步骤s22。
[0153]
返回步骤s22时存在的joblist的顶部是任务#3,使得松弛解生成单元22移除任务#3作为targetjob。然后执行步骤s23和s24,这使得松弛解生成单元22如图13中的箭头73所指示的将任务#3分配给设施3。此后,该过程再次返回至步骤s22。
[0154]
再次执行步骤s22至s24,这使得松弛解生成单元22如图14中的箭头74所指示的将任务#4分配给设施3。在这种情况下,在设施1至3中设施3具有最早任务未分配时间,使得在步骤s23中,设施3被指定为“resource”,并且设施3被选择为针对任务#4的分配位置。
[0155]
随后,再次执行步骤s22至s24,这使得松弛解生成单元22如图15中的箭头75所指示的将任务#5分配给设施2。随后,再次执行步骤s22至s24,这使得松弛解生成单元22如图16中的箭头76所指示的将任务#6分配给设施1。
[0156]
此后,在步骤s25中确定joblist中的元素数为零,这将使松弛解生成单元22的松弛解生成处理结束。以上述方式,松弛解生成单元22经由通过忽略约束使用确定性算法将任务分配给资源,从而提供违反约束的解,该违反约束的解将用作松弛解数据20c的初始值。
[0157]
根据至少一个实施方式,在资源约束的项目调度问题中,在短时间内以高精度获得最大完成时间最小化问题的近似解。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献