优化装置及优化装置的控制方法与流程

文档序号:20920822发布日期:2020-05-29 14:07阅读:308来源:国知局
优化装置及优化装置的控制方法与流程

本文讨论的实施方式涉及优化装置和优化装置的控制方法。



背景技术:

在当前社会中,在每个领域中都执行信息处理。使用算术设备例如计算机来执行信息处理,并且通过计算和处理各种数据以获得有意义的结果来执行预测、确定、控制等。信息处理的领域之一是被认为是重要领域的优化。例如,可能存在使执行某个处理所需的资源和成本最小化的优化问题,或者寻找使处理的效果最大化的解的优化问题。显然,这些问题非常重要。

在优化问题中,已知的是被称作离散优化问题、组合优化问题等的大多数问题很难求解,因为变量采用离散值而不是连续值。使得难以求解离散优化问题的最大原因是,存在大量称为局部解的状态,每个局部解都不是最优解,而是在局部邻域中取最小值。

由于没有有效求解离散优化问题的通解,因此有必要使用采用特定于该问题的属性的近似解方法或者不十分依赖该问题的属性的称作元启发式方法的方法。

下文描述的内容涉及使用马尔可夫链蒙特卡洛方法(markovchainmontecarlomethod)的解——该方法是元启发式方法,并且特别涉及称作交换蒙特卡洛方法(exchangemontecarlomethod)或者副本交换方法(replicaexchangemethod)的解——该方法从广义上讲是伪退火方法(pseudoannealingmethod)。

伪退火方法是通过使用随机数随机地改变状态(可变矢量的值)来获得最优解的方法。使要优化的评估函数的值最小化的问题将作为示例在下面进行描述,并且将评估函数的值称为能量。对于最大化,可以更改评估函数的符号。

在伪退火方法中,当使用与转变有关的温度和能量变化来如下确定状态转变的接受(许可)概率时,证明了状态在时间(迭代次数)无穷大的极限处达到最优解。

[式1]

[式2]

fmetro(x)=min(1,ex)(2)

[式3]

式(2)是metropolis方法。式(3)是gibbs方法。可以使用式(2)和式(3)中任何之一。

此处,符号“t”是表示温度的参数,并且根据问题,该参数的初始值需要足够大,使得温度充分缓慢地降低。

如上所述,在伪退火方法中,当迭代次数为无穷大时,可以获得最优解。然而,实际上,由于必须以有限次数的迭代获得解,因此可能无法可靠地获得最优解。另外,如上所述,由于温度降低非常缓慢,因此在有限时间内温度不能充分下降。因此,在实际的伪退火方法中,温度通常比理论上保证收敛的温度变化更快地降低。

在实际的伪退火方法中,当满足结束确定条件时,例如当在从初始状态开始降低温度的同时重复上述迭代以达到一定迭代次数时,或者当能量变得低于预定值时,运算结束。输出响应是结束时的状态。然而,实际上,由于在有限次数的迭代中温度不会变为零,因此即使在结束时,状态占用概率(stateoccupationprobability)也具有由boltzmann分布等表示的分布,并且因此,不能说获得了最优值或者好的解。因此,现实的解将保持到目前为止在迭代的中间获得的最低能量,并且在结束时输出该最低能量。

根据以上说明可以在一定程度上想象,尽管伪退火方法是通用且吸引人的,但是必须缓慢地降低温度,并且伪退火方法中存在计算时间变得相对较长的问题。此外,还存在难以根据该问题适当地调整降低温度的方法的问题。当降低温度的方法太慢时,在有限时间内温度不会下降太多,并且最终热分布的能量范围变得较宽。结果,占用好的解的概率没有增加。相反,当温度下降太快时,由于在从局部解逃离之前温度降低并且变成陷入不良解中的状态,因此获得好的解的概率降低。

副本交换方法是使用多个温度同时执行蒙特卡洛搜索(以下称为“随机搜索”)、以一定迭代次数比较状态能量,并以适当的概率对两个温度执行交换状态的操作的方法。

图25是示出使用普通副本交换方法的优化装置的配置示例的图。与使用普通伪退火方法的优化装置不同,优化装置50包括多个副本(图25中的搜索单元51a1、51a2、…、51ai、…、51an)与交换控制器52。交换控制器52将温度信息(以下称作逆温度βi(t的倒数)(1≤i≤n))提供给搜索单元51a1至51an。

图25示出了搜索单元51ai的示例。其他搜索单元具有相同的配置。搜索单元51ai包括:状态保持单元60、能量计算单元61以及转变控制器62。

状态保持单元60保持评估函数中包括的多个状态变量的值。此外,状态保持单元60基于指示是否可以状态转变的标志f和由标志f指示的状态变量编号(索引)n来更新作为多个状态变量的值(可变矢量的值)的状态si。

能量计算单元61对伴随状态变量的变化(状态转变)的能量变化进行计算。例如,当评估函数由两个状态变量之间的耦合表示的ising模型表示并且一次仅允许一个状态变量转变时,能量计算单元61基于每个状态变量的值、指示状态变量之间的耦合强度的耦合系数、编号n和标志f来计算伴随多个状态变量的每个状态变量的变化(状态转变)的能量变化。能量变化δeij指示伴随第j个状态变量的变化的能量变化。此外,将根据要计算的优化问题的耦合系数的值预先存储在存储器、寄存器等中。当评估函数不是ising模型并且当同时允许多个状态变量转变时,状态转变编号与变化的状态变量编号不必彼此匹配,但是需要对关于状态转变编号的能量变化进行适当地计算。可以使用逻辑电路例如乘积-求和运算电路来实现能量计算单元61。

与普通伪退火方法类似,转变控制器62通过使用由交换控制器52分配的能量变化δeij和逆温度βi根据下式(4)确定第j个状态变量的状态转变的接受概率来执行随机搜索。

[式4]

p(δeij,βi)=f(-βiδeij)(4)

在式(4)中,函数f与式(1)中的函数相同,并且例如,将式(2)的metropolis方法用作函数f。基于状态转变接受概率,转变控制器62输出指示状态是否可以转变的标志f和由标志f指示的状态转变编号。此外,转变控制器62基于能量变化δeij更新并输出能量ei。

交换控制器52在每个固定的迭代次数处观察每个搜索单元中的能量e,并且使用搜索单元51a1至51an中的两个搜索单元中的能量e和逆温度β来基于由下式(5)表示的交换概率交换两个搜索单元中的状态变量的值。代替状态变量的值,可以交换提供给两个搜索单元的逆温度。

[式5]

pij=f((βi-βj)(ei-ej))(5)

在式(5)中,βi是赋予搜索单元51ai的逆温度,βj是赋予第j个搜索单元(未示出)的逆温度,ei是搜索单元51ai中的能量,ej是第j个搜索单元中的能量。在式(5)中,函数f与式(1)中的函数相同。例如,将式(2)的metropolis方法用作函数f。

即使当执行这样的交换时,每个温度状态的概率分布也收敛于该温度的boltzmann(玻尔兹曼)分布。然后,与不执行交换的情况相比,收敛到该分布所需的弛豫时间可以明显缩短。

选择要交换的两个搜索单元,使得所提供的温度接近(例如,选择那些提供邻近温度的两个搜索单元),以防止交换概率太小。

在优化装置50中,当通过专用电路实现多次执行迭代处理的搜索单元51a1至搜索单元51an并且通过软件实现交换控制器52的功能时,可以由点通过(pointpassing)来交换温度接近的两个搜索单元的状态变量的值(或温度信息)。在这种情况下,不必针对每次交换执行用于以较低温度或者较高温度的顺序来排列用于识别搜索单元51a1至51an的信息的分类处理。

例如,已经提出了在设置了不同温度的多个网络(称为集合体(ensembles))中执行随机搜索的信息处理设备。信息处理设备根据温度彼此邻近设置的集合体之间的集合体能量的差来交换集合体的节点的状态。结果,防止落入局部解,并且以较高的速度收敛最优值。

另外,已经提出了一种用于温度平行模拟退火的恒温槽设备,该设备改变用于控制模拟退火算法的执行的参数,使得模拟退火处理单元在第一温度下有效地操作。该设备在设定条件下执行模拟退火处理,并且将通过执行模拟退火处理获得的状态与通过在第二温度下执行模拟退火处理获得的状态随机交换。

还已经提出了分析系统,该分析系统获得在沿着汉明(hamming)距离和属于初始代或者第二代之后的任何代的每个基因的适应度这两个轴延伸的平面上的频率分布,并且根据该频率分布来改变遗传算法的参数。

例如,在日本公开特许公报第2018-005541号、日本公开特许公报第09-231197号和日本公开特许公报第09-325949号中公开了相关技术。

如上所述,当在设置了不同温度的多个搜索单元中执行随机搜索时,存在求解性能根据在搜索单元中设置的温度而被降低的问题。实施方式的一个方面的目的是提供可以提高求解精度的优化装置和优化装置的控制方法。



技术实现要素:

根据实施方式的一个方面,一种优化装置包括:多个搜索单元,每个搜索单元包括;状态保持单元,其用于保持包括在表示能量值的评估函数中的多个状态变量的值;能量计算单元,其用于通过针对响应于多个状态变量的值之一的变化而发生的多个状态转变中的每个状态转变计算能量值的改变值来执行基态搜索;转变控制器,其用于基于设定的温度值、改变值和随机数值,根据能量值的改变值与热激发能量之间的相对关系,随机地确定是否接受多个状态转变之一;以及控制器,该控制器包括:温度调节单元,用于:获取温度统计信息,该温度统计信息是关于多个搜索单元中的每个搜索单元中的温度值的转变的统计信息;以及基于所获取的温度统计信息,确定要在多个搜索单元的每个搜索单元中设置的温度值;温度控制器,其用于为多个搜索单元中的每个搜索单元设置所确定的温度值;交换控制器,其用于在达到预定重复次数的针对能量值的基态搜索之后或者经过预定时间之后,在多个搜索单元之间交换温度值或多个状态变量的值。

附图说明

图1是示出根据第一实施方式的优化装置的视图;

图2是示出优化装置的电路配置示例的视图;

图3是示出状态转变确定电路的电路配置示例的视图;

图4是示出选择器单元的电路配置示例的视图;

图5是示出温度调节单元的电路配置示例的视图;

图6是示出在寄存器中存储的数据的示例的视图;

图7是示出数据获取算法的示例的视图;

图8是示出最低能量与温度的变化的示例的视图;

图9是示出温度直方图的示例的视图;

图10是示出累积直方图(cumulativehistogram)的示例的视图;

图11是示出副本交换的整体控制的示例的流程图;

图12是示出搜索单元处理的示例的流程图;

图13是示出数据收集处理的示例的流程图;

图14是示出交换控制的示例的流程图;

图15是示出处理流程的示例的视图(部分1);

图16是示出处理流程的示例的视图(部分2);

图17是示出优化装置的另一硬件示例的视图;

图18是示出根据第二实施方式的优化装置的电路配置示例的视图;

图19是示出温度调节单元的电路配置示例的视图;

图20是示出在寄存器中存储的数据的示例的视图;

图21是示出副本交换的整体控制的示例的流程图;

图22是示出数据收集处理的示例的流程图;

图23是示出交换控制的示例的流程图;

图24是示出解的数目的示例的视图;以及

图25是示出使用普通副本交换方法的优化装置的配置示例的视图。

具体实施方式

在下文中,将参照附图描述实施方式。

<第一实施方式>

将描述第一实施方式。

图1是示出根据第一实施方式的优化装置的视图。

优化装置1包括多个搜索单元(搜索单元10a1、10a2、…、10an)和控制器20。符号“n”表示2或者更大的整数,并且对应于搜索单元的数量。搜索单元10a1至10an中的每个均包括状态保持单元、能量计算单元和转变控制器。例如,搜索单元10a1包括状态保持单元11、能量计算单元12和转变控制器13。

状态保持单元11保持包括在表示能量值的评估函数中的多个状态变量的值。在图1中,由e1表示搜索单元10a1中的能量值,并且由s1表示搜索单元10a1中的多个状态变量的值。

当响应于多个状态变量的值中的任何一个的变化而发生多个状态转变时,能量计算单元12通过针对多个状态转变中的每个状态转变计算能量值的改变值(δe1j)来执行基态搜索(groundstatesearch)。

转变控制器13基于设定的温度值、改变值和随机数值,根据能量值的改变值与热激发能量之间的相对关系,随机地确定是否接受多个状态转变中的任何一个。如上所述,转变控制器13基于式(4)来确定是否可以状态转变,并且输出指示状态转变是否可以的标志f和由标志f指示的状态转变编号(statetransitionnumber)。在图1中,通过索引来表示由标志f指示的状态转变编号。

搜索单元10a1至10an并行操作以执行上述基态搜索。

控制器20控制搜索单元10a1至10an。控制器20包括温度调节单元21、温度控制器22和交换控制器23。

温度调节单元21获取温度统计信息,该温度统计信息是关于搜索单元10a1至10an的每个中的温度值的转变的统计信息,并且基于所获取的温度统计信息来确定要在搜索单元10a1至10an的每个中设置的温度值。由于搜索单元10a1至10an的数目为n,因此设定温度值的数目为n。n个温度值彼此不同。例如,温度值可以是逆温度β1、β2、…、βn(βi=1/ti),它们是温度t1、t2、…、tn的倒数。

温度控制器22为搜索单元10a1至10an中的每个设置所确定的温度值。

在能量值基态搜索被重复预定次数之后或者经过预定时段之后,交换控制器23替换多个搜索单元中的温度值或多个状态变量的值。交换控制器23分别从搜索单元10a1至10an获取能量值e1、e2、…、en,并且如上所述,基于式(5)确定是否在搜索单元之间替换温度值。替选地,代替确定是否在搜索单元之间替换温度值,交换控制器23可以基于式(5)确定是否在搜索单元之间替换多个状态变量的值。

此处,将描述由温度调节单元21进行的温度确定的示例。例如,温度调节单元21可以在搜索单元10a1至10an的每个中设置温度值,该温度值与通过对所获取的温度统计信息中每个温度值关于温度值转变而言的出现频率进行计数而获得的温度频率信息中的出现频率的最大值相对应。

更具体地,当在任何搜索单元中更新了能量值的最小值时,温度调节单元21获取从能量值的最小值的先前更新到当前更新在相应搜索单元中设置的温度中的最高温度值作为温度统计信息。例如,温度调节单元21指定在通过对所获取的温度值针对每个温度值的出现频率进行计数而获得的直方图中具有最高出现频率的温度值,并且基于所指定的温度值,计算在搜索单元10a1至10an的每个中设置的温度值。

在示例中,温度调节单元21根据下式(6)和下式(7),计算n个温度值中第i个温度tmp[i](i=1、2、…、n)。

[式6]

[式7]

max_tmp(或者tmp_max)是设定温度的最大值,并且是在直方图中具有最高出现频率的温度值。min_tmp(或者tmp_min)是设定温度的最小值并且是预先给定的。因此,温度调节单元21根据所获取的温度统计信息确定温度值的最大值max_tmp,并且基于最大值max_tmp确定要在搜索单元10a1至10an的每个中设置的温度值。如上所述的设定温度的最大值max_tmp是在温度统计信息中具有最高出现频率的温度值的原因是,据估计,通过使用具有最高出现频率的温度值作为最大值存在更新搜索单元的能量值的最小值的高可能性。然而,最大值max_tmp可以是例如比具有最高出现频率的温度值高预定值(或预定比率)的温度。

替选地,温度调节单元21在搜索单元10a1至10an的每个中设置温度值,该温度值与通过将累积频率的最大值乘以温度累积频率信息中的预定系数获得的频率相对应,所述温度累积频率信息指示在所获取的温度统计信息中关于温度值的转变每个温度值的出现频率的累计的累积频率。

更具体地,温度调节单元21获取通过从较小温度值起直方图中每个温度值的出现频率的累计而获得的累积频率,作为温度累积频率信息。然后,温度调节单元21指定与通过将表示累积频率的累积直方图中的累积频率的最大值乘以预定系数而获得的频率相对应的温度值,并且基于所指定的温度值计算要在搜索单元10a1至10an的每个中设置的温度值。即,根据式(6)和式(7),温度调节单元21使用指定的温度值作为最大值max_tmp来计算温度tmp[i]。

另外,可以通过温度控制器22在搜索单元10a1至10an的每个中设置由温度调节单元21确定的温度tmp[i](温度值)。另外,温度调节单元21在能量值基态搜索被重复预定次数之后或者经过预定时段之后从搜索单元10a1至10an的每个中获取能量值,并且针对每个搜索单元检查能量值的最小值是否已经更新。例如,温度调节单元21在能量值基态搜索被重复预定次数之后或者经过预定时段之后,在由交换控制器23在搜索单元之间替换温度值(或者状态变量值)之前,检查能量值的最小值是否已经更新。

然后,温度调节单元21获取预定时段中的温度统计信息,在该预定时段中,在搜索单元10a1至10an的每个中设置第一温度值。在预定时段结束之后,温度调节单元21基于温度统计信息确定要在搜索单元10a1至10an的每个中设置的第二温度值。

例如,温度调节单元21在搜索单元10a1至10an进行基态搜索的整个时段的初始部分中获取温度统计信息,并基于该温度统计信息确定温度tmp[i]。控制器20在剩余时段中使用所确定的温度tmp[i]继续搜索单元10a1至10an进行的基态搜索。

替选地,温度调节单元21可以关于搜索单元10a1至10an进行的基态搜索的整个时段获取每个预定部分时段的温度统计信息,并且确定该部分时段后的温度tmp[i]。然后,在下一部分时段中,控制器20可以使用基于在先前部分时段中获取的温度统计信息所确定的温度tmp[i],继续进行通过搜索单元10a1至10an进行的基态搜索。

此处,“时段”可以由搜索单元10a1至10an进行的基态搜索的重复次数来确定,或者可以由时间间隔来确定。

同时,可以想到使用如上所述的副本交换方法来执行优化运算。副本交换方法是在称为多副本的系统中在不同的温度执行基态搜索,并根据由能量和温度确定的转变概率在一定时段内交换例如邻近系统的温度或状态(多个状态变量值)的方法。根据副本交换方法,即使当温度下降并且解落入局部解时,也可以通过副本交换升高一次温度来再次搜索全局解,从而在不考虑复杂温度调度的情况下高速地获得解。然而,必须适当地确定要为每个副本设置的温度,并且当温度(特别是温度的最大值)太高或太低时,求解精度降低,这可能引起搜索花费长时间的问题。另外,当为了适当地确定温度,用几个温度参数多次执行优化计算时,花费很多时间和精力,这可能会导致损害用户便利性的问题。

如上所述,优化装置1在更新副本的最低能量的同时获取通过副本(例如搜索单元)达到的最高温度的统计信息,并且基于该统计信息确定搜索单元10a1至10an的每个中的设定温度。以这种方式,优化装置1可以通过基于在实际计算过程中获取的温度统计信息来自适应地确定用于后续计算的温度来提高求解精度。另外,可以提高计算速度。即,提高了求解性能。此外,可以节省温度调节的劳动,从而提高了用户的便利性。

接下来,将描述优化装置1的电路配置示例。下面将以通过ising模型表示优化问题的情况为例。首先,将以交换搜索单元10a1至10an中的温度的情况为例。此后,作为第二实施方式,将以交换搜索单元10a1至10an中的多个状态变量的值的情况为例。

图2是示出优化装置的电路配置示例的视图。

优化装置1在与计算目标的优化问题被转换到其中的ising模型中包括的多个自旋(spin)相对应的多个自旋位(spinbit)的值的组合(状态)中搜索当评估函数具有最小值时每个自旋位的值(基态)。

通过例如下式(8)来定义ising型评估函数e(x)。

[式8]

右边的第一项是针对可以从ising模型中包括的所有自旋位中选择的两个自旋位的所有组合两个自旋位的值(0或1)和耦合因子的乘积的积分,没有遗漏和重复。假设包含在ising模型中的自旋位的总数为n(n为2或者更大的整数)。例如,n等于1024。还假设i和j中的每个都是1至n的整数。符号xi是表示第i个自旋位的值的变量(也称为状态变量)。符号xj是表示第j个自旋位的值的变量。符号wij是表示第i个位与第j个位之间的相互作用的大小的加权因子。此外,wii为零(0)。符号“wij”通常可以等于wji(即,加权因子的因子矩阵通常是对称矩阵)。

右边的第二项是所有自旋位的偏置因子(biasfactor)与自旋位的值的乘积之和。符号bi表示第i个自旋位的偏置因子。

另外,当变量xi的值变为1-xi时,变量xi的增量可以表示为δxi=(1-xi)-xi=1-2xi。

因此,伴随自旋反转的能量变化δei(值的变化)由下式(9)表示。

[式9]

符号hi被称为局部场(localfield)并且由以下式(10)表示。

[式10]

通过根据δxi将局部场hi乘以符号(+1或-1)来获得能量变化δei。当某个变量xj改变时局部场hi的改变量δhi(j)由以下式(11)表示。

[式11]

针对每个变量并行执行当某个变量xj改变时更新局部场hi的过程。

通过使用半导体集成电路例如fpga(现场可编程门阵列)来实现优化装置1。除了图1示出的搜索单元10a1至10an、温度调节单元21、温度控制器22和交换控制器23之外,优化装置1还包括整体控制器24。在图2的示例中,由于交换控制器23包括在温度控制器22中,所以省略了交换控制器23的图示。

搜索单元10a1至10an中的每个用下面描述的电路基于由式(8)表示的ising型评估函数来实现基态搜索。以下将主要描述搜索单元10a1,但是搜索单元10a2至10an具有相同的电路配置。

搜索单元10a1包括:状态保持单元11;寄存器12a1、12a2、…、12an;h计算单元12b1、12b2、…、12bn;δe生成单元12c1、12c2、…、12cn;加法器13a1、13a2、…、13an;状态转变确定电路13b1、13b2、…、13bn;选择器单元13c;偏移控制器13d和e计算单元14。

在图2中,对于h计算单元12b1至12bn,名称被给出有下标,如“hi”计算单元,使得可以容易地理解该名称对应于第i个自旋位。此外,在图2中,对于δe生成单元12c1至12cn,名称被给出有下标,如“δei”计算单元,使得可以容易地理解该名称对应于第i个自旋位。

关于是否反转某个搜索单元中的自旋位串中包括的任何自旋位的确定以及当执行反转时使对应的自旋位反转的处理对应于由相应搜索单元进行的基态搜索的一次过程(也称为随机搜索)。

寄存器12a1至12an、h计算单元12b1至12bn以及δe生成单元12c1至12cn对应于能量计算单元12。即,能量计算单元12包括:寄存器12a1至12an、h计算单元12b1至12bn和δe生成单元12c1至12cn。此外,加法器13a1至13an、状态转变确定电路13b1至13bn、选择器单元13c和偏移控制器13d对应于转变控制器13。即,转变控制器13包括:加法器13a1至13an、状态转移确定电路13b1至13bn、选择器单元13c和偏移控制器13d。

在n个自旋位中,寄存器12a1、h计算单元12b1、δe生成单元12c1、加法器13a1和状态转变确定电路13b1执行与第一自旋位有关的操作。另外,寄存器12a2、h计算单元12b2、δe生成单元12c2、加法器13a2和状态转变确定电路13b2执行与第二自旋位有关的操作。类似地,在附图标记例如“12a1”或“12b1”的末尾处的数值i指示执行对应于第i个自旋位的操作。即,单个搜索单元具有n组寄存器、h计算单元、δe生成单元、加法器和状态转变确定电路(一组是执行与一个自旋位有关的操作的算术处理电路的一个单元,称为“神经元”)。n组并行执行与每个组对应的自旋位相关的操作。

在下文中,将主要通过例示寄存器12a1、h计算单元12bl、δe生成单元12cl、加法器13a1和状态转变确定电路13bl来进行描述。具有相同名称的寄存器12a2至12an、h计算单元12b2至12bn、δe生成单元12c2至12cn、加法器13a2至13an以及状态转变确定电路13b2至13bn也具有相同的功能。

此处,与寄存器12a1、h计算单元12b1、δe生成单元12c1、加法器13a1和状态转变确定电路13b1的组相对应的自旋位被称为自身自旋位,并且由搜索单元10a1计算的其他自旋位被称为其他自旋位。每个自旋位由称为索引的识别信息识别。例如,第i个自旋位的索引为i。

寄存器12a1存储自身自旋位与另一个自旋位之间的加权因子wlj(j=1至n)。此处,对于自旋位数量n,加权因子的总数为n2。n个加权因子存储在寄存器12a1中。加权因子wij的下标i指示自身自旋位的索引,下标j指示包括该自身自旋位的任何自旋位的索引。

寄存器12a1存储自身自旋位的n个加权因子w11、w12、…、w1n。此外,wii=w11=0。寄存器12a1向h计算单元12b1输出与从选择器单元13c输出的索引=j相对应的加权因子w1j。

h计算单元12b1使用从寄存器12a1提供的加权因子wlj基于式(10)和式(11)来计算局部场h1。例如,h计算单元12b1具有保持先前计算的局部场h1的寄存器,并且通过将h1乘以与由索引=j指示的自旋位的反转方向对应的δh1(j)来更新存储在该寄存器中的h1。可以从状态保持单元11将指示由索引=j指示的自旋位的反转方向的信号提供给h计算单元12b1。在h计算单元12b1的寄存器中根据问题预设h1的初始值。也在h计算单元12b1的寄存器中根据问题预设b1的值。h计算单元12b1将计算的局部场h1输出到δe生成单元12c1和e计算单元14。

δe生成单元12c1使用局部场h1基于式(9)根据自身自旋位的反转,生成ising模型的能量改变值δe1。例如,δe生成单元12c1可以根据从状态保持单元11提供的自身自旋位的当前值来确定自身自旋位的反转方向(当当前值为0时,0至1为反转方向,并且当当前值为1时,1到0为反转方向)。δe生成单元12c1将生成的能量改变值δe1输出到加法器13a1。此处,根据后续阶段的加法器13a1中的加法处理和状态转变确定电路13b1中的确定处理,δe生成单元12c1可以向加法器13a1输出通过反转能量改变值δe1的符号而获得的能量改变值-δe1。在该示例中,假设δe生成单元12c1将-δe1作为能量改变值输出至加法器13a1。

加法器13a1将从δe生成单元12c1提供的-δe1与从偏移控制器13d提供的偏移值eoff相加。如稍后将描述的,偏移值eoff是促进状态转变的参数,并且由偏移控制器13d控制。在此示例中,eoff≥0。加法器13a1将相加结果(-δe1+eoff)输出到状态转变确定电路13b1。

状态转变确定电路13b1根据从加法器13a1提供的能量改变值与偏移值δeoff的和(-δe1+eoff),向选择器单元13c输出指示自身自旋位是否可以反转的标志f1。具体地,状态转变确定电路13b1根据-δe1+eoff与阈值之间的比较来确定自身自旋位是否可以反转。

此处,将描述状态转变确定电路13b1进行的确定。

在模拟退火中,如在上面描述的式(1)中那样确定引起某些能量变化δe的状态转变允许概率p(δe,t)。在式(1)中,t是上述温度信息t。通过温度控制器22在状态转变确定电路13b1中设置温度信息t。作为函数f,使用式(2)(metropolis方法)或者式(3)(gibbs方法)。

例如,可以通过比较器来实现如下电路:该电路以允许概率p(δe,t)输出指示引起能量变化δe的状态转变的标志(flg=1),该比较器根据f(-δe/t)与在区间[0,1]取值的均匀随机数u之间的比较来输出值。

然而,即使进行以下修改,也可以实现相同的功能。即使在将相同的单调递增函数应用于两个数字的情况下,大小关系也不会改变。因此,即使在将相同的单调递增函数应用于比较器的两个输入的情况下,比较器的输出也不会改变。例如,f(-δe/t)的反函数f-1(-δe/t)可用作作用于f(-δe/t)的单调递增函数,并且f-1(u)(其中u是f-1(-δe/t)中的-δe/t)可以用作作用于均匀随机数u的单调递增函数。在那种情况下,可以理解的是,具有与上述比较器相同功能的电路可以是当-δe/t大于f-1(u)时输出1的电路。此外,由于温度参数t为正,所以状态转变确定电路13b1可以是当-δe等于或大于t·f-1(u)时(或者当δe等于或小于-(t·f-1(u))时)输出标志=1的电路。

状态转变确定电路13b1生成均匀随机数u并且使用将均匀随机数u转换成f-1(u)的值的转换表生成f-1(u)的值。当采用metropolis方法时,f-1(u)由以下式(12)给出。当应用gibbs法时,f-1(u)由以下式(13)给出。

[式12]

[式13]

转换表存储在例如包括在状态转变确定电路13bl中的寄存器中。状态转变确定电路13b1生成温度参数t与f-1(u)的积(t·f-1(u))作为阈值,并将该积与-δe1+eoff进行比较。此处,t·f-1(u)对应于热激发能量。当(-δe1+eoff)≥t·f-1(u)时,状态转变确定电路13b1向选择器单元13c输出标志f1=1(可以转变)。当(-δe1+eoff)<t·f-1(u)时,状态转变确定电路13b1向选择器单元13c输出标志f1=0(不可以转变)。

选择器单元13c接收从状态转变确定电路13bl至13bn输出的指示是否可以转变的标志。当从状态转变确定电路13b1至13bn输出的标志中存在指示可以转变的标志时,选择器单元13c选择指示可以转变的任何一个标志。当从状态转变确定电路13b1至13bn输出的标志中没有指示可以转变的标志时,选择器单元13c选择一个预定标志。

选择器单元13c向状态保持单元11输出更新信号(update),该更新信号包括指示是否可以转变的标志和指示对应于所选择的标志的自旋位的索引=j。同时,选择器单元13c向偏移控制器13d输出指示所选择的转变是否是可以的标志,并且向寄存器12a1至12an中的每个输出与选择的标志相对应的索引=j。

偏移控制器13d基于从选择器单元13c输出的指示是否可以转变的标志来控制提供给加法器13a1至13an中的每个的偏移值。具体地,当从选择器单元13c输出的标志指示可以转变时,偏移控制器13d将偏移值重置为0。当从选择器单元13c输出的标志指示不可以转变时,偏移控制器13d将增量值δeoff添加至偏移值。当标记连续指示不可以转变时,偏移控制器13d对δeoff进行积分以使eoff增加δeoff。

当从选择器单元13c输出的标志指示不可以转变时,可以认为当前状态落入局部解。通过将偏移值添加至-δe1或者增加偏移值,可以容易地允许状态转变,并且在当前状态在局部解中的情况下,会促进从局部解逃离。

状态保持单元11基于从选择器单元13c输出的标志和索引来更新由状态保持单元11中包括的寄存器保持的位状态(x1、x2、…、xn)。此处,位状态是在搜索单元10a1中的包括n个自旋位的自旋位串(多个状态变量的值)。在该图中,可以将位状态缩写为bs(bitstate)。状态保持单元11将当前位状态输出至e计算单元14。状态保持单元11将在搜索单元10a1中搜索处理完成时的位状态输出至整体控制器24。

e计算单元14基于分别从h计算单元12b1至12bn输出的局部场h1至hn和从状态保持单元11输出的位状态(x1至xn)来计算搜索单元10a1中的ising模型的当前能量值e1。能量值e1是由式(8)的评估函数限定的能量值(有时简称为能量)。e计算单元14将计算出的能量值e1输出至温度调节单元21。此外,当完成搜索单元10a1中的预定次数或预定时段的搜索处理时,e计算单元14将所计算出的能量值e1输出至温度控制器22。

温度调节单元21接收分别从搜索单元10a1至10an输出的能量值e1至en。此外,温度调节单元21从温度控制器22获取关于在搜索单元10a1至10an的每个中设置的温度的信息。图2示出了在搜索单元10a1中设置温度t1、在搜索单元10a2中设置温度t2、…、在搜索单元10an中设置温度tn的示例。温度调节单元21根据能量值e1至en的变化和在搜索单元10a1至10an中设定的温度的变化,确定指示要在搜索单元10a1至10an的每个中设置的新温度的新温度信息。温度调节单元21将确定的新温度信息和新温度设置信号(tsetsig.(符号“sig.”是信号的缩写))输出至温度控制器22。

温度控制器22控制提供给搜索单元10a1至10an的每个的温度。温度控制器22将指示温度的温度信息和温度设置信号(tsetsig.)提供给搜索单元10a1至10an的每个中包括的状态转变电路。此外,温度控制器22具有交换控制器23的功能,并且控制搜索单元10a1至10an中的温度的交换(温度交换)(在图2中省略了交换控制器23的图示)。交换控制器23基于式(5)的交换概率来确定是否关于一对搜索单元(两个搜索单元)执行温度交换。温度控制器22将替换后的温度提供给每个搜索单元。

例如,交换控制器23将第一关联信息保持在交换控制器23所包括的寄存器中,在该第一关联信息中,温度识别信息(称为温度索引或温度编号)和温度彼此关联。例如温度索引按温度的升序与温度相关联(随着温度索引变高,温度变高)。此外,交换控制器23将第二关联信息保持在交换控制器23所包括的寄存器中,在该第二关联信息中,以升序排列的温度索引与搜索单元10a1至10an中的每个的识别编号相互关联。在这种情况下,设定的温度与对应于第二关联信息中的邻近温度索引的一对搜索单元邻近。交换控制器23基于第一关联信息和第二关联信息来控制搜索单元10a1至10an的温度交换,并根据该交换来更新第二关联信息。温度控制器22基于第一关联信息和第二关联信息向每个搜索单元提供温度。通过温度调节单元21根据新温度的计算结果来对与第一关联信息中的温度索引相关联的温度进行更新。

然而,交换控制器23还可以通过保持将搜索单元10a1至10an中的每个的识别编号与温度值相关联的关联信息,并根据温度值对关联信息进行排序来指定与设定温度邻近的一对搜索单元。在这种情况下,由温度调节单元21根据新温度的计算结果来更新关联信息中的温度值。

整体控制器24控制优化装置1的整个操作。当接收到激活信号时,整体控制器24将激活信号输出至温度控制器22,并激活搜索单元10a1至10an以开始对与优化问题有关的基态搜索的计算。当计算结束时,整体控制器24从搜索单元10a1至10an中的每个获取位状态,以获得优化问题的解。整体控制器24输出指示计算结束的结束信号。结束信号可以包括指示通过计算获得的解的信息。例如,整体控制器24可以将指示解的图像信息输出到连接至优化装置1的显示装置,并且将指示解的图像信息显示在显示装置上,使得可以将所获得的解的内容呈现给用户。

接下来,将描述状态转变确定电路13bl至13bn的电路配置。下文中,将状态转变确定电路13b1作为示例进行说明,而其他的状态转变确定电路具有相同的电路配置。

图3是示出状态转变确定电路的电路配置示例的视图。

状态转变确定电路13bl包括:随机数生成单元111、阈值生成单元112和比较单元113。

随机数生成单元111生成均匀随机数u,并将该均匀随机数u输出到阈值生成单元112。

阈值生成单元112根据上述转换表、基于式(12)(或式(13))使用均匀随机数u和由温度控制器22提供的指示温度t1的温度信息来生成阈值t·f-1(u)。阈值生成单元112将生成的阈值t·f-1(u)输出到比较单元113。

比较单元113将从加法器13a1输出的(-δe1+eoff)与阈值t·f-1(u)比较,以向选择器单元13c输出指示是否可以转变的标志。如上所述,例如,当(-δe1+eoff)≥t·f-1(u)时,比较单元113向选择器单元13c输出可以转变。当(-δe1+eoff)<t·f-1(u)时,状态转变确定电路13b1向选择器单元13c输出不可以转变。

接下来,将描述选择器单元13c的电路配置示例。

图4是示出选择器单元的电路配置示例的视图。

选择器单元13c包括以多级树形连接的多个选择电路、以及随机数位生成单元32a、32b、32c、…、32r。随机数位生成单元32a至32r是分别针对树形连接的多级选择电路来安装的。随机数位生成单元32a至32r中的每个生成取值为0或1的1位随机数,并将该1位随机数提供给每级的选择电路。使用该1位随机数在输入标志对中选择一个标志。

将从状态转变确定电路13b1至13bn中的每个输出的指示是否可以转变的一组标志输入到在初始级处的选择电路31a1、31a2、31a3、31a4、…、31ap中的每个。例如,将从第一状态转变确定电路13b1输出的和从第二状态转变确定电路13b2输出的一对标志输入到选择电路31a1。将从第三状态转变确定电路输出的和从第四状态转变确定电路输出的一对标志输入到选择电路31a2。此后,类似地,将从第(n-1)状态转变确定电路输出的和从第n状态转变确定电路13bn输出的一对标志输入到选择电路31ap。因此,将具有由邻近状态转变确定电路输出的标志的一对标志输入到在初始级处的选择电路。初始级处的选择电路32a1至31ap的数目为n/2。此后,每经过一级,选择电路的数目就减半。

选择电路31a1至31ap中的每个基于输入标志对和从随机数位生成单元32a输出的1位随机数来选择输入标志对中的一个标志。选择电路31a1至31ap中的每个向第二级选择电路31b1至31bq输出包括所选标志和与所选标志相对应的1位标识值的状态信号。例如,将从选择电路31a1输出的状态信号和从选择电路31a2输出的状态信号输入到选择电路31b1。类似地,将从选择电路31a1至31ap中邻近的选择电路输出的一对状态信号输入到第二级选择电路。

选择电路31b1至31bq中的每个基于输入的状态信号对和从随机数位生成单元32b输出的1位随机数来选择一个输入状态信号。选择电路31b1至31bq中的每个将所选择的状态信号输出至第三级选择电路31c1、…。此处,选择电路31b1至31bq通过增加1位来更新包括在选择的状态信号中的状态信号,以指示选择了哪个状态信号,并输出所选择的状态信号。

对第三级及后续级的选择电路执行相同的处理,以使得在每一级的选择电路中识别值的位宽逐位增加,并且从最后级选择电路13r输出用作选择器单元13c的输出的状态信号。从选择器单元13c输出的状态信号中包括的识别值对应于以二进制表示的索引。然而,在图4中示出的电路配置示例中,将搜索单元的索引设置为0至1023。通过向从选择电路31r输出的识别值加1而获得的值对应于图2中示出的j。

例如,图4示出选择电路31bq的电路配置示例。第二级之后的其他选择电路也通过与选择电路31bq相同的电路配置来实现。

选择电路31bq的输入是第一状态信号(status_1)和第二状态信号(status_2)。选择电路31b1的输出是状态信号(状态)。选择电路31bq包括:或电路131、与非电路132以及选择器133和选择器134。

将状态信号(status_1)中包括的标志(标志1)和状态信号(status_2)中包括的标志(标志2)输入到或电路131。例如,状态信号(status_1)是前级两个选择电路的上侧(具有较大索引的一个)的输出,状态信号(status_2)是前级两个选择电路的下侧(具有较低索引的一个)的输出。或电路131输出标志1和标志2的或运算结果(标志)。

将标志1和标志2输入到与非电路132。与非电路132将标志1和标志2的与非运算结果输出到选择器133的选择信号输入端子。

将标志1和1位随机数(rand)输入到选择器133。选择器133基于从与非电路132输入的与非运算结果来选择并输出标志1和rand中的一个。例如,当与非电路132的与非运算结果为“1”时,选择器133选择标志1,并且当与非电路132的与非运算结果为“0”时,选择rand。

将包括在状态信号(status_1)中的索引1和包括在状态信号(status_2)中的索引2输入到选择器134。将选择器133的选择结果输入到选择器134的选择信号输入端子。选择器134基于选择器133的选择结果选择并输出索引1和索引2之一。例如,当选择器133的选择结果为“1”时,选择器134选择索引1,并且当选择器133的选择结果为“0”时,选择索引2。

或电路131以及选择器133和134的一组输出是从选择电路31bq输出的状态信号(状态)。

此外,初始级选择电路的输入不包括识别值。因此,初始级选择电路是增加与所选择的一个相对应的位值(下侧为“0”,上侧为“1”)并将其输出作为识别值(指示为图中的索引)的电路。

以这种方式,选择器单元13c以比赛的方式选择可以转变的自旋位之一。在每个比赛游戏中(即每个选择电路中的选择),将获胜者(即被选择者)的条目号(0或1)添加到索引词的较高位。从末级选择电路31r输出的索引指示选择的自旋位。例如,当一个搜索单元中的自旋位数目为1024时,由末级选择电路31r输出的状态信号包括指示是否可以转变的标志和由10位表示的索引。

然而,可以考虑除了如上所述的在选择器单元13c中生成索引的方法以外的索引输出方法。例如,可以从状态转变确定电路13b1至13bn中的每个向选择器单元13c提供与每个状态转变确定电路相对应的索引,并且可以通过选择器单元13c选择指示是否可以转变的标志和与该标志对应的索引。在这种情况下,状态转变确定电路13b1至13bn中的每个还包括索引寄存器,该索引寄存器存储与其自身对应的索引,并从该索引寄存器将该索引提供给选择器单元13c。

图5是示出温度调节单元的电路配置示例的视图。

温度调节单元21包括:寄存器210、最低能量更新检查电路220、最高温度更新检查电路230、温度直方图计算电路240以及温度计算电路250。

寄存器210存储与搜索单元10a1至10an中的每个相关联的设定温度的最高值(最高温度)与所达到的最低能量。

最低能量更新检查电路220在预定的数据获取定时从搜索单元10a1至10an中的每个接收能量值e。最低能量更新检查电路220将每个搜索单元的接收能量值e与寄存器210中存储的每个搜索单元的最低能量进行比较,以检查每个搜索单元是否已更新了最低能量。最低能量更新检查电路220向最高温度更新检查电路230和温度直方图计算电路240输出指示对每个搜索单元的关于最低能量是否已被更新的检查结果的信号。当在某个搜索单元中的最低能量被更新时,最低能量更新检查电路220将寄存器210中记录的对应搜索单元的最低能量更新为此次从对应搜索单元获取的能量。

当最低能量更新检查电路220对某个搜索单元的检查结果指示最低能量未更新时,最高温度更新检查电路230将从温度控制器22提供的温度与存储在寄存器210中的对应的搜索单元的最高温度进行比较。根据比较,最高温度更新检查电路230检查从最低能量的先前更新起对应的搜索单元是否已经更新最高温度。当最高温度更新时,最高温度更新检查电路230利用在相应搜索单元中设置的温度来更新在寄存器210中记录的最高温度信息。

当最低能量更新检查电路220对某个搜索单元的检查结果指示最低能量已更新时,温度直方图计算电路240在温度直方图上对存储在寄存器210中的相应搜索单元的最高温度进行计数。针对所有搜索单元10a1至10an生成一个温度直方图。

温度计算电路250基于由温度直方图计算电路240生成的温度直方图,计算要在搜索单元10a1至10an中设置的n个新温度。温度计算电路250使用式(6)和式(7)来计算新温度。在温度计算电路250中预设最低温度tmp_min。最高温度tmp_max由温度计算电路250基于温度直方图确定。可以将用于计算新温度的预定系数α从外部输入到温度计算电路250。温度计算电路250将指示所计算的新温度的新温度信息和温度设置信号(tsetsig.)输出至温度控制器22。

图6是示出存储在寄存器中的数据的示例的视图。

寄存器210的每个地址与任何一个搜索单元相关联并且存储关于该搜索单元的数据。例如,寄存器210的地址“0xxxxxxx00”与搜索单元10a1相关联,并且存储由搜索单元10a1达到的最低能量。例如,最低的能量由128位宽度表示。此后,类似地,例如,对于每个128位宽度,关于每个搜索单元的最低能量例如第二搜索单元10a2的最低能量和第三搜索单元的最低能量被存储在寄存器210中。

此外,寄存器210的地址“0xxxxxxxy0”与搜索单元10a1相关联,并且存储从搜索单元10a1中的最低能量的先前更新开始在搜索单元10a1中设置的最高温度。例如,温度用32位宽度表示。此后,类似地,例如,对于每个32位宽度,从最低能量的先前更新的时间开始为每个搜索单元设置的最高温度例如第二搜索单元10a2的温度信息和第三搜索单元的温度信息被存储在寄存器210中。

在以上配置示例中,使用专用电子电路来实现温度调节单元21,但是可以通过由处理器例如cpu(中央处理单元)执行的软件处理来实现温度调节单元21的功能。因此,将描述用于通过温度调节单元21的数据获取的算法的示例。

图7是示出数据获取算法的示例的视图。

代码c1指示变量的定义。

符号“min_eg”指示在数据获取定时获得的能量。

符号“min_eg_pre”指示到目前为止的最低能量。

符号“tmp_idx”指示当前温度值(或对应于该温度的温度索引)。假定较大的温度索引指示较高的温度。

符号“tmp_idx_pre”指示过去温度的最高值。“tmp_idx_pre”的“past”指示从最低能量的先前更新到现在的时段。

术语“直方图”指示温度的直方图(温度直方图)。

为每个搜索单元提供变量“min_eg”、“min_eg_pre”、“tmp_idx”和“tmp_idx_pre”。对于搜索单元10a1至10an存在一个直方图。

代码c2指示温度调节单元21的算法,其使用代码c1中定义的变量来描述。对每个搜索单元重复或并行执行代码c2。

在第一行中,确定是否min_eg<min_eg_pre。即,第一行是关于最低能量是否已更新的确定。当min_eg<min_eg_pre时,按顺序执行第二行至第四行,并且处理结束。当min_eg≥min_eg_pre时,执行第六行。

在第二行中,将tmp_idx_pre的频率添加至温度直方图(tmp_idx_pre的频率加1)。

在第三行中,将min_eg的值设置在min_eg_pre中。即,到目前为止的最低能量被更新。

在第四行中,将tmp_idx的值设置在tmp_idx_pre中。即,当最低能量被更新时,将tmp_idx_pre重置为温度索引。

在第六行中,确定是否tmp_idx>tmp_idx_pre。即,第六行是关于过去的温度最高值是否已更新的确定。当tmp_idx>tmp_idx_pre时,执行第七行。当tmp_idx≤tmp_idx_pre时,该过程结束。

在第七行中,将tmp_idx的值设置在tmp_idx_pre中。即,将tmp_idx_pre更新为针对相应搜索单元设置的当前温度。

图8是示出最低能量和温度的变化的示例的视图。

曲线图70示出了某个搜索单元中最低能量的变化的示例。曲线图71示出了搜索单元中的温度变化的示例。

在曲线图70和曲线图71中,横轴表示时间,其中从左侧到右侧的方向是时间的正方向。曲线图70和曲线图71的横轴上的同一位置指示同一时间。曲线图70的纵轴表示能量。曲线图71的纵轴表示温度。温度ta,tb、tc和td表示在曲线图71的纵轴上。此处,ta>tb>tc>td。

曲线图70包括系列70a。根据系列70a,最低能量在两个周期70b和70c中更新。曲线图71包括系列71a。

根据系列71a,相应的搜索单元在时段70b中更新最低能量的时间点与时段70c中更新最低能量的时间点之间达到的最高温度是ta。

曲线图70和曲线图71的示例表示,有必要一次将温度升高至最高温度ta,以便更新相应搜索单元中的最低能量。因此,温度调节单元21以这种方式获取达到以更新最低能量的最高温度作为统计信息,并且基于该统计信息确定要为每个搜索单元设置的温度。

图9是示出温度直方图的示例的视图。

温度直方图80由温度直方图计算电路240生成。此外,当使用处理器例如cpu执行温度调节时,温度直方图80对应于图7中的“直方图”。

温度直方图80的横轴表示温度索引,且纵轴表示频率。

例如,温度计算电路250将与温度直方图80中具有最高频率的温度索引相对应的温度确定为最高温度tmp_max。具体地,温度计算电路250从温度直方图80中具有高频率的温度确定最高温度tmp_max。在示例中,温度计算电路250将具有由峰值p1指示的最高频率的温度确定为最高温度tmp_max。当为温度索引创建温度直方图80时,温度计算电路250通过参照例如上述第一关联信息来指定与该温度索引相对应的温度值。在这种情况下,例如,可以想象温度计算电路250可以参照由温度控制器22保持的上述第一关联信息。温度计算电路250使用所确定的最高温度tmp_max根据式(6)和式(7)来计算新的温度tmp[i](1≤i≤n)。

然而,根据问题,如上所述的峰值p1可能不出现或可能出现多个峰值。在这样的情况下,例如,温度计算电路250使用基于温度直方图80的累积直方图来确定最高温度tmp_max,如下所述。

图10是示出累积直方图的示例的视图。

累积直方图81是通过对从较低温度起的在温度直方图80中示出的频率进行累积而获得的直方图。累积直方图81由温度计算电路250生成。累积直方图81的横轴表示温度索引,并且其纵轴表示累积频率。

温度计算电路250基于累积直方图比率(累积比率)确定最高温度tmp_max。例如,作为示例,将累积比率设置为70%(系数α=0.7)。在累积直方图81中,累积比率70%由直线82表示。在这种情况下,温度计算电路250指定与累积频率相对应的温度(与点p2处的累积频率相对应的温度)——该累积频率是通过将累积直方图81中累积频率的最大值乘以指示累积比率的系数α而获得的,并且将该温度确定为最高温度tmp_max。在该示例中,累积频率的最大值是与温度索引的最大值相对应的累积频率。累积频率的最大值对应于每个搜索单元的最低能量的更新总次数。

温度计算电路250使用所确定的最高温度tmp_max根据式(6)和式(7)来计算新的温度tmp[i](1≤i≤n)。此外,可以如上所述从外部输入用作累积比率的系数α。

如上所述,在在温度直方图80中未检测到峰值p1的情况下或者在检测到多个峰值的情况下,温度计算电路250可使用累积直方图81来确定最高温度tmp_max。替选地,可以在温度计算电路250中预设是否使用温度直方图80或累积直方图81。

接下来,将描述优化装置1的处理过程。

图11是示出副本交换的整体控制的示例的流程图。

(s1)整体控制器24从外部接收指示初始温度的温度信息作为输入数据,并且将激活信号与温度信息一起输出到温度控制器22。

(s2)在从整体控制器24接收到激活信号时,温度控制器22通过将温度信息和温度设定信号输出至搜索单元10a1至10an中的每个来设置温度,并且使搜索单元10a1至10an中的每个执行随机搜索处理。稍后将详细描述由搜索单元10a1至10an中的每个进行的搜索处理。

(s3)当在搜索单元10a1至10an的每个中执行了规定时间或者规定迭代次数的随机搜索时,温度调节单元21执行数据收集处理,该数据收集处理包括在搜索单元10a1至10an的每个中计算出的能量值的获取。稍后将详细描述数据收集处理。

(s4)搜索单元10a1至10an将每个邻近搜索单元的能量值发送至温度控制器22。温度控制器22针对具有邻近温度的每个搜索单元获取通过搜索单元10a1至10an计算的能量值。

(s5)交换控制器23使用在温度方面彼此邻近的搜索单元之间的能量差,根据基于式(5)的交换概率来执行温度交换控制。交换控制器23对具有邻近温度的每对搜索单元执行温度交换控制。稍后将详细描述温度交换控制。

(s6)温度调节单元21确定温度交换控制是否在用于温度调节的数据获取时段内。当确定温度交换控制在用于温度调节的数据获取时段内时,处理进行至步骤s2。当确定温度交换控制不在用于温度调节的数据获取时段内时,处理进行至步骤s7。

(s7)基于作为步骤s3中的数据收集处理的结果而创建的温度直方图80(或累积直方图81),温度调节单元21计算在式(6)和式(7)中使用的最高温度tmp_max。温度调节单元21使用所计算的最高温度tmp_max来基于式(6)和式(7)计算新的温度tmp[i]。温度调节单元21将指示所计算的新温度的新温度信息和温度设置信号输出至温度控制器22。在接收到从温度调节单元21输出的新温度信息和温度设置信号后,温度控制器22更新与由温度控制器22保持的第一关联信息中的每个温度索引关联的温度。

(s8)温度控制器22通过将新的温度信息和温度设置信号输出至搜索单元10a1至10an中的每个来设置温度,并且使搜索单元10a1至10an中的每个执行随机搜索(基态搜索)。

(s9)当在搜索单元10a1至10an中执行了规定时间或规定迭代次数的随机搜索时,搜索单元10a1至10an将每个邻近搜索单元的能量值发送至交换控制器23。交换控制器23针对具有邻近温度的每个搜索单元获取由搜索单元10a1至10an计算的能量值。

(s10)交换控制器23使用彼此邻近的搜索单元之间在温度方面的能量差,根据基于式(5)的交换概率来执行温度交换控制。交换控制器23对具有邻近温度的每对搜索单元执行温度交换控制。

(s11)搜索单元10a1至10an确定在最低温度处的搜索单元中是否存在预定次数的位状态变化。在确定在最低温度处的搜索单元中的位状态没有变化的情况下,搜索单元10a1至10an将位状态输出至整体控制器24,并结束副本交换的整个控制处理。在确定在最低温度处的搜索单元中的位状态有变化的情况下,搜索单元10a1至10an进行至步骤s8,在该步骤s8中,随机搜索处理继续。

图12是示出搜索单元处理的示例的流程图。

搜索单元处理对应于步骤s2和s8。

(s20)温度控制器22设置在搜索单元10a1至10an的每个中的温度。例如,温度控制器22基于使温度索引与温度相关联的第一关联信息以及使温度索引与搜索单元识别信息相关联的第二关联信息,设置在搜索单元10a1至10an的每个中的温度。替选地,如上所述,温度控制器22可以基于使搜索单元识别信息与温度相关联的关联信息来设置在搜索单元10a1至10an的每个中的温度。根据问题等,预先确定在搜索单元10a1至10an中的每个中设置的温度的初始值。

(s21)搜索单元10a1至10an中的每个针对每个自旋位计算局部场h。例如,关注于搜索单元10a1,h计算单元12b1至12bn计算局部场h1至hn。基于式(10)计算局部场h。另外,在根据式(10)计算局部场h之后,可以通过例如将由式(11)表示的差δh加到局部场h来获得更新的局部场h=h+δh。

(s22)搜索单元10a1至10an中的每个基于所计算的局部场h来为每个自旋位计算能量改变值δe。例如,关注于搜索单元10a1,δe生成单元12c1至12cn计算能量改变值δe1至δen。基于式(9)计算δe。

(s23)搜索单元10a1至10an中的每个将偏移值eoff与能量改变值-δe相加。例如,关注于搜索单元10a1,加法器13a1至13an将偏移值eoff与-δe1至-δen相加。如上所述,偏移值eoff由偏移控制器13d控制。例如,在从选择器单元13c输出的指示是否可以转变的标志指示不可以转变的情况下,偏移控制器13d将大于0的偏移值eoff提供给加法器13a1至13an。在该标志指示可以转变的情况下,偏移控制器13d将偏移值eoff=0提供给加法器13a1至13an。偏移值eoff的初始值为零。

(s24)搜索单元10a1至10an中的每个从反转候选自旋位中选择要反转的自旋位。例如,关注于搜索单元10a1,状态转变确定电路13b1至13bn中的每个将指示与对应的状态转变确定电路相对应的自旋位的转变是否是可以的标志输出至选择器单元13c。选择器单元13c选择输入的标志之一,并输出所选择的标志和指示与选择的标志相对应的自旋位的索引。

(s25)搜索单元10a1至10an中的每个使所选择的自旋(自旋位)反转。例如,关注于搜索单元10a1,状态保持单元11基于从选择器单元13c输出的标志和索引,对包括在位状态中的自旋位当中的由该索引所指示的自旋位的值进行更新。

(s26)搜索单元10a1至10an中的每个确定从紧接在步骤s20之后的随机搜索的开始起是否已经达到规定的迭代次数或者是否已经经过规定的时间。在确定已经达到规定的迭代次数或已经经过规定的时间的情况下,处理进行至步骤s27。在确定尚未达到规定的迭代次数并且尚未经过规定的时间的情况下,处理进行至步骤s21。

(s27)搜索单元10a1至10an中的每个计算相应搜索单元中的能量值(e1至en),并将该能量值输出至温度调节单元21和温度控制器22。

如上所述,搜索单元10a1至10an中的每个基于温度值、能量改变值和随机值,根据能量改变值与热激发能量之间的相对关系随机地确定是否接受多个状态转变之一。在确定中,搜索单元10a1至10an中的每个的转变控制器(例如转变控制器13)将预定偏移值添加至能量值的改变值。结果,促进了从局部解逃离,并且可以提高计算速度。

图13是示出数据收集处理的示例的流程图。

数据收集处理对应于步骤s3。在下文中,将针对搜索单元10a1描述温度调节单元21的过程,但是相同的过程也应用于搜索单元10a2至10an。对于搜索单元10a1至10an中的每个执行以下步骤s31至s34。对于搜索单元10a1至10an,步骤s34中计算一个温度直方图80。

(s30)最低能量更新检查电路220确定该定时是否是数据收集定时。当确定该定时是数据收集定时时,处理进行至步骤s31。当确定该定时不是数据收集定时时,数据收集处理结束。此处,数据收集定时可以是搜索单元10a1至10an的搜索处理(图12的过程)的每个完成的定时,或者可以是搜索处理的每多次完成时的定时。数据收集的定时是为温度调节单元21预设的。

(s31)最低能量更新检查电路220从搜索单元10a1获取能量e1。最低能量更新检查电路220将在寄存器210中存储的搜索单元10a1的最低能量与获取的能量e1进行比较,以确定最低能量是否已更新。搜索单元10a1的最低能量已经更新的情况是指从搜索单元10a1获取的能量e1低于在寄存器210中存储的搜索单元10a1的最低能量的情况。在最低能量已经更新的情况下,最低能量更新检查电路220将存储在寄存器210中的搜索单元10a1的最低能量的记录更新为此次从搜索单元10a1获取的能量e1,并且处理进行至步骤s34。在最低能量尚未更新的情况下,处理进行至步骤s32。

(s32)最高温度更新检查电路230从温度控制器22获取在搜索单元10a1中设置的温度,并且确定存储在寄存器210中的搜索单元10a1的最高温度是否已更新。搜索单元10a1的最高温度已经更新的情况是指在搜索单元10a1中设置的温度高于在寄存器210中存储的搜索单元10a1的最高温度的情况。在最高温度已经更新的情况下,处理进行至步骤s33。在最高温度尚未更新的情况下,搜索单元10a1的数据收集处理结束。

(s33)最高温度更新检查电路230将在寄存器210中存储的搜索单元10a1的最高温度的记录更新为从温度控制器22获取并当前设置在搜索单元10a1中的温度。然后,搜索部分10a1的数据收集处理结束。

(s34)温度直方图计算电路240从寄存器210读取与搜索单元10a1相对应的最高温度,并且将温度直方图80中最高温度的频率加1。如上所述,对于搜索单元10a1至10an生成一个温度直方图80。另外,最高温度更新检查电路230将存储在寄存器210中的搜索单元10a1的最高温度的记录更新为从温度控制器22获取并当前设置在搜索单元10a1中的温度。然后,搜索单元10a1的数据收集处理结束。

温度调节单元21可以针对搜索单元10a1至10an中的每个并行地执行步骤s31至s34的处理。替选地,温度调节单元21可以依次选择搜索单元10a1至10an中的任何一个,并且重复执行步骤s31至s34的处理。

图14是示出交换控制的示例的流程图。

交换控制对应于步骤s5和步骤s10。

(s40)对于偶数编号的搜索单元,交换控制器23基于由式(5)表示的交换概率,确定是否与邻近的较高(或较低)温度的搜索单元交换温度。对每对搜索单元执行温度交换确定。将式(2)的metropolis方法的函数或者式(3)的gibbs方法的函数用作式(5)的函数f。在存在确定要交换温度的一对搜索单元的情况下,处理进行至步骤s41。在没有确定要交换温度的一对搜索单元的情况下,处理进行至步骤s42。

(s41)交换控制器23对在步骤s40中确定要交换温度的一对搜索单元交换温度。交换控制器23根据温度交换来更新由交换控制器23保持的上述第二关联信息。

(s42)对于奇数编号的搜索单元,交换控制器23基于由式(5)表示的交换概率,确定是否与邻近的较高(或较低)温度的搜索单元交换温度。对每对搜索单元执行温度交换确定。将式(2)的metropolis方法的函数或者式(3)的gibbs方法的函数用作式(5)的函数f。当交换控制器23在步骤s40中确定是否与偶数编号的搜索单元的较高温度的搜索单元交换温度时,交换控制器23在步骤s42中确定是否与奇数编号的搜索单元的较高温度的搜索单元交换温度。当交换控制器23在步骤s40中确定是否与偶数编号的搜索单元的较低温度的搜索单元交换温度时,交换控制器23在步骤s42中确定是否与奇数编号的搜索单元的较低温度的搜索单元交换温度。在存在确定要交换温度的一对搜索单元的情况下,处理进行至步骤s43。在确定没有要交换温度的一对搜索单元的情况下,交换控制结束。

(s43)交换控制器23对在步骤s42中确定要交换温度的一对搜索单元交换温度。交换控制器23根据温度交换来更新由交换控制器23保持的第二关联信息。然后,交换控制结束。

在以上示例中,关注于偶数编号的搜索单元之后的奇数编号的搜索单元,执行温度交换控制。然而,关注于奇数编号的搜索单元之后的偶数编号的搜索单元,也可以执行温度交换控制。即,可以在步骤s42和s43之后执行步骤s40和s41。

接下来,将描述通过优化装置1进行的处理流程的示例。在下文中,将例示由通过cpu的软件处理执行温度调节的情况以及通过在温度调节单元21中示出的硬件处理执行温度调节的情况。

首先,例示由通过cpu的软件处理执行温度调节的情况。在这种情况下,例如,温度调节单元21的功能在优化装置1中实现为通过cpu执行的软件的功能。此外,温度控制器22(包括交换控制器23)的功能在优化装置1中不仅实现为硬件功能,还实现为通过cpu执行的软件功能。然后,图11中的步骤s3至步骤s7执行为通过cpu执行的软件处理,并且图11中的步骤s2以及步骤s8至步骤s11执行为硬件处理。

图15是示出处理流程的示例(部分1)的视图。

在图15中,横轴表示迭代次数(或时间),其中从左到右的方向为正方向。

cpu的数据获取时段包括hw(硬件)激活单元的时段t11、时段t12、时段t13和时段t14。hw激活单元的时段是指激活搜索单元10a1至10an以实施搜索处理(基态搜索)的单元时段。执行温度调整后的随机搜索的时段(核心时段)包括hw激活单元的时段t15。在图中,“×”指示执行副本交换(即温度交换)的定时。在数据获取时段内,在复制副本交换紧之前执行由cpu进行的数据获取。

例如,紧接在时段t11完成之后,cpu获取搜索单元10a1至10an中的能量(以及最低能量未更新时的温度)。cpu根据最低能量的更新来创建温度直方图80。此后,由cpu执行副本交换(温度交换控制)。然后,在下一时段t12中,由搜索单元10a1至10an执行随机搜索。因此,在数据获取时段中,紧接在时段t11、时段t12、时段t13和时段t14中的每个时段之后,cpu获取有关搜索单元10a1至10an的数据并创建温度直方图80。当数据获取时段完成时,cpu基于温度直方图80确定新的温度tmp[i]。此外,为由cpu执行的软件预先设置数据获取时段的长度(例如,在确定了随机搜索的总迭代次数的情况下,这样的数目大约是总迭代次数的1%)。

然后,使用新的温度tmp[i]开始核心间隔的时段t15。在核心间隔中,cpu不干预处理,并且随机搜索和副本交换由搜索单元10a1至10an和由硬件实现的温度控制器22(包括交换控制器23)执行。因此,核心间隔的时段对应于hw激活单元的时段t15。

在以上示例中,在由搜索单元10a1至10an进行的随机搜索的整个时段的第一数据获取时段之后,执行随机搜索而不改变调节的温度。在此期间,可以周期性地提供数据获取时段,并且cpu可以重复执行数据获取和基于所获取的数据的温度确定,并且每次都改变在搜索单元10a1至10an中设置的温度。

接下来,将描述在通过硬件处理执行温度调节的情况下的处理流程。

图16是示出处理流程的示例(部分2)的视图。

在图16中,横轴表示迭代次数(或时间),其中从左到右的方向为正方向。

在通过硬件处理执行温度调节的情况下,包括数据获取时段和核心间隔的整个时段是hw激活单元的时段。

温度调节单元21的数据获取时段包括单元时段t21、单元时段t22、单元时段t23和单元时段t24。时段t25是核心间隔。在图中,“×”指示执行副本交换(即温度交换)的定时。在数据获取时段内,在副本交换紧之前由温度调节单元21执行数据获取。

例如,紧接在时段t21完成之后,温度调节单元21获取搜索单元10a1至10an中的能量(以及最低能量未更新时的温度)。温度调节单元21根据最低能量的更新来创建温度直方图80。此后,由温度调节单元21执行副本交换(温度交换控制)。然后,在下一时段t22中,由搜索单元10a1至10an执行随机搜索。因此,在数据获取时段中,紧接在时段t11、时段t12、时段t13和时段t14中的每个时段之后,温度调节单元21获取有关搜索单元10a1至10an的数据并创建温度直方图80。在数据获取时段完成的情况下,温度调节单元21基于温度直方图80确定新温度tmp[i]。

另外,为温度调节单元21预先设置数据获取时段的长度(例如,在确定了随机搜索的总迭代次数的情况下,这样的数目大约是总迭代次数的1%)。然后,使用新的温度tmp[i]开始核心间隔的时段t25。

在以上示例中,在由搜索单元10a1至10an进行的随机搜索的整个时段的第一数据获取时段之后,执行随机搜索而不改变调节的温度。在此期间,可以周期性地提供数据获取时段,并且温度调节单元21可以重复执行数据获取和基于所获取的数据的温度确定,并且每次都改变在搜索单元10a1至10an中设置的温度。

优化装置1可以适当地确定在搜索单元10a1至10an中设置的温度。具体地,通过基于数据获取时段中的最低能量的更新和所设置的最高温度的统计信息来确定新温度tmp[i]的最大值,可以防止在每个搜索单元中设定的温度太高或太低。因此,可以提高优化装置1中的求解精度。另外,求解精确度的提高增加了较早达到适当解的可能性,从而提升了计算速度。

此外,为了确定适当的最高温度(对应于tmp_max的温度),可以想到的是重复执行优化装置1的优化处理以及用户手动调整这样的处理。但是,这花费很多劳动。同时,如上所述,通过基于温度统计信息确定最高温度tmp_max,可以减少通过用户工作的温度调节劳动。

另外,在通过硬件处理执行温度调节的情况下,与通过软件处理执行温度调节的情况相比,可以减少与输出到cpu的数据和从cpu输入的数据相关联的开销。

此处,作为优化装置1的硬件配置,也可以想到以下示例。

图17是示出优化装置的另一硬件示例的视图。

优化装置1a是包括如下部分的信息处理设备:cpu101、ram(随机存取存储器)102、hdd(硬盘驱动器)103、nic(网络接口卡)104、输出if(接口)105、输入if106、介质读取器107和随机搜索单元108。

cpu101是执行程序指令的处理器。cpu101将存储在hdd103中的至少一些程序和数据加载到ram102中并执行该程序。cpu101可以包括多个处理器核。优化装置1a可以具有多个处理器。一组处理器可以称为“多处理器”或者简称为“处理器”。例如,cpu101可以用作整体控制器24。此外,如上所述,通过由cpu101执行的软件(控制程序)处理也可以实现控制器20(即温度调节单元21、温度控制器22和交换控制器23)的功能。

ram102是易失性半导体存储器,其临时存储由cpu101执行的程序和由cpu101使用的用于计算的数据。优化装置1a可以包括除了ram以外的类型的存储器,或者可以包括多个存储器。

hdd103是非易失性存储装置,其存储软件程序例如os(操作系统)、中间件和应用软件以及数据。优化装置1a可以包括其他类型的存储装置,例如闪速存储器和ssd(固态驱动器),并且可以包括多个非易失性存储装置。

nic104是连接至网络40的接口并且经由网络40与其他计算机通信。例如,nic104通过线缆连接至通信装置例如交换机或者路由器。

输出if105根据来自cpu101的命令,将图像输出到连接至优化装置1a的显示器41。可以将任何类型的显示器例如crt(阴极射线管)显示器、液晶显示器(lcd)、等离子显示器、有机el(oel:有机电致发光)显示器等用作显示器41。

输入if106从连接至优化装置1a的输入装置42获取输入信号,并将该输入信号输出至cpu101。可以将指向装置(例如鼠标、触摸面板、触摸板、轨迹球等)、键盘、遥控器、按钮开关等用作输入装置42。可以将多种类型的输入装置连接至优化装置1a。

介质读取器107是读取记录在记录介质43上的程序和数据的读取器。可以使用例如磁盘、光盘、磁光盘(mo)、半导体、存储器等作为记录介质43。磁盘包括软盘(fd)和hdd(硬盘驱动器)。光盘包括cd(致密盘)和dvd(数字多功能光盘)。

介质读取器107将从例如记录介质43读取的程序和数据复制到另一记录介质例如ram102和hdd103。通过例如cpu101执行读取的程序。记录介质43可以是便携式记录介质,并且可以用于程序和数据的分配。此外,记录介质43和hdd103可以被称为计算机可读记录介质。

随机搜索单元108是加速器,该加速器使用副本交换方法通过硬件执行对组合优化问题的计算。随机搜索单元108包括搜索单元10a1至10an、温度调节单元21、温度控制器22和交换控制器23,并且根据上述图11和14的过程执行随机搜索以搜索ising模型的基态。

可以通过优化装置1a实现与优化装置1相同的功能。

<第二实施方式>

接下来,将描述第二实施方式。

第二实施方式与图2的配置和在第一实施方式中描述的后续附图不同在于:搜索单元10a1至10an中的多个状态变量的值(自旋位串)被改变。在第二实施方式中,除非执行温度调节,否则在搜索单元10a1至10an中设置的温度是常量。例如,对搜索单元10a1至10an,以升序或者降序设置温度。

图18是示出根据第二实施方式的优化装置的电路配置示例的视图。

通过使用例如半导体集成电路诸如fpga来实现优化装置2。优化装置2包括:搜索单元10a1至10an、温度调节单元21a、状态控制器23a和整体控制器24a。

搜索单元10a1至10an具有与图2示出的搜索单元10a1至10an相同的电路配置并因此将不重复对其说明。

然而,在第二实施方式中,对于每个搜索单元的状态保持单元,由状态控制器23a设置位状态(自旋位串)和作为位状态识别信息的副本编号。由于搜索单元10a1至10an的数目为n,因此优化装置2中的位状态的总数目也为n。此外,通过状态控制器23a为每个搜索单元的h计算单元设置局部场。

此外,每个搜索单元的e计算单元将能量e输出至温度调节单元21a和状态控制器23a。每个搜索单元的e计算单元将在每个搜索单元中设置的副本编号与能量e一起输出至温度调节单元21a。例如,图18示出了从搜索单元10a1输出副本编号″rep_1″、从搜索单元10a2输出副本编号″rep_2″、以及从搜索单元10an输出副本编号″rep_n″的情况。

状态保持单元11将在h计算单元12bl至12bn中设置的位状态和局部场(在图中可以缩写为lf)输出至状态控制器23a。

温度调节单元21a接收从搜索单元10a1至10an中的每个输出的能量值和副本编号。温度调节单元21a获取在搜索单元10a1至10an的每个中设置的温度。图18示出了在搜索单元10a1中设置温度t1、在搜索单元10a2中设置温度t2以及在搜索单元10an中设置温度tn的示例。温度调节单元21a根据与位状态相对应的能量值的变化和温度的变化,确定指示要在搜索单元10a1至10an中的每个中设置的新温度的新温度信息。温度调节单元21a经由温度控制器(未示出)将确定的新温度信息和新温度的新温度设置信号(tsetsig.)输出至搜索单元10a1至10an。在每个搜索单元的状态转变确定电路(例如状态转变确定电路13b1至13bn)中设置新的温度信息。

状态控制器23a执行对搜索单元10a1至10an中的状态(包括位状态和局部场)的交换控制。状态控制器23a是交换控制器23的示例。

状态控制器23a将位状态和位状态设置信号(bssetsig.)提供给搜索单元10a1至10an的每个中包括的状态保持单元。位状态设置信号包括与位状态相对应的副本编号。此外,状态控制器23a将局部场和局部场设定信号(lfsetsig.)提供给搜索单元10a1至10an的每个中包括的h计算单元。

状态控制器23a基于式(5)的交换概率,确定是否对具有邻近温度的两个搜索单元对执行状态交换。状态控制器23a将交换后的位状态和局部场提供给每个搜索单元。

例如,状态控制器23a将使温度索引与温度相关联的第一关联信息保持在状态控制器23a中包括的寄存器中。例如,温度索引按温度的升序与温度相关联(随着温度索引越大,温度越高)。在第二实施方式中,温度索引也是搜索单元识别信息。此外,例如,状态控制器23a将第三关联信息保持在状态控制器23a所包括的寄存器中,该第三关联信息将按温度的升序排列的温度索引与位状态的识别编号(副本编号)相关联。状态控制器23a基于第一关联信息和第三关联信息来控制搜索单元10a1至10an的状态交换,并根据该交换来更新第三关联信息。在第二关联信息中,可以对具有邻近温度索引的一对搜索单元执行状态交换。状态控制器23a基于第三关联信息将位状态和局部场提供给搜索单元10a1至10an。

然而,状态控制器23a可以保持将副本编号与温度值(按与搜索单元相对应的顺序以升序或降序排列的温度值)相关联的关联信息,并且可以基于关联信息执行状态的交换控制。在这种情况下,根据通过温度调节单元21a进行新温度的计算结果来更新关联信息中的温度值。

整体控制器24a控制优化装置2的整个操作。整体控制器24a接收激活信号。然后,整体控制器24a将初始温度信息和温度设置信号(tsetsig.)输出至搜索单元10a1至10an,并在搜索单元10a1至10an的每个中设置初始温度。然后,整体控制器24a向状态控制器23a输出激活信号,以激活搜索单元10a1至10an并开始对优化问题的计算。

当计算结束时,整体控制器24a从搜索单元10a1至10an中的每一个获取位状态,并且获得优化问题的解。整体控制器24a输出指示计算结束的结束信号。结束信号可以包括指示通过计算获得的解的信息。例如,整体控制器24a可以将指示解的图像信息输出至连接到优化装置2的显示装置,并且将指示解的图像信息显示在显示装置上,使得可以将所获得的解的内容呈现给用户。

图19是示出温度调节单元的电路配置示例的视图。

温度调节单元21a包括:寄存器310、最低能量更新检查电路320、最高温度更新检查电路330、温度直方图计算电路340和温度计算电路350。优化装置2还包括温度控制器22a。

寄存器310存储与n个位状态中的每个位状态的副本编号相关联的设定温度的最高值(最高温度)与所达到的最低能量。

最低能量更新检查电路320在预定的数据获取定时从搜索单元10a1至10an中的每个接收每个搜索单元中的能量值e和位状态副本编号。最低能量更新检查电路320将每个接收到的副本编号的能量值e与存储在寄存器310中的每个副本编号的最低能量进行比较,以检查每个副本编号是否已更新了最低能量。最低能量更新检查电路320向最高温度更新检查电路330和温度直方图计算电路340输出指示针对每个副本编号关于最低能量是否已更新的检查结果的信号。在针对某个副本编号更新了最低能量的情况下,最低能量更新检查电路320将寄存器310中记录的相应副本编号的最低能量更新为此次针对相应副本编号获取的能量。

在最低能量更新检查电路320的检查结果指示还未针对某个副本编号更新最低能量的情况下,最高温度更新检查电路330将对应副本编号(位状态)的当前温度与存储在寄存器310中的对应副本编号的最高温度进行比较。最高温度更新检查电路330根据该比较,针对对应的副本编号检查是否来自先前的最低能量更新的最高温度已被更新为当前设定温度。在最高温度已经更新的情况下,最高温度更新检查电路330将关于记录在寄存器310中的相应副本编号的最高温度的信息更新为与对应副本编号相对应的当前设定温度。

在最低能量更新检查电路320的检查结果指示已经对某个副本编号更新了最低能量的情况下,温度直方图计算电路340在温度直方图上对存储在寄存器310中的相应副本编号的最高温度进行计数。针对所有n个位状态生成一个温度直方图。

温度计算电路350基于由温度直方图计算电路340生成的温度直方图来计算在搜索单元10a1至10an中设置的n个新温度。温度计算电路350使用式(6)和(7)来计算新温度。在温度计算电路350中预设最低温度tmp_min。最高温度tmp_max由温度计算电路350基于温度直方图确定。可以将用于计算新温度的系数α从外部输入到温度计算电路350。温度计算电路350将指示所计算的新温度的新温度信息和温度设置信号(tsetsig.)输出至温度计算电路22a。此外,温度计算电路350将新的温度信息输出至状态控制器23a,并且更新与由状态控制器23a保持的第一关联信息中的温度索引关联的温度。由温度计算电路350进行的温度计算方法与由温度计算电路250进行的温度计算方法相同。

此处,温度控制器22a从温度计算电路350接收新的温度信息和温度设置信号(tsetsig.)。然后,温度控制器22a向搜索单元10a1至10an输出新的温度信息和温度设置信号(tsetsig.)以为搜索单元10a1至10an设置新的温度。

此外,当温度调节单元21a在整个基态搜索时段中以预定的周期等重复执行温度调节时,温度调节单元21a可以从温度控制器22a或者状态控制器23a获取当前在搜索单元10a1至10an的每个中设置的温度信息。

图20是示出在寄存器中存储的数据的示例的视图。

在寄存器310中,将由预定偏移分开的三个地址与一组记录关联。例如,地址“0xxxxxxx00”、“0xxxxxxxxy0”和“0xxxxxxxz0”是与存储在地址“0xxxxxxxz0”中的副本编号相应的一组记录。地址“0xxxxxxxx00”存储与相应副本编号相对应的位状态所达到的最低能量。例如,最低能量由128位宽度表示。地址“0xxxxxxxy0”存储从相应副本编号的位状态中的最低能量的先前更新开始在相应位状态中设置的最高温度。例如,温度由32位宽度表示。此外,例如,副本编号由16-位的宽度表示。

类似地,针对其他副本编号的位状态,将最低能量、温度和副本编号存储在寄存器310中。

以这样的方式,温度调节单元21a与在搜索单元中设置的位状态(多个状态变量)的识别信息(副本编号)相关联地记录针对相应位状态达到的能量值的最小值和针对相应位状态设置的最高温度。然后,当通过任何搜索单元更新能量值的最小值时,温度调节单元21a获取从能量值的最小值的先前更新到能量值的最小值的当前更新为相应的搜索单元中的位状态(多个状态变量)设置的温度中的最高温度值作为温度统计信息。

接下来,将描述优化装置2的处理过程。

图21是示出副本交换的整体控制的示例的流程图。

(s1a)整体控制器24a从外部接收指示初始温度的温度信息作为输入数据,将温度信息输出至搜索单元10a1至10an,并且将激活信号输出到状态控制器23a。

(s2a)响应于从整体控制器24a接收到的激活信号,状态控制器23a使搜索单元10a1至10an中的每个执行随机搜索处理。由搜索单元10a1至10an中的每个执行的处理(搜索处理)过程与图12示出的过程相同。

(s3a)当在搜索单元10a1至10an的每个中执行了规定时间或者规定迭代次数的随机搜索时,温度调节单元21a执行数据采集处理,该数据采集处理包括在搜索单元10a1至10an的每个中计算出的能量值和副本编号的获取。稍后将详细描述数据收集处理。

(s4a)搜索单元10a1至10an将每个邻近搜索单元的能量值、位状态和局部场发送至状态控制器23a。状态控制器23a获取每对邻近搜索单元的在搜索单元10a1至10an中计算出的能量值、位状态和局部场。

(s5a)状态控制器23a使用在温度方面彼此邻近的搜索单元之间的能量差,根据基于式(5)的交换概率来执行状态交换控制。状态控制器23a对具有邻近温度的每对搜索单元执行状态交换控制。稍后将详细描述状态交换控制。

(s6a)温度调节单元21a确定状态交换控制是否在用于温度调节的数据获取时段内。当确定状态交换控制在用于温度调节的数据获取时段内时,处理进行至步骤s2a。当确定状态交换控制不在用于温度调节的数据获取时段内时,处理进行至步骤s7a。

(s7a)基于作为步骤s3a中的数据收集处理的结果而创建的温度直方图80(或累积直方图81),温度调节单元21a计算在式(6)和式(7)中使用的最高温度tmp_max。温度调节单元21a基于式(6)和式(7)使用所计算的最高温度tmp_max来计算新的温度tmp[i]。温度调节单元21将指示所计算的新温度的新温度信息和温度设置信号输出至温度控制器22a和状态控制器23a。在接收到从温度调节单元21a输出的新温度信息和温度设置信号后,状态控制器23a更新与由状态控制器23a保持的第一关联信息中的每个温度索引关联的温度。

(s8a)温度控制器22a通过将新的温度信息和温度设置信号输出至搜索单元10a1至10an中的每个来设置温度,并且使搜索单元10a1至10an中的每个执行随机搜索。

(s9a)当在搜索单元10a1至10an中执行了规定时间或规定迭代次数的随机搜索时,搜索单元10a1至10an将每个邻近搜索单元的能量值、位状态、和局部场发送至状态控制器23a。状态控制器23a针对每个邻近搜索单元获取由搜索单元10a1至10an计算出的能量值、位状态和局部场。

(s10a)状态控制器23a使用在温度方面彼此邻近的搜索单元之间的能量差,基于基于式(5)的交换概率来执行状态交换控制。状态控制器23a对具有邻近温度的每对搜索单元执行状态交换控制。

(s11a)搜索单元10a1至10an确定在最低温度处的搜索单元中是否存在预定次数的位状态变化。在确定在最低温度处的搜索单元中的位状态没有变化的情况下,搜索单元10a1至10an将位状态输出至整体控制器24,并结束副本交换的整个控制过程。在确定在最低温度处的搜索单元中的位状态有变化的情况下,搜索单元10a1至10an进行至步骤s8a,在该步骤s8a中,随机搜索处理继续。

图22是示出数据收集处理的示例的流程图。

数据收集处理对应于步骤s3a。在下文中,将针对搜索单元10a1描述通过温度调节单元21a进行的过程,而将相同的过程应用于搜索单元10a2至10an。对搜索单元10a1至10an中的每一个执行以下步骤s31a至s34a。在步骤s34a中,针对搜索单元10a1至10an计算一个温度直方图80。

(s30a)最低能量更新检查电路320确定定时是否为数据收集定时。在确定该定时是数据收集定时的情况下,处理进行至步骤s31a。在确定该定时不是数据收集定时的情况下,数据收集处理结束。如上所述,数据收集定时可以是搜索单元10a1至10an的搜索处理(图12的过程)的每次完成的定时,或者可以是搜索处理的每多次完成时的定时。

(s31a)最低能量更新检查电路220从搜索单元10a1获取能量e1和副本编号。最低能量更新检查电路320将在寄存器310中存储的相应副本编号的最低能量与获取的能量e1进行比较,以确定最低能量是否已更新。当确定最低能量已经更新时,最低能量更新检查电路220将存储在寄存器310中的相应副本编号的最低能量的记录更新为此次从搜索单元10a1获取的能量e1,并且处理进行至步骤s34a。当确定最低能量还未更新时,处理进行到步骤s32a。

(s32a)最高温度更新检查电路330获取在搜索单元10a1中设置的温度,并确定在寄存器310中存储的相应副本编号的最高温度是否已更新。当确定最高温度已经更新时,处理进行至步骤s33a。当确定最高温度还未更新时,相应副本编号的数据收集处理结束。

(s33a)最高温度更新检查电路330将在寄存器310中存储的相应副本编号的最高温度的记录更新为在搜索单元10a1中设置的温度。然后,相应副本编号的数据收集处理结束。

(s34a)温度直方图计算电路340从寄存器310读取与相应的副本编号相对应的最高温度,并且将温度直方图80中的最高温度的频率加1。如上所述,对于搜索单元10a1至10an(n位状态)生成一个温度直方图80。另外,最高温度更新检查电路330将在寄存器310中存储的相应副本编号的最高温度的记录更新为搜索单元10a1中当前设置的温度。然后,相应副本编号的数据收集处理结束。

温度调节单元21a可以针对搜索单元10a1至10an中的每个并行地执行步骤s31a至s34a的处理。替选地,温度调节单元21a可以依次选择搜索单元10a1至10an中的任何一个,并且重复执行步骤s31至s34的处理。

以这样的方式,在达到对能量值的重复次数的基态搜索之后或者经过预定时间之后,温度调节单元21a从搜索单元10a1至10an的每个获取能量值。然后,温度调节单元21a通过对搜索单元10a1至10an的每个中的位状态(多个状态变量的值)检查能量值的最小值是否已经更新来执行数据收集处理。

图23是示出交换控制的示例的流程图。

交换控制对应于步骤s5a和步骤s10a。

(s40a)关于偶数编号的搜索单元,状态控制器23a基于由式(5)表示的交换概率,确定是否与邻近的较高(或较低)温度的搜索单元交换位状态和局部场。对每对搜索单元执行位状态和局部场交换确定。使用式(2)的metropolis方法的函数或者式(3)的gibbs方法的函数作为式(5)的函数f。在存在确定要交换位状态和局部场的一对搜索单元的情况下,处理进行至步骤s41a。在没有确定要交换位状态和局部场的一对搜索单元的情况下,处理进行至步骤s42a。

(s41a)状态控制器23a对在步骤s40a中确定要交换位状态和局部场的一对搜索单元交换位状态和局部场。状态控制器23a根据状态的交换来更新由状态控制器23a保持的上述第三关联信息。

(s42a)关于奇数编号的搜索单元,状态控制器23a基于由式(5)表示的交换概率,确定是否用邻近的较高(或较低)温度的搜索单元交换位状态和局部场。对每对搜索单元执行位状态和局部场交换确定。使用式(2)的metropolis方法的函数或者式(3)的gibbs方法的函数作为式(5)的函数f。在状态控制器23a在步骤s40a中确定对于偶数编号的搜索单元是否与较高温度的搜索单元交换状态的情况下,状态控制器23a在步骤s42a中确定对于奇数编号的搜索单元是否与较高温度的搜索单元交换状态。在状态控制器23a在步骤s40a中确定对于偶数编号的搜索单元是否与较低温度的搜索单元交换状态的情况下,状态控制器23a在步骤s42a中确定对于奇数编号的搜索单元是否与较低温度的搜索单元交换状态。在存在确定要交换位状态和局部场的一对搜索单元的情况下,处理进行至步骤s43a。在没有确定要交换位状态和局部场的一对搜索单元的情况下,交换控制结束。

(s43a)状态控制器23对在步骤s42a中确定要交换位状态和局部场的一对搜索单元交换位状态和局部场。状态控制器23a根据状态交换来更新由状态控制器23a保持的第三关联信息。然后,交换控制结束。

此外,在以上示例中,关注于偶数编号的搜索单元之后的奇数编号的搜索单元,执行状态交换控制。然而,关注于奇数编号的搜索单元之后的偶数编号的搜索单元,也可以执行状态交换控制。即,可以在步骤s42a和步骤s43a之后执行步骤s40a和步骤s41a。

以这样的方式,优化装置2可以通过在副本交换中在搜索单元之间交换状态来执行ising模型的基态搜索。

优化装置2可以适当地确定在搜索单元10a1至10an中设置的温度。具体地,通过基于数据获取时段中的最低能量的更新和所设置的最高温度的统计信息来确定新温度tmp[i]的最高值,可以防止在每个搜索单元中设置的温度太高或太低。因此,可以提高优化装置2中的求解精度。另外,求解精度的提高增加了较早达到适当解的可能性,从而提高了计算速度。

此外,为了确定适当的最高温度(对应于tmp_max的温度),可以想到的是重复执行优化装置2的优化处理以及用户手动调整这样的处理。但是,这花费很多劳动。同时,如上所述,通过基于温度统计信息确定最高温度tmp_max,可以减少通过用户工作的温度调节劳动。

此外,如在第一实施方式中一样,可以通过由cpu进行的软件处理来实现优化装置2中的温度调节功能。优化装置2也可以如优化装置1a一样具有硬件配置。然而,随机搜索单元执行控制以在副本交换中在搜索单元之间交换状态。

图24是示出解的数目的示例的视图。

曲线图90例示了通过比较例的方法确定并计算温度时获得的组合优化问题的解的数目、以及通过优化装置1和优化装置2(或者优化装置1a)执行温度调节时获得的组合优化问题的解的数目。在曲线图90中,横轴表示问题,而纵轴表示解的数目。比较例的方法是如下方法:通过基于系数矩阵w的预定计算来确定最高温度——该系数矩阵w表示计算开始时的自旋位之间的耦合,并且确定要在每个搜索单元中设置的温度。

实验条件如下。基态搜索的迭代总数为1000万。副本的数目(对应于搜索单元10a1到10an的数目)为100。由每个搜索单元的偏移控制器用于局部解逃离的偏移值的增量值为1,000。在实验中,使用事先已知其解的组合优化问题,并且在完成基态搜索的总迭代次数之后,计数获得解的搜索单元的数目。

此处,附于横轴的字符串是问题的名称,并且通过字母或者字母和数字的组合指示的前缀指示问题的类型。例如,前缀“mcp”指示最大切割问题。前缀“molsim”指示分子相似性问题。前缀“tsp32”指示旅行商问题。另外,前缀后面的字符串指示该类型问题的变体。

从曲线图90可以看出,解在分子相似性问题(molsim_950_xx)和旅行商问题(tsp32_mapxx)中增加。另外,关于最大切割问题,可以看出,在某些变体(例如,mcp_g51至mcp_g54)中,求解性能几乎等同于比较例的方法。至于曲线图90,当从整个视点来看时,可以看出,优化装置1和优化装置2的方法倾向于比比较例的方法有所改进,并且求解性能被改进。此外,由于解的数量增加,所以比比较例的方法更快地达到最优解的可能性增加,从而实现更快的计算速度。

根据实施方式的方面,可以改进求解精度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1