首页 / 优化程序、优化方法和优化设备

优化程序、优化方法和优化设备实质审查 发明

技术领域

[0001] 本文中讨论的实施方式涉及优化程序、优化方法和优化设备。

相关背景技术

[0002] 二次分配问题(QAP)是组合优化问题之一。二次分配问题是以下问题:为了使元素之间的成本(每个均是流通量,例如在两个设施之间输送的供应量)与向其分配相应元素的分配位置之间的对应距离的乘积的总和最小化,寻求用于将n个元素(例如设施)分配到n个分配位置的分配。例如,二次分配问题是搜索满足下式(1)的分配的问题。
[0003] (式1)
[0004]
[0005] 在式(1)中,fi,j表示具有标识号=i和j的元素之间的成本, 表示向其分配具有标识号=i和j的元素的分配位置之间的距离,并且Sn表示n个分配位置的集合。
[0006] 作为用于计算通过冯诺依曼架构计算机不能很好地计算的大规模离散优化问题的设备,存在使用伊辛(Ising)型评价函数(也称为能量函数等)的伊辛设备(也称为玻尔兹曼机)。(专利文献1和2)。
[0007] 伊辛设备将组合优化问题转换成表示磁性元素的自旋行为的伊辛模型。基于马尔可夫链蒙特卡罗(Markov chain Monte Carlo)方法例如模拟退火方法或副本交换方法(也称为并行回火方法等),伊辛设备搜索伊辛模型的使伊辛型评价函数的值(相当于能量)最小化的状态。伊辛模型的状态可以由多个状态变量的值的组合来表示。每个状态变量都可以使用0或1的值。
[0008] 伊辛型评价函数例如由下式(2)定义。
[0009] (式2)
[0010]
[0011] 右侧的第一项是以下乘积的总和:所述乘积每个均是从伊辛模型的所有状态变量的所有组合(没有遗漏和重复)中的一个组合中的两个状态变量的值(每个均为0或1)以及权重值(指示两个状态变量之间的交互强度)获得的。此处,xi是标识号为i的状态变量,xj是标识号为j的状态变量,并且Wij是指示标识号为i和j的状态变量之间的交互强度的权重值。右侧的第二项是以下乘积的总和:所述乘积每个均是从针对标识号中的一个标识号的偏差系数和状态变量获得的。此处,bi表示针对标识号=i的偏差系数。然后,c是常数。
[0012] 由于xi的值的变化而引起的能量变化量(ΔEi)由下式(3)表示。
[0013] (式3)
[0014]
[0015] 在式(3)中,在状态变量xi从1改变为0时Δxi为‑1,而在状态变量xi从0改变为1时Δxi为1。然后,hi被称为局部字段,并且ΔEi是hi和取决于Δxi的符号(+1或‑1)的乘积。
[0016] 例如,在ΔEi小于基于随机数和温度参数的值而获得的噪声值(也称为热噪声)时,对更新xi的值以生成状态转变以及更新局部字段的处理进行迭代。
[0017] 此外,上述二次分配问题可以通过使用伊辛型评价函数来计算。
[0018] 二次分配问题的伊辛型评价函数由下式(4)表示。
[0019] (式4)
[0020]
[0021] 在式(4)中,x是状态变量的向量并且表示n个元素相对于n个分配位置的分配状T态。此处,x被表示为(x1,1,...,x1,n,x2,1,...,x2,n,...,xn,1,...,xn,n)。此处,xi,j=1指示标识号=i的元素被分配到标识号=j的分配位置,并且xi,j=0指示标识号=i的元素没有被分配到标识号=j的分配位置。
[0022] 然后,W是权重值的矩阵并且通过使用成本(fi,j)和如上所述的n个分配位置之间的距离的矩阵D来由下式(5)表示。
[0023] (式5)
[0024]
[0025] [引文列表]
[0026] [专利文献]
[0027] [专利文献1]日本公开特许公报第2019‑159997号。
[0028] 日本公开特许公报第2020‑135727号被公开为相关技术。

具体实施方式

[0050] 在下文中,将参照附图描述本公开内容的实施方式。
[0051] 二次分配问题具有将所有元素分配到不同分配位置的约束。该约束可以被认为是这样的约束:其中,当包括在表示n个元素相对于n个分配位置的分配状态的伊辛类型的评2
价函数中的n 个状态变量被布置在具有n行和n列的矩阵中时,包括在每一行中的状态变量的值之和为1并且包括在每一列中的状态变量的值之和为1。
[0052] 在基于式(3)中的ΔEi逐一更新状态变量的方法中,具有该约束的二次分配问题的计算也涉及向不满足上述约束的状态的转变,并且需要长的计算时间。
[0053] 一种缩短计算时间的可设想的方式是排除向除了满足上述约束的分配状态之外2
的分配状态的转变。在这种情况下,四个状态变量的值在一次状态转变中发生变化。当n 个状态变量以n行和n列布置时,四个状态变量的值在一次状态转变中发生变化,以满足包括在每一行中的状态变量的值之和为1并且包括在每一列中的状态变量的值之和为1的约束。
这使得可以排除向除了满足上述约束的分配状态之外的分配状态的转变。
[0054] 当具有值0的状态变量xj是更新目标候选时,各自具有值1的状态变量xi和xl是包括在与xj的行相同的行中和与xj的列相同的列中的状态变量之中的更新目标候选。另外,与xi在相同列且与xl在相同行的具有值0的xk是更新目标候选。
[0055] 当ΔEj表示由于这四个状态变量的值的变化而引起的伊辛模型的能量变化量时,ΔEj由下式(6)表示。
[0056] (式6)
[0057] ΔEj=(hi+hl)‑(hj+hk)‑(Wil+Wjk)    (6)
[0058] 由于xi、xj、xk和xl的变化而引起的局部字段变化量(Δhm(m=1,2,……,n2))由下式(7)表示。
[0059] (式7)
[0060] Δhm=Wjm+Wkm‑(Wim+Wlm)     (7)
[0061] 如式(6)和式(7)中所呈现的,权重值被用于计算能量变化量以及更新局部字段。由于权重值由式(5)表示,因此存储单元可以存储n个元素之间的成本以及n个分配位置之
2 2
间的距离,而不是存储n×n个权重值本身。在这种情况下,式(6)可以被转换成下式(8)。
[0062] (式8)
[0063] ΔE=hi,φ(j)+hj,φ(i)‑hi,φ(i)‑hj,φ(j)+2·fi,j·dφ(i),φ(j)  (8)[0064] 在式(8)中, 表示由于 的变化而引起的能量变化量并且等同于式(6)中的hi, 表示由于 的变化而引起的能量变化量并且等同于式(6)中的hl, 表示由于 的变化而引起的能量变化量并且等同于式(6)中的hj,并且 表示由于
的变化而引起的能量变化量并且等同于式(6)中的hk。在式(8)中,i和j为元素的标识号,是向其分配标识号=i的元素的分配位置的标识号,并且 是向其分配标识号=j的元素的分配位置的标识号。
[0065] n行n列的局部字段(矩阵H)的变化量(ΔH)由下式(9)表示(原因参照图2)。
[0066] (式9)
[0067] ΔH=ΔFΔD=(f,j‑f,i)(dφ(i),‑dφ(j),)    (9)
[0068] 在式(9)中,f,j表示n行n列的成本(矩阵F)中的第j列中的所有成本,并且f,i表示矩阵F中的第i列中的所有成本。然后, 表示n行n列的距离(矩阵D)中的第 行中的所有距离,并且 表示矩阵D中的第 行中的所有距离。
[0069] 当通过使用式(8)和式(9)来执行能量变化量的计算和局部字段的更新时,存储单2 2
元不必存储n ×n个权重值本身。然而,当问题的规模增加时,矩阵H、矩阵F和矩阵D的数据量也会增加。为此,可高速访问但具有相对小的容量的存储单元(例如包括静态随机存取存储器(SRAM)、触发器等的存储单元)可能无法存储矩阵H、矩阵F和矩阵D中的全部。
[0070] 下面将描述的根据第一实施方式的优化设备和优化方法即使在使用具有相对小的容量的存储单元时也能够计算大规模问题。
[0071] (第一实施方式)
[0072] 图1是示出根据第一实施方式的优化设备和优化方法的示例的图。
[0073] 优化设备10是例如计算机,并且包括存储单元11和处理单元12。处理单元12包括存储单元12a。
[0074] 存储单元11是例如包括诸如动态随机存取存储器(DRAM)的电子电路的易失性存储装置或者包括诸如硬盘驱动器(HDD)或闪存的电子电路的非易失性存储装置。
[0075] 例如,存储单元11存储用于执行稍后要描述的处理的程序,并且还存储成本信息、局部字段信息和翻转信息。
[0076] 成本信息包含n个元素(n为2或大于2的整数)之间的成本,并且由n行n列的矩阵F表示。例如,成本信息从优化设备10的外部输入并且存储在存储单元11中。
[0077] 局部字段信息包含局部字段并且由n行n列的矩阵H表示,每个局部字段指示由于2
n个状态变量(x1,1至xn,n)中对应状态变量的变化而引起的评价函数的变化量。例如,基于x1,1至xn,n的初始值以及根据成本和距离计算的权重值来根据式(3)计算包括在矩阵H中的n×n个局部字段(h1,1至hn,n)的初始值。在二次分配问题中,式(3)中的bi为0。h1,1至hn,n的初始值可以从优化设备10的外部输入,或者可以通过处理单元12计算。
[0078] 翻转信息由用于标识以下状态变量的标识信息表示:该状态变量的值由于被分配有两个元素的分配位置之间的交换而改变。翻转信息可以被存储在存储单元12a中。在下文中,分配位置被称为位置。
[0079] 例如,处理单元12可以由处理器来实现,该处理器是诸如中央处理单元(CPU)、图形处理单元(GPU)或数字信号处理器(DSP)的硬件。替代地,处理单元12可以由诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)的电子电路来实现。处理单元12执行存储在存储单元11中的程序(优化程序),并且使优化设备10执行下面描述的处理。处理单元12可以是多个处理器的集合。
[0080] 存储单元12a的存储容量小于存储单元11的存储容量。例如,可以使用SRAM、触发器等作为存储单元12a。这些装置具有比DRAM、HDD等的存储容量小的存储容量,但是允许高速读取和写入。
[0081] 存储单元12a存储距离信息和布置信息。
[0082] 距离信息包含n个元素的n个布置位置之间的距离,并且由n行n列的矩阵D表示。例如,距离信息从优化设备10的外部输入并且存储在存储单元12a中。
[0083] 布置信息指示布置n个元素的位置(相当于以上描述的分配状态),并且由包括n2个状态变量的n行n列的矩阵X表示。例如,布置信息中的初始值从优化设备10的外部输入并且被存储在存储单元12a中。布置信息中的初始值被设置成满足包括在每一行中的状态变量的值之和为1并且包括在每一列中的状态变量的值之和为1的约束。
[0084] 布置信息可以由行向量(一维阵列)表示,该行向量包括布置n个元素的位置的标识号(列号)的序列。
[0085] 存储单元12a存储从存储单元11读取的稍后要描述的关于属于两个组的元素的成本信息和局部字段信息。
[0086] 存储单元12a可以被设置在处理单元12外部并且耦接至处理单元12。
[0087] 图1示出了由处理单元12执行的程序(优化程序)的一部分处理的序列的示例。
[0088] 步骤S1:处理单元12从存储单元11读取成本和局部字段之中关于被划分成多个组的n个元素之中属于第一组(grl)的元素的成本和局部字段。处理单元12从存储单元11读取成本和局部字段之中关于属于第二组(gr2)的元素的成本和局部字段。处理单元12将所读取的成本和局部字段存储在存储单元12a中。稍后将描述如何选择gr1和gr2的示例。在下文中,关于属于gr1或gr2的元素的成本或局部字段被简称为gr1或gr2的成本或局部字段。
[0089] 处理单元12可以执行分组或者可以获取从优化设备10的外部输入的关于分组的信息。
[0090] 在图1所示的示例中,从表示成本信息的矩阵F中读取标识号=i的元素所属的gr1的成本(包含第i列中的成本(f1,i至fn,i))。读取标识号=j的元素所属的gr2的成本(包含第j列中的成本(f1,j至fn,j))。
[0091] 在图1所示的示例中,从表示局部字段信息的矩阵H中读取标识号=i的元素所属的gr1的局部字段(包含第i行中的局部字段(hi,1至hi,n))。读取标识号=j的元素所属的gr2的局部字段(包含第j行中的局部字段(hj,1至hj,n))。
[0092] 步骤S2:当在执行稍后要描述的组切换之后执行针对新设置为gr1和gr2的两个组的处理时,执行步骤S2处的处理。稍后将描述步骤S2处的处理。
[0093] 步骤S3:处理单元12计算在n个元素之中属于grl或gr2的两个元素之间进行布置位置的交换的情况下评价函数的变化量(能量变化量(ΔE))。此处,基于存储在存储单元12a中的距离以及gr1和gr2的成本和局部字段来计算ΔE。
[0094] 例如,如图1所示,处理单元12可以根据上述式(8)计算在标识号=i的元素与标识号=j的元素之间进行布置位置的交换的情况下的ΔE。
[0095] 步骤S4:基于ΔE与基于随机数和温度参数的值而获得的噪声值之间的比较结果,处理单元12确定是否在两个元素之间进行布置位置的交换,该交换将导致在步骤S3处的处理中计算的ΔE。
[0096] 例如,当ΔE小于log(rand)×T时,处理单元12确定进行交换,log(rand)×T是基于在0与1之间(包括0和1)的均匀随机数(rand)和温度参数(T)而获得的噪声值的示例。
[0097] 步骤S5:当在步骤S4处的处理中确定进行交换时,处理单元12通过更新布置信息来执行交换并更新grl和gr2的局部字段。
[0098] 图2是示出更新局部字段的方法的示例的图。图2示出了在标识号=i的元素与标识号=j的元素之间进行布置位置的交换的情况下更新局部字段的方法的示例。
[0099] 标识号=i的元素与标识号=j的元素之间的布置位置的交换相当于由矩阵X表示的布置信息中的第i行与第j行的交换。在这种情况下,局部字段变化量(ΔH)由n维列向量(ΔF)与n维行向量(ΔD)的乘积表示,n维列向量(ΔF)是矩阵F中的第i列与第j列之间的差,n维行向量(ΔD)是矩阵D中的第 行与第 行之间的差,如图2所示。例如,由以上描述的式(9)表示ΔH。
[0100] 在步骤S5处的处理中,通过将ΔH中grl和gr2的局部字段的变化量与grl和gr2的局部字段相加来执行更新。
[0101] 步骤S6:处理单元12将翻转信息存储在存储单元11中,该翻转信息是用于标识其值由于交换而改变的状态变量的标识信息(标识号)。例如,当如以上所描述的在标识号=i的元素与标识号=j的元素之间进行布置位置的交换时,四个状态变量和 的值改变,并且因此将标识号=i、j、 和 存储在存储
单元11中。
[0102] 步骤S7:当在步骤S4处的处理中确定不进行交换时或者在步骤S6处的处理之后,处理单元12确定针对grl和gr2的处理是否已经完成。例如,当处理单元12已经针对从属于组gr1和组gr2的元素中选择的所有元素对完成了步骤S3至S6中的处理时,处理单元12确定针对gr1和gr2的处理已经完成。当确定针对gr1和gr2的处理尚未完成时,处理单元12更新标识号=i和j,并且针对下一对元素迭代从步骤S3开始的处理。
[0103] 步骤S8:当确定针对grl和gr2的处理已经完成时,处理单元12将组grl和gr2切换至所有组之中的其他组。处理单元12可以一次仅将组gr1和gr2中的一个切换至另一组。
[0104] 期望执行组切换,使得可从所有组中选择的两个组的所有组合被选择,以便考虑在所有组对中的元素之间交换布置位置的影响。
[0105] 在步骤S8处的处理之后,处理单元12迭代从步骤Sl开始的处理。
[0106] 在针对新设置的组对grl和gr2执行处理时,在步骤S2处的处理中,处理单元12从存储单元11读取翻转信息。处理单元12基于翻转信息、距离以及gr1和gr2的成本来校正gr1和gr2的局部字段。如在步骤S5处的处理中那样,根据例如式(9)来校正局部字段。
[0107] 此处,在仅切换grl和gr2之一的情况下,不必针对未切换的组执行上述校正。
[0108] 通过对局部字段执行这样的校正,可以将在针对先前选择的组对的处理中生成的布置信息的更新反映在此时新选择的组对的局部字段中。
[0109] 以上描述的处理的顺序是示例并且不限于上述顺序。例如,步骤S5和步骤S6的顺序可以颠倒。
[0110] 在执行模拟退火方法的情况下,处理单元12根据温度参数变化的预定安排减小上述温度参数(T)的值。作为二次分配问题的计算结果,处理单元12输出通过将步骤S3至S6处的处理迭代预定次数而获得的布置信息(例如,在未示出的显示装置上显示布置信息)。处理单元12可以在每次更新元素的布置位置时更新由式(4)表示的评价函数(能量)的值,并且保存到该时刻为止在能量变得最小的情况下的能量和布置信息。在这种情况下,处理单元12可以输出与在将步骤S3至S6处的处理迭代预定次数之后存储的最小能量相关联的布置信息作为计算结果。
[0111] 在处理单元12执行副本交换方法的情况下,存储单元11针对每个副本存储矩阵H。处理单元12在设置了不同温度参数值的多个副本中的每个副本中执行图1中示出的步骤S1至S8处的处理。每将步骤S3至S6处的处理迭代预定次数,处理单元12执行副本交换。例如,处理单元12在多个副本之中随机选择两个副本,并且基于副本之间的能量差以及副本之间的温度参数值的差,以预定的交换概率在所选择的两个副本之间交换温度参数的值。例如,处理单元12在每次在每个副本中更新元素的布置位置时更新由式(4)表示的评价函数的值(能量),并且保存到该时刻为止在能量变得最小的情况下的能量和布置信息。处理单元12输出在相应副本中将步骤S3至S6处的处理迭代预定次数之后存储的最小能量之中与所有副本中最低的最小能量相关联的布置信息作为计算结果。
[0112] 根据如上所述的第一实施方式中的优化设备10和优化方法,存储单元12a仅需存储两个组的成本和局部字段,而不是存储所有成本和局部字段。因此,即使通过使用例如如下存储单元12a,也可以计算大规模问题:与存储单元11例如硬盘或DRAM相比,存储单元12a例如SRAM允许较高速度的读取和写入但是存储容量较小。在执行副本交换方法的情况下,矩阵H被用于每个副本。根据以上描述的优化设备10和优化方法,存储单元12a不必保存所有副本的矩阵H。为此,在使用副本交换方法的情况下,减少存储在存储单元12a中的数据量的效果高于使用模拟退火方法的情况。
[0113] (第二实施方式)
[0114] 在下面将描述的第二实施方式中,将以在n个位置处布置n个设施的问题为例来描述将n个元素分配至n个分配位置的二次分配问题。在下文中,将上述成本称为流通量。流通量指示例如在设施等之间输送的供应量。
[0115] 图3是示出在三个位置处布置三个设施的问题的示例的图。
[0116] 在该示例的情况下,矩阵F包括3行3列的流通量,并且矩阵D包括3行3列的距离。在图3的示例中,fij等于fji(i和j为设施标识号),并且fji也被表示为fij。在图3的示例中,dij等于dji(i和j为位置标识号),并且dji也被表示为dij。
[0117] 在图3的示例中,设施标识号=3的设施被布置在位置标识号=1的位置处,设施标识号=1的设施被布置在位置标识号=2的位置处,并且设施标识号=2的设施被布置在位置标识号=3的位置处。在这种情况下,在其中行号代表设施标识号并且列号代表位置标识号的布置信息(矩阵X)中,第二列中的第一行、第三列中的第二行和第一列中的第三行处的状态变量的值为1,并且其他状态变量的值为0。
[0118] 针对这样的问题,基于由于在两个设施之间交换布置位置而引起的能量变化量(由上述式(8)表示)来搜索使能量最小化的布置,但是要保存的数据量随着设施数量或位置数量的增加而增加。
[0119] 图4是示出根据第二实施方式的优化设备的硬件示例的框图。
[0120] 优化设备20例如是计算机,并且包括CPU 21、DRAM 22、HDD 23、图形处理单元(GPU)24、输入接口25、介质读取器26和通信接口27。上述单元耦接至总线。
[0121] CPU 21是包括执行程序命令的运算电路的处理器。CPU 21将存储在HDD 23中的程序和数据的至少一部分加载到DRAM 22中并执行该程序。CPU 21可以包括多个处理器核,或者优化设备20可以包括多个处理器。将在下面描述的处理可以通过使用多个处理器或处理器核来并行执行。多个处理器的集合(多处理器)可以被称为“处理器”。
[0122] CPU 21包括例如用作高速缓冲存储器的SRAM 21a。
[0123] DRAM 22是暂时存储要由CPU 21执行的程序和要由CPU 21用于计算的数据的易失性半导体存储器。优化设备20可以包括不同于DRAM的类型的存储器,并且可以包括多个存储器。
[0124] HDD 23是存储数据和软件程序例如操作系统(OS)、中间件和应用软件的非易失性存储装置。程序的示例包括用于使优化设备20执行搜索二次分配问题的最优解的处理的优化程序。优化设备20可以包括其他类型的存储装置例如闪存或固态驱动器(SSD),并且可以包括多个非易失性存储装置。
[0125] GPU 24根据来自CPU 21的指令将图像输出至与优化设备20耦接的显示器24a。可以使用阴极射线管(CRT)显示器、液晶显示器(LCD)、等离子显示面板(PDP)、有机电致发光(OEL)显示器等作为显示器24a。
[0126] 输入接口25从与优化设备20耦接的输入装置25a获取输入信号,并且将输入信号输出至CPU 21。可以使用定点装置例如鼠标、触控面板、触控板和轨迹球以及键盘、遥控器、按钮开关等作为输入装置25a。可以将多种类型的输入装置耦接至优化设备20。
[0127] 介质读取器26是读取记录在记录介质26a上的程序和数据的读取装置。例如,可以使用磁盘、光盘、磁光(MO)盘、半导体存储器等作为记录介质26a。磁盘包括软盘(FD)和HDD。光盘包括致密盘(CD)和数字多功能盘(DVD)。
[0128] 例如,介质读取器26将从记录介质26a读取的程序或数据复制到诸如DRAM 22或HDD 23的另一记录介质。所读取的程序由例如CPU 21执行。记录介质26a可以是便携式记录介质,并且可以用于分发程序或数据。记录介质26a和HDD 23可以被称为计算机可读记录介质。
[0129] 通信接口27是连接至网络27a并且经由网络27a与另一信息处理设备进行通信的接口。通信接口27可以是经由线缆与通信装置例如交换机连接的有线通信接口,或者可以是经由无线链路与基站连接的无线通信接口。
[0130] 图5是示出存储在SRAM和DRAM中的数据的示例的图。图5示出了为执行应用了使用m个副本的副本交换方法的优化方法而存储的数据的示例。
[0131] DRAM 22存储一定数量(m)的副本的局部字段信息31a1、31a2、……和31am、流通量信息32以及一定数量的副本的翻转信息33a1、33a2、……和33am。局部字段信息31a1至31am由包括n行n列(n×n)的局部字段的矩阵H表示,并且流通量信息32由包括n行n列(n×n)的流通量的矩阵F表示。翻转信息33a1至33am是用于标识其值由于在两个设施之间交换布置位置而改变的四个状态变量的标识信息。
[0132] SRAM 21a存储来自被划分成多个组的局部字段信息31a1至31am的所选择的组对的局部字段信息31ga1、31ga2、……和31gam以及31gb1、31gb2、……和31gbm。所选择的组对在下面将称为grpA和grpB。局部字段信息31ga1至31gam是grpA的局部字段信息,并且局部字段信息31gb1至31gbm是grpB的局部字段信息。局部字段信息31ga1至31gam和31gb1至31gbm由包括gs行n列的局部字段的矩阵H表示。此处,gs表示组大小。
[0133] SRAM 21a还存储来自被划分成多个组的流通量信息32的所选择的grpA的流通量信息32ga以及所选择的grpB的流通量信息32gb。流通量信息32ga和32gb由包括n行gs列的流通量的矩阵F表示。
[0134] SRAM 21a还针对一定数量的副本存储指示n个设施的布置(分配状态)的布置信息34a1、34a2、……、和34am。在图5所示的示例的情况下,布置信息34a1至34am由1行n列(1×n)的矩阵X表示,该矩阵X包括n行n列的状态变量之中各个行中值为1的状态变量所在列的列号(等同于前述位置标识号)的序列。
[0135] SRAM 21a还存储距离信息35,其包含n个位置之间的距离并且由n行n列的矩阵D表示。
[0136] 局部字段信息31a1至31am、流通量信息32以及翻转信息33a1至33am可以存储在HDD 23中而不是存储在DRAM 22中。即使HDD 23的写入和读取速度低于DRAM 22的写入和读取速度,HDD 23也能够针对大规模问题存储局部字段信息31a1至31am、流通量信息32以及翻转信息33a1至33am。
[0137] SRAM 21a可以根据SRAM 21a的存储容量存储翻转信息33a1至33am。
[0138] 接下来,将描述当CPU 21执行优化程序时优化设备20的处理过程(优化方法)。在以下示例中将描述应用副本交换方法的优化方法。
[0139] 图6是示出根据第二实施方式的优化方法的示例的序列的流程图。
[0140] 步骤S10:首先,CPU 21接收关于二次分配问题的问题信息等的输入。问题信息包含如图5所示的流通量信息32和距离信息35。例如,问题信息可以通过用户操作输入装置25a来输入,或者可以经由记录介质26a或网络27a来输入。
[0141] 输入的流通量信息32被存储在DRAM 22中,并且输入的距离信息35被存储在SRAM 21a中。
[0142] 步骤S11:CPU 21执行初始化。例如,CPU 21设置状态变量的初始值以便满足包括在n行的每一行中的状态变量的值之和为1并且包括在n列的每一列中的状态变量的值之和为1的约束。CPU 21基于状态变量的初始值以及根据所输入的流通量和距离计算的权重值来计算n×n个局部字段的初始值。CPU 21基于状态变量的初始值以及所输入的流通量和距离来根据式(4)和式(5)计算能量的初始值。在步骤S10处的处理中,可以从优化设备20的外部输入状态变量的初始值、局部字段的初始值或能量的初始值。
[0143] CPU 21将一定数量的副本的局部字段的初始值作为如图5所示的局部字段信息31a1至31am存储在DRAM 22中。CPU 21还将一定数量的副本的状态变量的初始值作为如图5所示的布置信息34a1至34am存储在SRAM 21a中,布置信息34a1至34am包括n行n列的状态变量之中各个行中值为1的状态变量所在列的列号的序列。尽管在图5中未示出,但是针对一定数量的副本,能量的初始值也被存储在SRAM 21a中。
[0144] CPU 21还针对每个副本设置温度参数(T)的初始值。在副本之间设置不同的值作为温度参数的值。
[0145] CPU 21将状态变量、流通量和距离划分成组。如图3所示,可以通过使用设施标识号来执行分组。这是因为如图1所示,可以由用于标识设施的设施标识号(图1中的元素标识号)来表示n行n列的矩阵F中指示流通量(图1中的成本)的列号(或行号)以及n行n列的矩阵H中指示局部字段的行号。在以下描述中,G表示组的数目。
[0146] 步骤S12:接下来,CPU 21在G个组之中选择处理目标组对grpA和grpB(在下文中,grpA和grpB可以被统称为grpX)。稍后将描述选择组对的方法。
[0147] 步骤S13:CPU 21确定当前处理是否是针对第一grpX的处理。CPU 21在确定当前处理是针对第一grpX的处理时执行步骤S15处的处理,或者在确定当前处理不是针对第一grpX的处理时执行步骤S14处的处理。
[0148] 步骤S14:在稍后将描述的步骤S19处的处理中更新grpX之前,CPU 21将存储在SRAM 21a中的先前grpX的局部字段信息写入DRAM 22。在步骤S19处的处理中更新grpA和grpB之一的情况下,CPU 21不必将未更新的组的局部字段信息写入DRAM 22,因为CPU 21会再次使用未更新的组的局部字段信息。稍后将描述步骤S14处的处理的示例(参见图12)。
[0149] 步骤S15:CPU 21从DRAM 22读取grpX的局部字段信息和流通量信息,并将信息写入SRAM 21a。
[0150] 图7是示出将grpX的局部字段信息和流通量信息写入SRAM的示例的图。
[0151] 在grp1和grp2被选择为grpA和grpB时,从DRAM 22读取局部字段信息31a1中属于grp1和grp2的设施的局部字段(具有与设施的设施标识号对应的行号的行中的局部字段)。将所读取的局部字段作为局部字段信息31ga1和31gb1写入SRAM 21a。
[0152] 虽然在图7中未示出,但是对图5中示出的局部字段信息31a2至31am执行相同的处理。
[0153] 在grp1和grp2被选择为grpA和grpB时,从DRAM 22读取流通量信息32中属于grp1和grp2的设施的流通量(具有与设施的设施标识号对应的列号的列中的流通量)。将所读取的流通量作为流通量信息32ga和32gb写入SRAM 21a。
[0154] 在步骤S19处的处理中仅更新grpA和grpB之一时,CPU 21仅需从DRAM 22读取经更新的组的局部字段信息并且将所读取的局部字段信息写入SRAM 21a(参见图12)。
[0155] 步骤S16:步骤S16处的处理是要在更新grpX时执行的处理。CPU 21通过使用翻转信息33a1至33am等来校正被写入SRAM 21a的grpA或grpB的局部字段信息。稍后将描述步骤S16处的处理的示例(参见图12)。
[0156] 步骤S17:CPU 21删除用于校正grpA或grpB的局部字段信息的翻转信息33a1至33am。
[0157] 步骤S18:CPU 21执行稍后将描述的针对grpA和grpB的搜索处理。
[0158] 步骤S19:CPU 21更新grpX。例如,当1至G表示图7中的grp1至grpG的组号时,CPU 21以(1,2)→(1,3)→……→(1,G)→(2,3)→(2,4)→……的方式更新grpX(将grpA或grpB改变为另一组)。
[0159] 虽然更新grpX的方法不限于上述示例,但是期望更新grpX,使得可从G个组中选择的两个组的所有组合被选择,以便考虑在所有组对中的设施之间交换布置位置的影响。
[0160] 步骤S20:CPU 21确定稍后要描述的翻转确定计数是否已经达到预定结束计数。CPU 21在确定翻转确定计数已经达到预定结束计数时执行步骤S21处的处理,或者在确定翻转确定计数尚未达到预定结束计数时迭代从步骤S13开始的处理。
[0161] 步骤S21:CPU 21输出计算结果。例如,CPU 21输出与针对相应副本存储的最小能量之中的所有副本中的最低最小能量相关联的布置信息作为计算结果。例如,CPU 21可以输出计算结果并将在显示器24a上显示计算结果、经由网络27a将计算结果传送至另一信息处理设备或者将计算结果存储在外部存储装置中。
[0162] 图8、图9和图10是针对grpA和grpB的搜索处理的序列的示例的流程图。
[0163] 步骤S30:CPU 21对用于指定两个设施的搜索位置(x,y)进行初始化(设置x=0和y=0)以用于确定是否交换布置位置(在下文中称为翻转确定)。在步骤S30处的处理中,x指定属于grpA的每个设施的设施标识号,并且y指定属于grpB的每个设施的设施标识号。此处,x=0指示属于grpA的设施的设施标识号之中的第一设施标识号,并且y=0指示属于grpB的设施的设施标识号之中的第一设施标识号。如以上所描述的,设施标识号对应于作为n行n列的矩阵H的局部字段信息31a1至31am中的行号,并且对应于作为n行n列的矩阵F的流通量信息32中的列号。因此,x和y指定局部字段信息31a1至31am中的两行,并且指定流通量信息32中的两列。
[0164] 步骤S31:CPU 21选择m个副本中的一个副本。
[0165] 步骤S32:CPU 21计算在具有由x和y(对应于图1和图2中示出的元素标识号=i和j)指定的设施标识号的设施之间进行布置位置的交换的情况下评价函数的变化量(能量变化量(ΔE))。可以基于存储在SRAM21a中的局部字段信息31ga1至31gam和31gb1至31gbm、布置信息34a1至34am、流通量信息32ga以及距离信息35,根据以上描述的式(8)来计算ΔE。
[0166] 步骤S33:CPU 21基于ΔE与噪声值之间的比较结果来确定是否执行翻转,该噪声值是基于随机数和针对所选择的副本设置的温度参数的值而获得的。“翻转”意指四个状态变量的值由于在两个设施之间交换布置位置而改变,这将导致式(8)中的ΔE。
[0167] 例如在ΔE小于log(rand)×T时,CPU 21确定执行翻转,log(rand)×T是基于在0与1之间(包括0和1)的均匀随机数(rand)和温度参数(T)而获得的噪声值的示例。CPU 21在确定执行翻转时执行步骤S34处的处理,或者在确定不执行翻转时执行步骤S36处的处理。
[0168] 步骤S34:CPU 21通过更新布置信息34a1至34am中关于所选择的副本的布置信息来执行翻转。CPU 21通过使用在步骤S32处的处理中计算的ΔE来更新能量(E)。当E是到此时为止所选择的副本中的最小值(最小能量)时,CPU 21将与该最小能量相关联的布置信息存储在SRAM 21a中的与存储布置信息34a1至34am的存储区域不同的存储区域中。
[0169] CPU 21还更新局部字段信息31ga1至31gam和31gb1至31gbm中关于所选择的副本的局部字段信息。可以基于流通量信息32ga和32gb以及距离信息35来根据上述式(9)更新局部字段信息。
[0170] 步骤S35:CPU 21将翻转信息33a1至33am中关于所选择的副本的翻转信息写入DRAM 22。在DRAM 22中,针对各个组提供用于翻转信息的存储区域。在步骤S35处的处理中,将翻转信息写入用于除当前被作为grpA和grpB处理的组之外的组的存储区域。
[0171] 图11是示出在发生翻转的情况下更新局部字段并写入翻转信息的示例的图。
[0172] 图11示出了这样的示例:其中grp1和grp2是处理目标组(grpA和grpB),并且在具有由x指定的设施标识号=i的设施与具有由y指定的设施标识号=j的设施之间进行布置位置的交换(翻转)。
[0173] 如图2所示,局部字段变化量(ΔH)由n维列向量(ΔF)和n维行向量(ΔD)的乘积表示,n维列向量(ΔF)是矩阵F中第i列与第j列之间的差,n维行向量(ΔD)是矩阵D中第行与第 行之间的差。例如,ΔH由以上描述的式(9)表示。
[0174] 在步骤S34处的处理中,通过将ΔH中grp1和grp2的局部字段信息31ga1和31gb1的变化量与局部字段信息31ga1和31gb1相加来执行更新。
[0175] 当发生上述翻转时,四个状态变量 和 的值发生变化。出于这个原因,在步骤S35处的处理中,将i、j、 和 写入DRAM 22中用于存储翻转信息
33a1的存储区域之中用于grp3至grpG的存储区域。
[0176] 步骤S36:CPU 21确定是否已经选择了所有副本。在CPU 21确定尚未选择所有副本时,CPU 21返回至步骤S31处的处理,针对未选择的副本迭代步骤S32至S35处的处理。在CPU 21确定已经选择了所有副本时,CPU 21执行步骤S37处的处理。
[0177] 步骤S37:CPU 21更新搜索位置。在包括n行n列的状态变量的矩阵中,例如,将1、……、N设置为与属于grpA(或grpB)的设施的设施标识号对应的行号。CPU 21首先保持x固定并且使y递增1以更新搜索位置。然后,CPU 21从下一次开始执行相同的处理,并且在每次y达到N+1时迭代将y重置为0并且使x递增1的处理。
[0178] 步骤S38:CPU 21确定翻转确定计数是否指示副本交换周期。例如,当翻转确定计数除以指示副本交换周期的值的余数为0时,CPU 21确定翻转确定计数指示副本交换周期。
[0179] CPU 21在确定翻转确定计数指示副本交换周期时执行步骤S39处的处理,或者在确定翻转确定计数不指示副本交换周期时执行步骤S40处的处理。
[0180] 步骤S39:CPU 21执行副本交换处理。例如,CPU 21随机选择多个副本中的两个副本,并且基于副本之间的能量差或副本之间的温度参数的值的差,以预定交换概率在所选择的两个副本之间交换温度参数的设定值。
[0181] 代替在两个副本之间交换温度参数的值,副本交换处理可以交换布置信息。在这种情况下,存储在DRAM 22中的局部字段信息31a1至31am和翻转信息33a1至33am也被交换。
[0182] 步骤S40:CPU 21确定grpA与grpB之间的搜索是否已经完成。例如,当x由于如在步骤S37处的处理中描述的搜索位置的更新而变得等于N+1时,CPU 21确定搜索已经完成。CPU 21在确定grpA与grpB之间的搜索已经完成时执行步骤S41处的处理,或者在确定grpA与grpB之间的搜索尚未完成时迭代从步骤S31开始的处理。
[0183] 步骤S41:CPU 21对用于指定作为目标的两个设施的搜索位置(x,y)进行初始化(设置x=0和y=1)以用于翻转确定。在步骤S41处的处理中,x和y两者均指定属于grpB的设施的设施标识号。此处,x=0指示属于grpB的设施的设施标识号之中的第一设施标识号,并且y=1指示属于grpB的设施的设施标识号之中的第二设施标识号。
[0184] 步骤S42至S47处的处理与步骤S31至S36处的处理相同。
[0185] 步骤S48:CPU 21更新搜索位置。在包括n行n列的状态变量的矩阵中,例如,将1、……、N设置为与属于grpB的设施的设施标识号对应的行号。CPU 21首先保持x固定并且使y递增1以更新搜索位置。然后,CPU 21从下一次开始执行相同的处理,并且在每次y达到N时迭代使x递增1并且设置y=x+1的处理。
[0186] 步骤S49和S50处的处理与步骤S38和S39处的处理相同。
[0187] 步骤S51:CPU 21确定在grpB中的搜索是否已经完成。例如,当x由于如在步骤S48处的处理中描述的搜索位置的更新而变得等于N时,CPU 21确定搜索已经完成。CPU 21在确定在grpB中的搜索完成时执行步骤S52处的处理,并且在确定在grpB中的搜索未完成时迭代从步骤S42开始的处理。
[0188] 步骤S52:CPU 21确定grpB是否是最后一组(是否grpB=grpG)。CPU 21在确定grpB是最后一组时执行步骤S53处的处理,或者在确定grpB不是最后一组时执行上述步骤S19处的处理。
[0189] 步骤S53:CPU 21对用于指定作为目标的两个设施的搜索位置(x,y)进行初始化(设置x=0和y=1)以用于翻转确定。在步骤S53处的处理中,x和y两者均指定属于grpA的设施的设施标识号。此处,x=0指示属于grpA的设施的设施标识号之中的第一设施标识号,并且y=1指示属于grpA的设施的设施标识号之中的第二设施标识号。
[0190] 步骤S54至S59处的处理与步骤S31至S36处的处理相同。
[0191] 步骤S60:CPU 21更新搜索位置。在包括n行n列的状态变量的矩阵中,例如,将1、……、N设置为与属于grpA的设施的设施标识号对应的行号。CPU 21首先保持x固定并且使y递增1以更新搜索位置。然后,CPU 21从下一次开始执行相同的处理,并且在每次y达到N时迭代使x递增1并且设置y=x+1的处理。
[0192] 步骤S61和S62处的处理与步骤S38和S39处的处理相同。
[0193] 步骤S63:CPU 21确定在grpA中的搜索是否已经完成。例如,当x由于如在步骤S53处的处理中描述的搜索位置的更新而变得等于N时,CPU 21确定搜索已经完成。CPU 21在确定在grpA中的搜索已经完成时执行步骤S19处的处理,并且在确定在grpA中的搜索尚未完成时迭代从步骤S54开始的处理。
[0194] 图12是示出更新grpX之后的处理的示例的图。图12示出了这样的示例:其中在图6的步骤S19处的处理中,将grpX从grpA=grp1且grpB=grp2的组合更新为grpA=grp1且grpB=grp3的组合。
[0195] 在步骤S14处的处理中,如图12所示,针对某个选择的副本,通过使用更新前的grpB的局部字段信息31gb1(grp2的局部字段信息)来更新被包括在存储在DRAM 22中的局部字段信息31a1中的关于grp2的局部字段信息。
[0196] 针对该副本,步骤S15处的处理从存储在DRAM 22中的局部字段信息31a1中读取grp3的局部字段信息31gc1,并将其作为grpB的局部字段信息写入SRAM 21a。从存储在DRAM 22中的流通量信息32中读取grp3的流通量信息32gc,并将其作为grpB的流通量信息写入SRAM 21a。
[0197] 通过步骤S16处的处理对grp3的局部字段信息31gc1进行校正。CPU21针对某个选择的副本从翻转信息33a1中读取存储在用于grp3的存储区域中的翻转信息。所读取的翻转信息指定例如图11中示出的i、j、 和 CPU 21根据基于翻转信息获得的ΔF和ΔD来根据式(9)计算ΔH,并且通过将ΔH中grp3的局部字段信息31gc1的变化量与局部字段信息31gc1相加来校正局部字段信息31gc1。从DRAM 22中删除用于校正的grp3的翻转信息。
[0198] 图6以及图8至图10中示出的处理的顺序是示例并且不限于上述顺序。
[0199] 根据上述第二实施方式中的优化设备20和优化方法,SRAM 21a仅需存储两个组的流通量和局部字段,而不是存储所有流通量和局部字段。因此,即使通过使用例如允许较高速度的读取和写入但存储容量比DRAM 22或HDD 23的存储容量小的SRAM 21a,也可以计算大规模问题。
[0200] 通过增加组的数量可以进一步增强这种效果。例如,当n=1024并且局部字段、流通量和距离中的每一个的数据量为4字节时,用于存储n×n个局部字段、n×n个流通量以及n×n个距离的每副本的数据量为4MB×3=12MB。相比之下,当在组数=16的情况下应用由根据第二实施方式的优化设备20进行的优化方法时,存储在SRAM 21a中的每副本的数据量为5MB,其是被计算为(4MB/16)×2=0.5MB的局部字段的数据量、被类似地计算为0.5MB的流通量的数据量以及距离的数据量=4MB的总和。例如,与将完整的整个n×n个局部字段、n×n个流通量以及n×n个距离均存储在SRAM 21a中的情况相比,可以使数据量减少58%。
[0201] 布置信息34a1至34am中的每一个都是如上所述的1×n的阵列并且以比将n×n个状态变量存储在SRAM 21a中的情况下的数据量小的数据量存储在SRAM 21a中。因此,可以进一步减少存储在SRAM 21a中的数据量。
[0202] 如上所述,可以通过使优化设备20执行程序(优化程序)来实现上述处理细节。
[0203] 程序可以记录在计算机可读记录介质(例如,记录介质26a)中。例如,可以使用磁盘、光盘、磁光盘、半导体存储器等作为记录介质。磁盘包括FD和HDD。光盘包括CD、CD可记录(R)/可重写(RW)、DVD和DVD‑R/RW。程序可以被记录在要分发的便携式记录介质中。在这种情况下,可以将程序从便携式记录介质复制到另一记录介质(例如,HDD23)以进行执行。
[0204] (第三实施方式)
[0205] 图13是示出根据第三实施方式的优化设备的示例的图。在图13中,与图4中示出的元素相同的元素用相同的附图标记表示。
[0206] 根据第三实施方式的优化设备40包括耦接至总线的加速器卡41。
[0207] 加速器卡41是硬件加速器,其搜索二次分配问题的解。加速器卡41包括FPGA 41a和DRAM 41b。FPGA 41a包括SRAM 41a1。
[0208] 在根据第三实施方式的优化设备40中,FPGA 41a代替CPU 21执行在上述图6以及图8至图10中示出的处理中的一些。例如,在图6中,CPU 21执行步骤S10(接收输入)、步骤S11(初始化)和步骤S21(输出计算结果)处的处理,而FPGA 41a执行其余的处理。
[0209] 在优化设备40中,FPGA 41a的SRAM 41a1用作图5、图7、图11和图12中的SRAM 21a,而DRAM 41b用作图5、图7、图11和图12中的DRAM 22。
[0210] 可以提供多个加速器卡41。在这种情况下,例如,可以并行执行针对多个副本的处理(例如,图8中的步骤S30至S37处的处理、图9中的步骤S41至S48处的处理以及图10中的步骤S53至S60处的处理)。
[0211] 根据上述第三实施方式的优化设备40也产生与根据第二实施方式的优化设备20的效果相同的效果。
[0212] (修改示例)
[0213] 图14是示出根据修改示例的优化方法的序列的流程图。在图14中,将在本文中省略对与图6中的处理相同的处理的描述。
[0214] 根据修改示例的优化方法,在步骤S18处针对grpA和grpB的搜索处理中,每当CPU 21执行如图8、图9和图10中示出的翻转时,CPU 21不将翻转信息写入DRAM 22。替代地,在步骤S18处的处理与步骤S19处的处理之间,CPU 21生成翻转信息并将翻转信息写入DRAM 22(步骤S18a)。
[0215] 为了执行步骤S18a处的处理,CPU 21将针对某个grpX的处理开始时的布置信息保存在SRAM 21a中、将针对grpX的处理结束时的布置信息与针对grpX的处理开始时的布置信息进行比较并且找出其值改变的状态变量。CPU 21通过使用找出的状态变量的标识信息来生成翻转信息。
[0216] 根据上述方法,CPU 21不必在每次CPI 21执行翻转时都将翻转信息写入DRAM 22。
[0217] 尽管以上已经基于实施方式描述了根据本公开内容的优化设备、优化方法和优化程序的一些方面,但是这些实施方式仅是示例并且本公开内容不限于以上描述。
[0218] 例如,在将翻转信息写入DRAM 22或使用翻转信息校正局部字段信息的处理期间,可以执行另一处理(例如图6中的步骤S18处的搜索处理)。SRAM 21a可以具有双缓冲器配置。在这种情况下,当CPU 21从DRAM 22读取某个组的局部字段信息或流通量信息并将这些信息写入SRAM 21a时,CPU 21可以同时执行另一处理(例如在图6中的步骤S18处的搜索处理)。

当前第1页 第1页 第2页 第3页