首页 / 优化装置和优化方法

优化装置和优化方法有效专利 发明

技术领域

[0001] 本文中讨论的实施方式涉及优化装置和优化方法。

相关背景技术

[0002] 作为计算诺依曼型计算机不易处理的大规模离散优化问题的装置,存在使用伊辛型评估函数(也称为能量函数等)的伊辛机(也称为玻尔兹曼机)。
[0003] 在通过伊辛机进行的计算中,使用伊辛模型来替换计算目标的问题,该伊辛模型是指示磁体的自旋行为的模型。通过马尔可夫链蒙特卡罗方法例如模拟退火方法或副本交换方法(也称为交换蒙特卡罗方法)来搜索其中使伊辛模型类型评估函数的值(对应于伊辛模型的能量)最小化的状态。
[0004] 在相关技术中,存在通过使用数字电路执行马尔可夫链蒙特卡罗方法来搜索其中使能量最小化的状态的优化装置。相关技术中的优化装置在假设一次改变仅一个状态变量的值的情况下计算能量的变化量(在下文中,在某些情况下,简称为能量变化),并且根据通过将与温度对应的噪声值加到能量变化中而获得的值来确定是否允许位的变化。还以预定的概率允许状态变量的值随能量的增加而变化,并且该概率随温度降低而降低。
[0005] 存在具有下述约束(独热约束)的优化问题,在该约束中评估函数中包括的多个状态变量中的具有值1的状态变量的数目为仅一个。作为独热约束,存在其中在一组约束等式2
中每个状态变量出现仅一次的约束以及其中当N 个状态变量以N行和N列的矩阵形式布置时每一行和每一列中包括的状态变量的值之和为1的约束。在下文中,前面的独热约束称为单向独热约束(1‑Way 1‑hot constraint),而后面的独热约束称为双向独热约束(2‑Way 
1‑hot constraint)。
[0006] 例如,对于九个状态变量(x1至x9),其中x1+x2+x3=1,x4+x5+x6=1且x7+x8+x9=1的约束是单向独热约束。流量优化问题、装箱问题等具有单向独热约束。
[0007] 例如,当x1至x9以三行和三列的矩阵形式布置时,其中x1+x2+x3=1,x4+x5+x6=1,x7+x8+x9=1,x1+x4+x7=1,x2+x5+x8=1,x3+x6+x9=1的约束是双向独热约束。旅行商问题、车辆分配计划问题、二次分配问题等具有双向独热约束。

具体实施方式

[0024] 在下文中,参照附图描述本公开内容的实施方式。
[0025] (第一实施方式)
[0026] 图1是示出根据第一实施方式的优化装置的示例的图。
[0027] 优化装置10搜索使伊辛模型的能量最小化的最优解。
[0028] 伊辛模型的能量由例如由以下等式(1)表示的评估函数E(x)定义。
[0029]
[0030] 右侧的第一项在针对可从伊辛模型中包括的所有状态变量选择的两个状态变量的所有组合在没有遗漏和重叠的情况下将两个状态变量值和权重系数的乘积相加。xi是第i个状态变量。xj是第j个状态变量。Wij是指示第i个状态变量与第j个状态变量之间的权重(例如,耦合强度)的权重系数。Wii=0。通常满足关系Wij=Wji(例如,权重系数的系数矩阵通常是对称矩阵)。
[0031] 右侧的第二项是所有状态变量的偏置系数与状态变量的值的乘积的和。bi表示第i个状态变量的偏置系数。c是不变的。
[0032] 例如,伊辛模型中自旋的“‑1”对应于状态变量的值“0”。伊辛模型中自旋的“+1”对应于状态变量的值“1”。因此,状态变量可以被称为具有值0或1的“位”。
[0033] 使等式(1)的值最小化的状态变量的值的组合是问题的解(最优解)。
[0034] 根据第一实施方式的优化装置10包括存储单元11、多个(p个)存储单元12a1、12a2、……、12ap、搜索单元13和控制单元14。
[0035] 存储单元11存储指示多个状态变量之间的相互作用的大小的多个权重系数的至少一部分的权重系数组。在存储单元11具有能够保存等式(1)中的所有权重系数的存储容量的情况下,可以存储所有权重系数。作为存储单元11的示例,可以使用具有比动态随机存取存储器(DRAM)等的访问速度高的访问速度的静态随机存取存储器(SRAM)等。
[0036] 存储单元12a1至12ap中的每一个存储等式(1)中包括的权重系数中的与包括所有状态变量的多个状态变量组(副本)中的每一个中的具有值1的状态变量有关的权重系数组。针对每个副本,哪个状态变量具有值1都是独立的。
[0037] 存储单元12a1到12ap中的每一个都可以保存所有状态变量组的值和稍后描述的局部字段,但是也可以将所有状态变量组的值和局部字段保存在搜索单元13中的寄存器中。
[0038] 作为存储单元12al至12ap的示例,可以使用SRAM等。存储单元12a1至12ap可以是一个存储装置(SRAM等)中的多个存储区域。
[0039] 搜索单元13针对每个副本对使能量最小化的最优解执行搜索处理。
[0040] 搜索单元13通过在满足单向独热约束或双向独热约束的同时重复更新状态变量的更新处理来执行搜索使伊辛模型的能量最小化的最优解并且输出针对每个副本的搜索结果的处理。
[0041] 在满足单向独热约束的同时执行更新处理的情况下,由控制单元14将所有副本共有的组指定给搜索单元13。搜索单元13基于使用存储在存储单元11和存储单元12a1至12ap中的权重系数组计算出的能量变化来确定是否更新组中包括的多个状态变量的值中的任意两个值。为了满足单向独热约束,在组中包括的状态变量中的具有值1的状态变量被更新为0的情况下,将仅一个具有值0的状态变量更新为1。
[0042] 图2是示出单向独热约束的示例的图。
[0043] 在图2的示例中,提供了均具有单向独热约束的M个组。每个组都有q个状态变量。例如,在由控制单元14指定具有组索引=k的组的情况下,搜索单元13针对所有副本对具有组索引=k的组执行更新处理。在图2的示例中,具有组索引=k的组中的x为1,并且其他状态变量(例如x)为0。i和j指示组中状态变量的索引,并且=(k‑1)q+i。即使当状态变量属于同一组时,针对每个副本,哪个状态变量为1或0都是独立的。
[0044] 在等式(1)中,当xi的值变为1‑xi时,xi的增量表示为Δxi=(1‑xi)‑xi=1‑2xi。由该值的变化引起的能量变化(ΔEi)由以下等式(2)表示。
[0045]
[0046] 在等式(2)中,当xi从1变为0时,Δxi变为‑1;以及当xi从0变为1时,Δxi变为1。hi被称为局部字段,并且hi与根据Δxi的符号(+1或‑1)的乘积是ΔEi。
[0047] 当xj从0变为1时,hi的变化为Δhi(j)=+Wij,以及当xj从1变为0时,hi的变化为Δhi(j) (i)=‑Wij。类似地,当xi改变时,针对xj的hj的变化可以表示为Δhj =ΔxiWij。
[0048] 因此,当xi和xj都改变时的能量变化可以由以下等式(3)表示。
[0049] ΔEij=‑Δxihi‑Δxj(hj+ΔxiWij)
[0050] =‑Δxihi‑Δxjhj‑ΔxiΔxjΔWij           (3)
[0051] 如上所述,为了从满足单向独热约束的一个状态转换为满足该约束的另一状态,两个状态变量的值被改变。当在xi从1变为0且xj从0变为1的情况下的能量变化表示为ΔEj时,Δxi=‑1且Δxj=1,因此,根据等式(3),ΔEj可以由以下等式(4)表示。
[0052] ΔEj=hi‑hj+Wij           (4)
[0053] 如果等式(1)中的xi或xj为0,则Wijxixj不参与能量,因此可以不提供等式(4)中的Wij。
[0054] 根据以上内容,在图2的示例中,在当x从1变为0并且x从0变为1时的能量变化表示为ΔEk时,根据等式(4),ΔEk可以由以下等式(5)表示。
[0055] ΔEk=h‑h         (5)
[0056] 在每个副本中,搜索单元13针对所指定的组中包括的多个状态变量中的具有值0的每个状态变量来如上所述计算能量变化。
[0057] 在每个副本中,基于计算出的能量变化,搜索单元13确定是否接受通过模拟退火方法、副本交换方法等引起能量变化的状态变量的变化。搜索单元13优选地接受使等式(1)中的E(x)减小的状态变量的变化,但是随机地允许使E(x)增加的变化。
[0058] 在确定组中的其值将从0更新为1的状态变量的情况下,搜索单元13将状态变量的值从0更新为1,并且将组中的其当前值为1的状态变量的值从1更新为0。搜索单元13更新局部字段。
[0059] 例如,针对某个副本,当图2中的x从1变为0并且x从0变为1时,基于以下等式(6)更新针对所有n个状态变量(x1至xn)的局部字段(h1至hn)。
[0060]
[0061] 等式(6)中包括的权重系数中,W1至Wn为与其值在更新之前为1的x有关的权重系数组,并且因此被存储在存储单元12a1至12ap中的任意一个中。W1至Wn被预先存储在存储单元11中。因此,从存储单元11和存储单元12a1至12ap中的任意一个读取这些权重系数组并且进行使用。
[0062] 搜索单元13从存储单元11读取与其值已从0更新为1的状态变量有关的权重系数组,并且使该权重系数组存储在存储单元12a1至12ap中。
[0063] 在满足双向独热约束的同时执行更新处理的情况下,由控制单元14将所有副本共有的两列或两行指定给搜索单元13。搜索单元13基于存储在存储单元11和存储单元12a1至12ap中的权重系数组来确定是否在两列之间或两行之间替换指定的两列或两行中包括的状态变量的值。在满足双向独热约束的情况下,每一列和每一行中包括的多个状态变量中的一个状态变量的值为1。因此,即使当两列或两行中包括的状态变量的值被替换时,也满足约束。
[0064] 图3是示出双向独热约束的示例的图。
[0065] 在图3的示例中,示出了具有双向独热约束的布置在N行和N列(N是2或更大的整数)中的状态变量。例如,在由控制单元14指定列k和列k'的情况下,搜索单元13针对两个副本对列k和列k'中包括的状态变量执行更新处理。
[0066] 在图3的示例中,作为列k的行i的状态变量的x为1,并且列k的其他状态变量(例如,作为行j的状态变量的x)为0。作为列k'的行j的状态变量的x为1,并且列k'中的其他状态变量(例如,作为行i的状态变量x)为0。即使当状态变量属于同一列时,针对每个副本,哪一行的状态变量为1或0都是独立的。
[0067] 在图3的情况下,替换列k和列k'中包括的状态变量的值相当于将x和x从0变为1以及将x和x从1变为0。
[0068] 在当以这种方式改变四个状态变量时的能量变化被表示为ΔEkk'时,ΔEkk'可以由以下等式(7)表示。
[0069] ΔEkk′=(h+h‑h‑h)‑(W+W)       (7)[0070]
[0071] 针对每个副本中指定的列k和列k',搜索单元13可以如上所述计算能量变化一次。
[0072] 基于计算出的能量变化,搜索单元13确定是否接受通过模拟退火方法、副本交换方法等引起能量变化的状态变量的变化(是否执行替换)。搜索单元13优选地接受使等式(1)中的E(x)减小的状态变量的变化,但是随机地允许使E(x)增加的变化。例如,在ΔEkk’也是正值的情况下,随机地允许替换列k和列k'中包括的状态变量的值。
[0073] 例如,在针对某个副本允许替换列k和列k'中包括的状态变量的值的情况下,x和x从0变为1,并且x和x从1变为0。搜索单元13更新局部字段。
[0074] 在x和x从0变为1并且x和x从1变为0的情况下,基于以下等式(8)更新针对所有n个状态变量(x1至xn)的局部字段(h1至hn)。
[0075]
[0076] 等式(8)中包括的权重系数中,W1至Wn和W1至Wn是与其值在更新之前为1的x和x有关的权重系数组,并且因此被存储在存储单元12a1至12ap的任意一个中。W1至Wn和W1至Wn被预先存储在存储单元11中。因此,从存储单元11和存储单元12a1至12ap中的任意一个读取这些权重系数组并且进行使用。
[0077] 对其他副本中的列k和列k'也执行与以上类似的处理。在执行两行之间的替换的情况下,也执行类似的处理。
[0078] 搜索单元13从存储单元11读取与其值已从0更新为1的状态变量有关的权重系数组,并且使该权重系数组存储在存储单元12a1至12ap中。
[0079] 搜索单元13通过改变要指定的组以及列或行来重复如上所述的处理,直到满足搜索结束条件(例如,预定数目的重复是否结束)为止。搜索单元13向控制单元14输出例如针对每个副本当满足搜索结束条件时的所有状态变量的值。
[0080] 搜索单元13可以针对每个副本并行地执行处理,或者可以以流水线方式进行操作。
[0081] 搜索单元13可以由例如包括加减电路、选择器等并且用于计算等式(5)至(8)的专用电子电路例如专用集成电路(ASIC)或现场可编程门阵列(FPGA))实现。
[0082] 控制单元14指定要由搜索单元13处理的组、两列或两行。这些组、两列或两行是所有副本共有的组、两列或两行。控制单元14指定要按预定顺序处理的组、两列或两行。例如,控制单元14指定要按组索引的升序处理的组。例如,控制单元14指定要由搜索单元13处理的两列为列1和列2、列1和列3、……、列1和列N、列2和列3、列3和列4、……。
[0083] 在存储单元11由于存储容量等的限制而没有保存等式(1)中的所有权重系数的情况下,控制单元14从存储装置20读取权重系数组的一部分并且将该部分存储在存储单元11中。存储装置20是例如DRAM或高带宽存储器(HBM)。
[0084] 控制单元14设置在搜索单元13中的更新处理中使用的各种参数,例如在模拟退火方法或副本交换方法中使用的温度参数、各个状态变量的初始值等。各个状态变量的初始值被设置成满足单向独热约束或双向独热约束。
[0085] 例如,控制单元14接收搜索单元13中满足搜索结束条件时的所有状态变量的值(搜索结果),并且基于等式(1)计算每个副本的能量。控制单元14将例如副本中的指示最低能量的搜索结果(所有状态变量的值)作为问题的解输出至耦接至控制单元14的显示设备(未示出)等。例如,控制单元14可以经由有线或无线网络将搜索结果发送至外部信息处理装置。
[0086] 搜索单元13可以基于由于状态变量的更新引起的能量变化来计算每个副本的能量。
[0087] 控制单元14可以由例如专用电子电路如ASIC或FPGA实现。控制单元14不限于此并且可以是诸如中央处理单元(CPU)或图形处理单元(GPU)的处理器。
[0088] 在下文中,将描述优化装置10在求解具有双向独热约束的问题时的处理示例(优化方法的示例)。
[0089] 图4是示出具有双向独热约束的问题的处理示例的图。
[0090] 在图4的示例中,假设作为计算目标并且具有双向独热约束的问题的大小为4k(状态变量的总数为4096)。图4示出了其中4096个状态变量布置在64行和64列中的变量矩阵的示例。权重系数矩阵的一行为4k个字。当存储单元11的存储容量为2k个变量(状态变量的数目是2048)时,可以保存的权重系数矩阵的大小是2k×2k个字。2k×2k可以表示为64×16(=1k)×4k,并且因此可以将与变量矩阵的十六列对应的数的权重系数存储在存储单元11中。
[0091] 控制单元14在搜索单元13中设置满足双向独热约束的各种参数和状态变量的初始值。控制单元14基于状态变量的初始值从存储装置20读取与具有值1的状态变量有关的权重系数并且使权重系数经由存储单元11存储在存储单元12a1至12ap中(权重系数可以从存储装置20直接存储在存储单元12a1至12ap中)。
[0092] 控制单元14可以针对每个副本基于状态变量的初始值、权重系数和偏置系数计算等式(2)中的局部字段(hi)的初始值,并且将该初始值写入存储单元12a1至12ap或搜索单元13的寄存器(未示出)中。可以由搜索单元13计算局部字段的初始值。在搜索单元13计算局部字段的初始值的情况下,例如,搜索单元13从控制单元14接收偏置系数,读取存储在存储单元12a1至12ap中的权重系数,并且计算局部字段的初始值。
[0093] 例如,控制单元14读取存储在存储装置20中的权重系数矩阵中的与变量矩阵的列1至列16中的状态变量有关的权重系数组(权重系数矩阵的第一1k行(行1至1024)),并且使权重系数组存储在存储单元11中。
[0094] 控制单元14将列1至列16中要处理的两列指定给搜索单元13。图4的示例中的“交换k,k'”指示针对各个副本1至p指定列k和列k'。在这种情况下,在副本1至p中的每个副本中,搜索单元13基于等式(7)计算由于在列k与列k'之间发生替换而引起的能量变化,并且基于能量变化来确定是否可以替换。在允许替换的情况下,更新四个状态变量的值。在这种情况下,基于等式(8)来更新局部字段。
[0095] 从16列中选择两列的组合有16C2(=120)个,因此,例如,进行120次尝试。例如,如上所述,将要由搜索单元13处理的两列指定为列1和列2、列1和列3、……、列1和列16、列2和列3、第3列和第列4、……等。
[0096] 例如,控制单元14使存储在存储装置20中的权重系数矩阵中的与下一个十六列的状态变量有关的权重系数组被读取,使权重系数组存储(被重写)在存储单元11中,并且执行与上述相同的处理。随后的十六列中的状态变量也以相同的方式处理。
[0097] 在始终读取与十六列的状态变量有关的权重系数组的情况下,有可能生成其中不容易允许替换的列的组合。例如,有效的是,控制单元14组合了如下所述的多种读取方法。
[0098] 图5是示出多种读取方法的示例的图。
[0099] 读取方法1是例如一次从64列的状态变量中选择16列并且从存储装置20读取与16列的状态变量有关的权重系数组的方法。读取方法2是例如一次从64行的状态变量中选择16行并且从存储装置20读取与16行的状态变量有关的权重系数组的方法。读取方法3是例如一次从64列的状态变量中选择四列并且从存储装置20读取与四列的状态变量有关的权重系数组的方法。读取方法4是例如一次从64行的状态变量中选择4行并且从存储装置20读取与四行的状态变量有关的权重系数组的方法。读取方法5是例如一次从64列的状态变量中选择8列并且从存储装置20读取与8列的状态变量有关的权重系数组的方法。读取方法6是例如一次从64行的状态变量中选择乘8行并且从存储装置20读取与8行的状态变量有关的权重系数组的方法。
[0100] 例如,控制单元14组合多种读取方法,使得在通过读取方法1读取结束之后,通过读取方法2进行读取,并且在通过读取方法2读取结束之后,通过读取方法3进行读取。
[0101] 在下文中,在流程图中概括了根据第一实施方式的优化装置10的处理的示例的流程。
[0102] 图6是示出根据第一实施方式的优化装置进行的处理的示例的流程的流程图。
[0103] 首先,执行初始设置处理(步骤S1)。在初始设置处理中,控制单元14设置在搜索单元13中的更新处理中使用的各种参数,例如在模拟退火方法或副本交换方法中使用的温度参数、各个状态变量的初始值等。在以下描述中,假设搜索单元13通过模拟退火方法对各个副本并行地执行搜索处理。控制单元14基于状态变量的初始值、权重系数和偏置系数来计算等式(2)中的局部字段(hi)的初始值,并且将该初始值写入存储单元12a1至12ap或搜索单元13的寄存器(未示出)中。控制单元14基于状态变量的初始值从存储装置20读取与具有值1的状态变量有关的权重系数,并且使该权重系数存储在存储单元12a1至12ap中。
[0104] 搜索单元13读取所保存的局部字段和状态变量(步骤S2)。
[0105] 控制单元14读取作为存储在存储装置20中的多个权重系数的一部分的权重系数组,并且使该权重系数组存储在存储单元11中(步骤S3)。在步骤S3中的第二处理和后续处理中,用另一权重系数组替换存储在存储单元11中的权重系数组。在步骤S3中的处理之后,控制单元14将更新处理目标的组或两列(可以是两行,在下文中同样适用)指定给搜索单元13(步骤S4)。
[0106] 搜索单元13计算能量变化(步骤S5)。在满足双向独热约束的同时针对每个副本执行更新处理的情况下,搜索单元13通过例如等式(7)来计算由于所指定的两列的替换(四个状态变量的值的变化)而引起的能量变化。在满足单向独热约束的同时执行更新处理的情况下,搜索单元13针对具有值0的状态变量中的每个状态变量通过例如等式(5)来计算由于所指定的组中的两个状态变量(具有值0的状态变量中的一个以及具有值1的状态变量)的值的变化而引起的能量变化。
[0107] 搜索单元13基于计算出的能量变化和温度参数选择更新目标的状态变量(步骤S6)。搜索单元13基于温度参数优先采用引起使能量减少的能量变化的状态变量的变化,以及随机地允许引起使能量增加的能量变化的状态变量的变化。随着温度参数的增大,更大幅度地增加能量的能量变化的允许概率增加,而随着温度参数的减小,概率减小。
[0108] 搜索单元13更新所选择的状态变量的值并更新局部字段(步骤S7)。局部字段的更新例如按照上述等式(6)或等式(8)进行。更新后的状态变量和局部字段被写入寄存器(未示出)中。
[0109] 搜索单元13使从存储单元11读取与其值已从0更新为1的状态变量有关的权重系数组并且将其存储在存储单元12a1至12ap中(步骤S8)。例如,更新存储在存储单元12a1至12ap中的权重系数组。
[0110] 控制单元14确定在从存储装置20读取的权重系数组的范围内是否已经指定了所有组或所有两列组合(步骤S9)。例如,如图4所示,在从存储装置20读取与变量矩阵的列1至列16的状态变量有关的权重系数组并且将权重系数组存储在存储单元11中的情况下,控制单元14确定是否已指定全部16C2(=120)个组合。在控制单元14确定未指定所有组或所有两列组合的情况下,重复从步骤S4开始的处理。
[0111] 在确定已经指定了所有组或所有两列组合的情况下,控制单元14在确定在搜索单元13中针对每个副本的更新处理的次数是否达到预定次数N1(步骤S10)。在更新处理的次数未达到预定次数N1的情况下,重复从步骤S2开始的处理。在这种情况下,在步骤S3的处理中,从存储装置20读取多个权重系数中的权重系数组的另一部分并且将其存储在存储单元11中,并且进行与上述相同的处理。例如,用另一权重系数组替换作为权重系数组存储在存储单元11中的目标。
[0112] 在更新处理的次数达到预定次数N1的情况下,控制单元14确定温度参数的变化的次数(温度变化次数)是否已达到预定次数N2(步骤S11)。
[0113] 在温度变化的次数尚未达到预定次数N2的情况下,控制单元14改变(降低温度)温度参数(在图6中表示为T)(步骤S12)。基于退火条件,确定改变预定次数N1和N2以及T的值的方法(一次减小值到什么程度等)。在步骤S12中的处理之后,重复从步骤S2开始的处理。
[0114] 例如,当温度变化的次数已达到预定次数N2时,控制单元14接收此时保存在搜索单元13的寄存器中的所有状态变量的值(搜索结果),并且基于等式(1)计算针对每个副本的能量。例如,控制单元14将副本中的指示最低能量的搜索结果(所有状态变量的值)作为问题的解输出至显示设备等(步骤S13)。因此,优化装置10进行的处理结束。
[0115] 上述处理的顺序不限于上述示例,并且可以适当地切换。
[0116] 在以上描述中,将相同的温度参数值分配至每个副本,但是在执行副本交换方法的情况下,将不同的温度参数值分配至每个副本。每隔预定数目的更新处理,基于每个副本的能量和温度参数的值以预定的交换概率来交换副本之间设置的温度参数的值或状态变量的值。
[0117] 根据如上所述的第一实施方式的优化装置10,搜索单元13可以针对每个副本对所指定的共有的两列、两行或组执行更新处理。因此,能量变化的计算的次数减少(在双向独热约束的情况下,在指定一次的情况下,计算一次),并且可以在抑制硬件复杂性的同时,计算包括诸如单向独热约束或双向独热约束的独热约束的问题。
[0118] 由于如上所述指定了其中进行更新处理的范围,因此可以部分地省略要存储在优化装置10中的权重系数。因此,可以计算出具有较大规模的问题。由于在使用存储在存储单元11中的权重系数组的范围内执行更新处理,因此优化装置10可以不那么频繁地访问存储装置20。
[0119] 通过每隔预定次数的更新处理替换存储在存储单元11中的权重系数组并且周期性地改变要作为更新处理的目标的状态变量,与同时采用所有状态变量作为更新处理的目标的情况相比,可以减小所获得的搜索结果之间的差异。
[0120] 图7是示出根据第一实施方式的优化装置的修改示例的图。在图7中,与图1所示的元件相同的元件被赋予相同的附图标记。
[0121] 修改示例的优化装置10a的存储单元11a包括两个存储单元11a1和11a2。例如,可以使用SRAM等作为存储单元11a1和11a2中的每一个。
[0122] 存储单元11a1经由开关11b1耦接至存储装置20,并且存储单元11a2经由开关11b2耦接至存储装置20。存储单元11a1经由开关11c1耦接至存储单元12a1至12ap,并且存储单元11a2经由开关11c2耦接至存储单元12a1至12ap。开关11b1、11b2、11c1和11c2的接通/断开由控制单元14控制。
[0123] 在搜索单元13使用存储在存储单元11a1和11a2之一中的权重系数组执行更新处理时,从存储装置20读取与要作为下一个更新处理目标的状态变量有关的权重系数组并且将其写入存储单元11a1和11a2中的另一个中。
[0124] 例如,控制单元14接通开关11c2并断开开关11b2,并且使搜索单元13使用与存储在存储单元11a2中的十六列的状态变量有关的权重系数组来执行更新处理。此时,控制单元14接通开关11b1并断开开关11c1,并且使从存储装置20读取与下一个十六列的状态变量有关的权重系数组并将其存储在存储单元11a1中。
[0125] 这可以大幅缩短从存储装置20读取数据所花费的时间,并且可以缩短计算时间。
[0126] (第二实施方式)
[0127] 图8是示出根据第二实施方式的优化装置的示例的图。
[0128] 根据第二实施方式的优化装置30包括与根据第一实施方式的优化装置10的元件相同的元件,但是在经受独热约束的状态变量和未经受独热约束的状态变量混合在所有状态变量中的情况下执行处理。
[0129] 图8示出了存储在存储装置20中的权重系数矩阵的示例。
[0130] 权重系数矩阵包括与经受双向独热约束的状态变量(以下称为2W1H变量)、经受单向独热约束的状态变量(以下称为1W1H变量)以及未经受独热约束的状态变量(以下称为1位变量)有关的权重系数。图8示出了在计算目标的问题的大小为6k,2W1H变量的数目为4k(64×64),1W1H变量的数目为1k(64个组,每组有16个变量),以及1位变量的数目为1k的情况下的权重系数矩阵的示例。
[0131] 优化装置30的存储单元31存储作为这种权重系数矩阵的至少一部分的权重系数组。在图8的示例中,存储单元31保存与2W1H变量矩阵的一些列或行有关的权重系数组、与1W1H变量的一些组有关的权重系数组以及与1位变量中的一些有关的权重系数组。可以将指示权重系数组是否与2W1H变量、1W1H变量或1位变量有关的标识信息分配至每个权重系数组。作为存储单元31的示例,可以使用SRAM等。
[0132] 存储单元32a1至32ap中的每一个存储与2W1H变量或1W1H变量中的具有值1的状态变量有关的权重系数组。针对每个副本,哪个状态变量具有值1都是独立的。作为存储单元32a1至32ap的示例,可以使用SRAM等。
[0133] 搜索单元33在针对2W1H变量满足双向独热约束和针对1W1H变量满足单向独热约束的同时重复更新2W1H变量、1W1H变量或1位变量的更新处理。因此,搜索单元33搜索使伊辛模型的能量最小化的最优解,并且输出搜索结果。搜索单元33针对每个副本执行这种处理。控制单元34向搜索单元33指定所有副本共有的两列或两行用于2W1H变量的更新处理,并且指定所有副本共有的组用于1W1H变量的更新处理。
[0134] 在更新处理中,针对2W1H变量,通过例如等式(7)计算由于所指定的两列或两行的替换(四个状态变量的值的变化)而引起的能量变化。针对1W1H变量,针对具有值0的状态变量中的每个状态变量,通过例如等式(5)计算由于所指定的组中两个状态变量(具有值0的状态变量中的一个和具有值1的状态变量)的值的变化引起的能量变化。针对1位变量,计算由于每个1位变量的值的变化而引起的能量变化。例如,采用计算出的能量变化中的引起使能量最小化的能量变化的状态变量的变化,并且更新状态变量的值。当状态变量的值被更新时,搜索单元33更新局部字段。
[0135] 搜索单元33通过改变要指定的组、列或行来针对2W1H变量或1W1H变量重复如上所述的处理直到满足预定的搜索结束条件为止,并且针对第一位变量重复相同处理直到满足预定的搜索结束条件为止。例如,搜索单元33将满足搜索结束条件时每个副本的所有状态变量的值输出至控制单元34。
[0136] 搜索单元33可以由例如专用电子电路如ASIC或FPGA实现。
[0137] 控制单元34指定要由搜索单元33处理的组、两列或两行。控制单元34指定组、两列或两行要按预定顺序处理。
[0138] 另外,在存储单元31由于存储容量等的限制而没有保存等式(1)中的所有权重系数的情况下,控制单元34如上所述从存储装置20读取权重系数组的一部分,并且使权重系数组的该部分存储在存储单元31中。
[0139] 控制单元34设置在搜索单元33中的更新处理中使用的各种参数,例如在模拟退火方法或副本交换方法中使用的温度参数、各个状态变量的初始值等。
[0140] 例如,控制单元34接收在搜索单元33中满足搜索结束条件时的所有状态变量的值(搜索结果),并且基于等式(1)计算每个副本的能量。例如,控制单元34将副本中的指示最低能量的搜索结果(所有状态变量的值)作为问题的解输出至显示设备等。
[0141] 搜索单元33可以基于由于状态变量的更新而引起的能量变化来计算每个副本的能量。
[0142] 控制单元34可以由例如专用电子电路如ASIC或FPGA实现。控制单元34不限于此,并且可以是诸如CPU或GPU的处理器。
[0143] 根据如上所述的第二实施方式的优化装置30通过例如与图6所示的流程图类似的处理流程进行操作。然而,在步骤S5中的处理中,如上所述,计算针对2W1H变量、1W1H变量和1位变量中的每一个的能量变化。
[0144] 根据如上所述的优化装置30,可以获得与第一实施方式的优化装置10的效果相似的效果,并且即使在经受独热约束的变量状态和未经受独热约束的状态变量混合的情况下也可以执行优化处理。
[0145] 切换和利用如图7所示的两个存储单元11a1和11a2的方法也适用于根据第二实施方式的优化装置30。
[0146] 可以设置根据第一实施方式的优化装置10和根据第二实施方式的优化装置30的多组存储单元11和31、存储单元12a1至12ap和32a1至32ap以及搜索单元13。
[0147] 尽管已经基于实施方式描述了本公开内容的优化装置和优化方法的一方面,但是这些仅是示例,并且本公开内容不限于以上描述。
[0148] [附图标记列表]
[0149] 10 优化装置
[0150] 11、12a1至12ap 存储单元
[0151] 13 搜索单元
[0152] 14 控制单元
[0153] 20 存储装置
[0154] [引用列表]
[0155] [专利文献]
[0156] 日本公开特许公报第2016‑51349号。
[0157] 日本公开特许公报第2018‑41351号。

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