技术领域
[0001] 本文讨论的实施方式涉及优化设备、优化方法和优化程序。
相关背景技术
[0002] 在我们的社会中,存在关于灾难恢复程序、递送路线优化等的大量“组合优化问题”,在“组合优化问题”中,在诸如有限的人员、时间等的约束下从大量元素的组合中选择最优组合。搜索组合优化问题的最优解的这些方法之一是通过应用模拟退火方法获得的伊辛(Ising)计算装置,该模拟退火方法是一种类型的蒙特卡罗(Monte Carlo)方法并且是用于使用随机数值随机地获得解的方法。
[0003] 伊辛计算装置是搜索使由预定评估公式表示的伊辛模型的能量最小化的变量的组合的计算装置。存在下述一些情况:变量被称为自旋,变量的值被称为自旋状态,以及自旋状态的转变被称为反转。
[0004] 伊辛计算装置1是优化器,该优化器搜索使由作为评估函数的公式(1)至公式(4)表示的伊辛模型的能量最小化的变量xi的组合(x0,x1,……,xn)。此处,公式(1)中的变量xi是状态变量,并且取值为零或一。Wij是相互作用系数并且bi是称为磁场项的值。
[0005] [公式.1]
[0006]
[0007] [公式.2]
[0008]
[0009] [公式.3]
[0010]
[0011] [公式.4]
[0012]
[0013] 此处,E表示能量,并且ΔEi表示在xi被反转的情况下的能量变化量。此外,hi表示具有xi的局部场,并且δhi表示具有xi的局部场的变化量。此外,在下面的描述中,存在将能量变化量表示为ΔE的一些情况。
[0014] 通过将实际问题公式化成由公式(1)表示的伊辛模型能量公式并且由伊辛计算装置搜索使能量最小化的自旋状态的组合,可以求解各种类型的组合优化问题。
[0015] 伊辛计算装置基于反转确定公式针对每个自旋确定反转的存在或不存在,顺序地转变状态,并且搜索最小能量。然后,通过将实际问题公式化成伊辛模型能量公式并且由伊辛计算装置搜索使能量最小化的自旋状态的组合,可以求解各种类型的组合优化问题。
[0016] 此处,将简单描述使用模拟退火方法的最小能量搜索方法。伊辛计算装置从初始状态开始搜索,在初始状态下,将零或一分配给表示待求解问题的评估函数的每个变量。然后,伊辛计算装置根据变量组合的当前状态选择接近当前状态的状态,并且考虑状态转变。接近当前状态的状态是例如其中一个变量的状态被改变的状态。接下来,伊辛计算装置针对该状态计算能量变化量,并且根据计算出的值随机地选择是采用状态转变还是保持原始状态而不采用状态转变。当将减小能量的采用概率设置为高于增大能量的采用概率时,状态在减小能量的方向上平均地改变,并且伊辛计算装置最终可以达到最优解或者达到接近最优解的能量。如果确定地在减小能量的情况下采用状态转变并且在增大能量的情况下不采用状态转变,则在广义上能量的变化相对于时间单调地减小。然而,当伊辛计算装置达到局部解时,不再发生状态转变,并且难以期望达到最优解。因此,在组合最优问题的搜索中,重要的是随机地确定是否采用状态转变。
[0017] 此外,当伊辛计算装置求解问题时,可能存在针对变量的范围约束。作为这样的问题,例如,存在下述背包问题:在不超过背包的最大容量的范围内从具有确定的“容量”和“值”的多件行李中选择待放入背包中的目标行李并且获得使所放入的行李的值最大化的组合。在求解给定了针对变量的范围约束的这样的问题时,已知的伊辛计算装置将表示范围约束的辅助自旋引入评估公式。
[0018] 例如,为了使用伊辛计算装置求解背包问题,需要通过数学公式(1)来表示待最小化的目标。因此,假设由变量xi表示是否将每件行李放入背包中,并且在xi=0的情况下未将行李放入背包中且在xi=1的情况下将行李放入背包中。此外,每件行李的容量由wi表示并且行李的值由pi表示,并且待最小化的目标由通过对放入背包中的物品总值添加负号而获得的值表示。该值由以下公式(5)的第一项表示。
[0019] [公式.5]
[0020]
[0021] 此外,将不超过背包的最大容量的条件添加为约束项。由于不超过背包的最大容量的条件意指负载的行李的总容量等于以下范围内的特定值:等于或大于0且等于或小于最大容量,因此如在公式(5)中添加第二项,使得在总容量变为除了该特定值以外的值的情况下,添加约束项的值k作为惩罚。此处,y0至ym是辅助自旋,并且值为1的辅助自旋的总数表示范围约束。
[0022] 注意,在执行退火方法时,存在下述已知技术:将偏移添加至能量变化值之后随机地选择转变状态,使得具有最小能量的局部解的偏移值变得比在能量不是最小的情况下的偏移值大。
[0023] [引用列表]
[0024] [专利文献]
[0025] [专利文献1]日本公开特许公报第2018‑63626号。
具体实施方式
[0046] 在下文中,将参照附图详细描述本文公开的优化器、优化方法和优化程序的示例。注意,以下示例不限制本文公开的优化器、优化方法和优化程序。
[0047] [第一实施方式]
[0048] 图1是伊辛计算装置的框图。伊辛计算装置1包括多个退火单元10、温度控制单元20、阈值生成单元30、随机数生成单元40、反转自旋选择单元50、能量计算单元60以及搜索结果保存单元70。例如,在单个伊辛计算装置1上安装有一千零二十四个退火单元10。在以下描述中的“反转”包括除了从0至1或从1至0的自旋状态的已知变化以外的辅助自旋的值的变化。
[0049] 根据本实施方式的伊辛计算装置1是优化器,该优化器搜索使由作为评估函数的公式(1)表示的伊辛模型的能量最小化的变量xi的组合(x0,x1,……,xn)。
[0050] [公式.6]
[0051]
[0052] 此处,公式(6)中的E表示能量。然后,公式(6)中的变量xi是状态变量并且取值为零或一。此外,变量y0是范围约束的条件并且可以取预设范围中的任意值。注意,变量y0每次递增或递减1。此外,公式(6)中的k是约束项的系数。
[0053] 在以下描述中,变量xi被称为“自旋”,并且变量xi的值被称为“自旋状态”。自旋状态被表示为0或1。此外,变量y0被称为“辅助自旋”。也就是说,在该情况下存在一个辅助自旋。然后,由于变量y0取预定范围中的任意值,因此给定至变量y0的值被称为针对变量y0的自旋状态。
[0054] 此外,在下文中,自旋状态的转变和辅助自旋的值的变化被称为“反转”。也就是说,反转对应于自旋状态从0至1的转变、自旋状态从1至0的转变、y0的值从M至M+1的变化或者y0的值从M至M‑1的变化。
[0055] 可以如图2中的变换11所示地对公式(6)进行变换。图2是示出根据第一实施方式的关于辅助自旋的计算示例的图。根据变换11的变换公式在将y0的值从M增加至M+1的情况下的差和在将y0的值从M减小至M‑1的情况下的差由方程12表示。也就是说,在该情况下,在增加或减小辅助自旋的值的情况下的能量变化量由以下公式(7)表示。
[0056] [公式.7]
[0057]
[0058] 此外,辅助自旋中的局部场由以下公式(8)表示。
[0059] [公式.8]
[0060]
[0061] 此外,当发生自旋反转时辅助自旋中的局部场的变化量由以下公式(9)表示。
[0062] [公式.9]
[0063]
[0064] 公式(9)从顶部起表示:在辅助自旋增加1的情况下局部场的变化量,在辅助自旋减小1的情况下局部场的变化量,在自旋状态从0变为1的情况下局部场的变化量以及在自旋状态从1变为0的情况下局部场的变化量。
[0065] 此处,将描述由以下公式(10)表示的关于辅助自旋的相互作用系数Wij的值的情况。
[0066] [公式.10]
[0067]
[0068] 在该情况下,除了正常自旋和辅助自旋之外在自旋状态变化的情况下的能量变化量由以下公式(11)表示。在正常自旋的情况下,将公式(11)中的约束项的系数k设置为“0”。
[0069] [公式.11]
[0070]
[0071] 此外,在该情况下的局部场的值的变化量由以下公式(12)表示。
[0072] [公式.12]
[0073]
[0074] 此处,在根据本实施方式的评估函数中,辅助位的变化量一次改变一。因此,将辅助位设置成能够取多个值,但是在每次操作中辅助位的值的计算为加1或减1,并且辅助位的计算不会变大。然后,关于辅助位的值,可以通过确定在改变值以及选择辅助位的值时在能量上是否有利来覆盖可以由辅助位取的值的范围。
[0075] 在本实施方式中,将描述使用由辅助自旋y0表示的范围约束的下限值作为约束项的初始值的情况。
[0076] 温度控制单元20是控制温度参数的值的电路。温度参数是用于控制温度的温度值。在下文中,存在将温度参数表示为T的一些情况。
[0077] 例如,温度控制单元20根据模拟退火方法,通过根据搜索的迭代次数从足够高的初始温度开始逐渐减小温度参数的值来降低温度。从初始状态开始,在由温度控制单元20降低温度的同时重复该迭代。当满足终止确定条件例如实现一定的迭代次数或者能量值下降低于特定值时,操作终止。另外,温度控制单元20可以使用副本交换方法,副本交换方法通过并行执行具有不同温度条件的称为副本的若干个系统并且针对预定迭代次数中的每一次交换系统来搜索最小能量,同时切换低温条件和高温条件。
[0078] 随机数生成单元40是生成随机数值的电路。随机数生成单元40将生成的随机数输出至阈值生成单元30和反转自旋选择单元50。
[0079] 阈值生成单元30是生成用于确定每个自旋是否变为反转候选的阈值的电路。阈值生成单元30从温度控制单元20获取温度参数。此外,阈值生成单元30从随机数生成单元40获取随机数值。
[0080] 此处,在本实施方式中,根据以下公式(13)采用变量的反转。例如,利用e‑ΔE/T或1中的较小者作为采用概率来采用变量的反转。
[0081] [公式.13]
[0082]
[0083] 在本实施方式中,根据由随机数生成单元40生成的随机数,根据公式(13)随机地采用反转自旋。在该情况下,采用概率是根据公式(13)的条件与在使用均匀随机数r来满足以下公式(14)的情况下采用反转的条件相同。
[0084] [公式.14]
[0085]
[0086] 公式(14)是用于确定是否采用反转的公式,并且在下面可以被称为“反转确定公式”。
[0087] 因此,阈值生成单元30使用温度参数和随机数值生成公式(14)的右侧的值。然后,阈值生成单元30将生成的公式(14)的右侧的值输出至退火单元10。
[0088] 退火单元10保存针对自旋或辅助自旋中的一个自旋的局部场和自旋状态。在下文中,将要由每个退火单元10控制的自旋或辅助自旋称为自身自旋(ownspin)。然后,退火单元10是基于当自身自旋被反转时的能量变化量来确定自身自旋是否变为反转候选的电路。下面参照图3描述退火单元10的细节。图3是示出退火单元的细节的框图。如图1所示,存在多个退火单元10。然后,各个退火单元10控制不同的自旋但是执行相同的处理。因此,下面将描述特定的退火单元10。
[0089] 如图3所示,退火单元10包括局部场管理单元101、自旋状态管理单元102、能量变化量计算单元103、约束项系数保存单元104、标志生成单元105、约束值保存单元106以及自旋编号保存单元107。
[0090] 自旋编号保存单元107保存用于标识自身自旋的自旋编号。例如,在自旋被表示为xi的情况下自旋编号对应于用于标识i或辅助自旋y0的编号。如果退火单元10具有作为自旋xi的自身自旋,则自旋编号保存单元107将i保存为用于标识自旋xi的自旋编号。此外,在其中自身自旋为辅助自旋y0的退火单元10的情况下,自旋编号保存单元107将i保存为用于标识辅助自旋y0的自旋编号。然后,自旋编号保存单元107将保存的自旋编号输出至自旋状态管理单元102和反转自旋选择单元50。
[0091] 自旋状态管理单元102保存自身自旋的当前自旋状态并且管理自身自旋的自旋状态。例如,在开始最优解搜索处理时自旋状态管理单元102接收自身自旋的自旋状态的初始值的设置。例如,在xi的初始值全部为0的情况下,其中自身自旋为自旋xi的退火单元10的自旋状态管理单元102获取值0作为初始值。此外,由于在本实施方式中约束项的初始值为0,因此其中自身自旋为辅助自旋y0的退火单元10的自旋状态管理单元102获取值0作为初始值。
[0092] 图4是示出用于初始设置指令的文件的示例的图。在本实施方式中,各个自旋的自旋状态的初始值全部为0,因此将文件13中的自旋状态全部设置为0。当伊辛计算装置1读取文件13时,在每个自旋状态管理单元102中设置登记在文件13中的每个自旋状态。
[0093] 此外,自旋状态管理单元102从自旋编号保存单元107获取自旋编号。然后,自旋状态管理单元102将自旋状态连同自旋编号一起输出至标志生成单元105。
[0094] 此后,在由反转自旋选择单元50采用反转的情况下,自旋状态管理单元102从反转自旋选择单元50接收反转自旋确定通知和反转自旋的自旋编号。此外,自旋状态管理单元102从反转自旋选择单元50接收表示对自旋加1的反转的加法标志的输入或者表示从辅助自旋减1的反转的减法标志的输入。然后,在反转自旋为自身自旋的情况下,自旋状态管理单元102执行以下处理。在加法标志的情况下,自旋状态管理单元102利用通过对当前自旋值加1作为新自旋值而获得的值来更新保存的值。此外,在减法标志的情况下,自旋状态管理单元102利用通过从当前自旋值减1作为新自旋值而获得的值来更新保存的值。
[0095] 局部场管理单元101保存关于当前局部场的信息并且管理与自身自旋对应的局部场。此处,由于可以基于局部场和自旋状态根据公式(11)来计算自身自旋被反转的情况下的能量变化量,因此局部场管理单元101针对每个退火单元10保存关于局部场的信息,以使得退火单元10能够计算能量变化量。然后,局部场管理单元101将保存的局部场输出至能量变化量计算单元103。
[0096] 更具体地,当开始最优解搜索处理时,局部场管理单元101接收关于自身自旋的局部场的初始值的设置。例如,当伊辛计算装置1读取图4的文件13时,在局部场管理单元101中设置登记在文件13中的每个自旋的局部场。另外,局部场管理单元101可以通过接收每个自旋的初始值的输入来计算关于自身自旋的局部场的初始值。
[0097] 此后,当由反转自旋选择单元50采用反转并且确定了反转自旋时,局部场管理单元101从反转自旋选择单元50接收反转自旋确定通知和反转自旋的自旋编号。接下来,局部场管理单元101使用反转自旋的自旋编号来计算局部场的变化量,所述反转自旋的反转在公式(12)中确定。然后,局部场管理单元101使用计算出的局部场的变化量作为关于局部场的保存信息来计算关于自身自旋的局部场。此后,局部场管理单元101利用关于计算出的局部场的信息作为关于当前局部场的信息来更新关于局部场的保存信息。
[0098] 约束项系数保存单元104是例如寄存器。然后,约束项系数保存单元104保存与公式(6)中的k相对应的约束项的系数的预定值。例如,当伊辛计算装置1读取图4的文件13时,约束项系数保存单元104存储登记在文件13中的每个自旋的约束项系数。如文件13所示,将0设置为用于正常自旋xi的约束项系数,并且将预定值设置为用于辅助自旋y0的约束项系数。在使用文件13的情况下,将用于辅助自旋y0的约束项系数设置为100。
[0099] 能量变化量计算单元103从局部场管理单元101接收关于局部场的信息的输入。此外,能量变化量计算单元103从约束项系数保存单元104获取与公式(6)中的k相对应的约束项的系数。然后,能量变化量计算单元103使用公式(11)计算由自身自旋的反转引起的能量变化量。此后,能量变化量计算单元103将计算出的由自身自旋的反转引起的能量变化量输出至标志生成单元105。
[0100] 约束值保存单元106是例如寄存器。然后,约束值保存单元106将上限值和下限值保存在范围约束中。在自身自旋为正常自旋的情况下,将上限值设置为1并且将下限值设置为0,使得自旋状态落入范围约束的范围内。例如,当伊辛计算装置1读取图4的文件13时,约束值保存单元106存储针对登记在文件13中的每个自旋的上限值和下限值。如文件13所示,针对正常自旋xi将1设置为上限值并且将0设置为下限值。此外,在文件13中,将预定值设置为针对辅助自旋y0的上限值和下限值。在使用文件13的情况下,将针对辅助自旋y0的上限值设置为190,并且将针对辅助自旋y0的下限值设置为0。这是针对求解例如在对具有最大容量为190的背包中的物品进行打包时的背包问题的设置。
[0101] 标志生成单元105从自旋状态管理单元102接收自旋状态的输入。此外,标志生成单元105从约束值保存单元106获取范围约束中的上限值和下限值。此外,标志生成单元105从能量变化量计算单元103接收能量变化量的输入。此外,标志生成单元105从阈值生成单元30接收由公式(14)表示的反转确定公式的右侧的值的输入。
[0102] 接下来,标志生成单元105确定自旋状态在反转之后是否在上限值和下限值的范围内。然后,标志生成单元105在自旋状态与上限值匹配的情况下确定加法候选确定是不可能的,并且在自旋状态小于上限值的情况下确定加法候选确定是可能的。此外,标志生成单元105在自旋状态与下限值匹配的情况下确定减法候选确定是不可能的,并且在自旋状态超过下限值的情况下确定减法候选确定是可能的。
[0103] 接下来,在加法候选确定和减法候选确定中的一者或两者可能的情况下,标志生成单元105确定能量变化量是否满足反转确定公式,其中公式(14)的右侧被设置成从阈值生成单元30获得的值。
[0104] 在能量变化量满足反转确定公式的情况下,标志生成单元105生成指示自身自旋是反转候选的反转候选标志。另一方面,在能量变化量不满足反转确定公式的情况下,标志生成单元105生成指示自身自旋不是反转候选的反转候选标志。例如,标志生成单元105在反转候选标志指示自身自旋是反转候选的情况下将值F设置成1,并且在反转候选标志指示自身自旋不是反转候选的情况下将值F设置成0,其中反转候选标志为F。
[0105] 接下来,在自身自旋是辅助自旋的情况下,标志生成单元105可以转变至其中将当前辅助自旋y0的值加1的自旋状态,并且转变至将当前辅助自旋y0的值减1的自旋状态。在可以转变至两个自旋状态的情况下,当加法候选确定是可能的并且减法候选确定是不可能的时,标志生成单元105将加法情况的自旋状态选择为候选。与之相对,当加法候选确定是不可能的并且减法候选确定是可能的时,标志生成单元105将减法情况的自旋状态选择为候选。此外,标志生成单元105在加法候选确定和减法候选确定两者均可能的情况下选择自旋状态中的任一个自旋状态。然后,标志生成单元105在选择转变至加法情况的自旋状态的情况下生成加法标志。此外,标志生成单元105在选择转变至减法情况的自旋状态的情况下生成减法标志。
[0106] 此后,标志生成单元105将生成的反转候选标志以及加法标志或减法标志(如果有的话)输出至反转自旋选择单元50。在下文中,反转候选标志、加法标志和减法标志可以统称为标志。
[0107] 返回至图1,将继续该描述。反转自旋选择单元50从每个退火单元10的自旋编号保存单元107获取每个退火单元10中的自身自旋的自旋编号。此外,反转自旋选择单元50接收在每个退火单元10中的自身自旋的输入。此外,反转自旋选择单元50从随机数生成单元40接收随机数的输入。
[0108] 然后,反转自旋选择单元50确认从每个退火单元10获取的反转候选标志并且确定是否存在反转候选自旋,该反转候选自旋是具有表示该自旋变为反转候选的反转候选标志的自旋。
[0109] 在存在反转候选自旋的情况下,反转自旋选择单元50从根据从随机数生成单元40获取的随机数获取的反转候选自旋中选择一个反转候选自旋。
[0110] 然后,反转自旋选择单元50将选择的反转候选自旋确定为反转自旋。此后,反转自旋选择单元50将反转自旋的自旋编号和自旋状态连同反转自旋确定通知一起输出至能量计算单元60和搜索结果保存单元70。反转自旋选择单元50将反转自旋的自旋编号连同反转自旋确定通知一起输出至退火单元10。此时,在包括加法标志或减法标志的情况下,反转自旋选择单元50将包括的加法标志或减法标志输出至退火单元10。
[0111] 例如,能量计算单元60预先包括其中所有自旋状态均为0的各个自旋的初始值。然后,能量计算单元60使用公式(6)中的每个自旋的初始值获得能量并且保存所获得的能量。
[0112] 此后,能量计算单元60从反转自旋选择单元50接收反转自旋的自旋编号和自旋状态以及反转自旋确定通知的输入。接下来,能量计算单元60在能量计算单元60中保存的每个自旋的自旋状态中对具有从反转自旋选择单元50通知的自旋编号的自旋的自旋状态进行反转,并且生成每个新自旋的自旋状态。此外,能量计算单元60从反转自旋选择单元50获取在反转自旋的自旋状态被反转的情况下的能量变化量。然后,能量计算单元60将获取的能量变化量与保存的能量值相加以计算在反转自旋的自旋状态被反转的情况下的能量。
[0113] 此后,能量计算单元60保存在反转自旋的自旋状态被反转的状态下每个自旋的自旋状态。此外,能量计算单元60将在反转自旋的自旋状态被反转的状态下计算出的能量输出至搜索结果保存单元70。
[0114] 搜索结果保存单元70从能量计算单元60接收计算出的能量的信息的输入。此外,搜索结果保存单元70从反转自旋选择单元50接收反转自旋的自旋编号和自旋状态的输入。然后,在没有保存最小能量的情况下,搜索结果保存单元70将获取的能量设置为最小能量。
在该情况下,搜索结果保存单元70保存在最小能量的情况下的每个自旋的自旋状态。
[0115] 另一方面,在已经保存了最小能量的情况下,搜索结果保存单元70将获取的能量与保存的最小能量进行比较。在获取的能量小于最小能量的情况下,搜索结果保存单元70将获取的能量设置为最小能量。此外,搜索结果保存单元70保存在获取的能量的情况下的每个自旋的自旋状态。同时,在获取的能量等于或大于最小能量的情况下,搜索结果保存单元70继续保存所保存的最小能量和每个自旋在它们处于最小能量下的自旋状态。然而,可以将初始能量设置为最小能量的初始值。在那种情况下,不存在搜索结果保存单元70没有保存最小能量的状态,并且该处理从搜索结果保存单元70已经保存了最小能量的情况开始。搜索结果保存单元70对应于“搜索单元”的示例。
[0116] 接下来,将参照图5A和图5B描述通过根据本实施方式的伊辛计算装置1进行的最优解搜索处理的流程。图5A和图5B是通过根据第一实施方式的伊辛计算装置进行的最优解搜索处理的流程图。
[0117] 伊辛计算装置1基于例如来自使用外部终端(未示出)等的操作者的输入文件在每个单元中设置初始值(步骤S101)。例如,退火单元10的自旋状态管理单元102设置自身自旋的自旋状态的初始值。此外,自旋编号保存单元107设置自身自旋的自旋编号。此外,局部场管理单元101设置针对自身自旋的局部场的初始值。此外,在约束项系数保存单元104中设置约束项系数的值。此外,在约束值保存单元106中设置上限值和下限值。
[0118] 接下来,退火单元10的能量变化量计算单元103获取关于由局部场管理单元101保存的局部场的信息。此外,能量变化量计算单元103从约束项系数保存单元104获取待用于自身自旋的约束项系数的值。然后,能量变化量计算单元103使用公式(11)计算在自身自旋被反转时的能量变化量(步骤S102)。此处,在存在加法情况下的状态转变和减法情况下的状态转变的情况下,能量变化量计算单元103计算加法情况下的能量变化量和减法情况下的能量变化量两者。此后,能量变化量计算单元103将计算出的自身自旋反转时的能量变化量输出至标志生成单元105。
[0119] 标志生成单元105识别加法候选确定和减法候选确定中的每一个的可用性(步骤S103)。
[0120] 接下来,标志生成单元105确定是否加法候选确定或减法候选确定是可能的(步骤S104)。在加法候选确定和减法候选确定两者均不可能的情况下(步骤S104:否定的),最优解搜索处理进行至步骤S107。注意,在每个退火单元10中并行执行步骤S102至步骤S106,并且将所有结果输入至反转自旋选择单元50。也就是说,可以存在不同的处理,例如,某个退火单元10在步骤S104中获得否定确定并且进行至步骤S107,而另一退火单元10在步骤S104中获得肯定确定并且通过步骤S105和步骤S106进行至步骤S107。
[0121] 同时,在加法候选确定或减法候选确定可能的情况下(步骤S104:肯定的),标志生成单元105根据在能量变化量与从阈值生成单元30输入的阈值之间的比较结果来生成反转候选标志(步骤S105)。具体地,在能量变化量满足其中阈值被替换的反转确定公式的情况下,标志生成单元105生成表示每个自旋变为反转候选的反转候选标志。与之相对,在能量变化量不满足其中阈值被替换的反转确定公式的情况下,标志生成单元105生成不表示反转候选的反转候选标志。
[0122] 此外,标志生成单元105将加法标志或减法标志设置为有效(步骤S106)。具体地,标志生成单元105在加法候选确定可能的情况下将加法标志设置为有效,或者在减法候选确定可能的情况下将减法标志设置为有效。此外,在加法候选确定和减法候选确定两者均可能的情况下,标志生成单元105选择加法标志或减法标志并且将选择的标志设置为有效。此后,标志生成单元105将生成的标志输出至反转自旋选择单元50。
[0123] 反转自旋选择单元50从自旋编号保存单元107接收反转候选自旋的自旋编号的输入。此外,反转自旋选择单元50从标志生成单元105接收标志的输入。然后,反转自旋选择单元50确定是否存在具有有效反转候选标志的自旋(步骤S107)。在不存在具有有效反转候选标志的自旋的情况下(步骤S107:否定的),最优解搜索处理进行至步骤S114。
[0124] 同时,在存在具有有效反转候选标志的自旋的情况下(步骤S107:肯定的),反转自旋选择单元50从具有有效反转候选标志的自旋中根据从随机数生成单元40输入的随机数选择自旋,并且确定反转自旋(步骤S108)。此后,反转自旋选择单元50将反转自旋确定通知连同自旋编号一起输出至退火单元10、能量计算单元60和搜索结果保存单元70。此外,在加法标志或减法标志有效的情况下,反转自旋选择单元50将有效的加法标志或减法标志输出至退火单元10。
[0125] 当接收到反转自旋确定通知时,能量计算单元60在每个保存的自旋的自旋状态中对具有从反转自旋选择单元50获取的自旋编号的自旋的自旋状态进行反转。此外,能量计算单元60从反转自旋选择单元50获取在反转自旋的自旋状态被反转的情况下的能量变化量。然后,能量计算单元60将获取的能量变化量与保存的能量值相加以计算在反转自旋的自旋状态被反转的情况下的能量。此后,能量计算单元60更新每个自旋的自旋状态和关于能量的保存信息(步骤S109)。
[0126] 此后,能量计算单元60将计算出的能量输出至搜索结果保存单元70。搜索结果保存单元70确定从能量计算单元60获取的能量是否小于保存的最小能量(步骤S110)。在从能量计算单元60获取的能量等于或大于保存的最小能量的情况下(步骤S110:否定的),最优解搜索处理进行至步骤S112。
[0127] 同时,在从能量计算单元60获取的能量小于保存的最小能量的情况下(步骤S110:肯定的),搜索结果保存单元70利用从能量计算单元60获取的能量作为最小能量来更新保存的最小能量。此外,搜索结果保存单元70存储其中在每个保存的自旋的自旋状态中反转自旋的自旋状态被反转的每个自旋的自旋状态作为新的最小能量的自旋状态(步骤S111)。
[0128] 退火单元10从反转自旋选择单元50接收反转自旋的确定和反转自旋的自旋编号的输入。在其中确定了反转的反转自旋是自身自旋的情况下,自旋状态管理单元102更新自身自旋的自旋状态(步骤S112)。此处,在添加了加法标志或减法标志的情况下,自旋状态管理单元102根据加法标志或减法标志来更新自旋的值以更新自旋状态。
[0129] 局部场管理单元101使用在公式(12)中确定了反转的反转自旋的自旋编号来计算局部场的变化量。此处,在添加了加法标志或减法标志的情况下,局部场管理单元101根据加法标志或减法标志、使用相互作用系数来计算局部场的变化量。然后,局部场管理单元101使用针对关于局部场的保存的信息计算出的局部场的变化量来计算关于自身自旋的局部场。此后,局部场管理单元101利用计算出的局部场的信息作为当前局部场的信息来更新关于局部场的保存的信息(步骤S113)。
[0130] 此后,搜索结果保存单元70确定是否完成了预定计算次数(步骤S114)。在没有完成预定计算次数的情况下(步骤S114:否定的),最优解搜索处理返回至步骤S102。另一方面,在完成了预定计算次数的情况下(步骤S114:肯定的),搜索结果保存单元70将当时具有最小能量的自旋状态确定为最优解并且终止最优解搜索处理。
[0131] 图6是伊辛计算装置的布置配置图。根据本实施方式的伊辛计算装置1对应于图6中的退火电路201。退火电路201是能够执行退火的功能单元。每个退火电路201包括多个单元电路202以及控制电路203。例如,在单个退火电路201上安装有一千零二十四个单元电路202。单元电路202是用于单个自旋确定或状态管理的逻辑和实现的单元,并且对应于退火单元10和反转自旋选择单元50。此外,控制电路203是控制退火电路201的电路,并且对应于能量计算单元60、搜索结果保存单元70等。也就是说,当在单元电路202中生成标志并且此后确定反转自旋时,在单元电路202中更新自旋状态和局部场。
[0132] 此外,图7是单元电路的电路图像的图。图7中示出的寄存器211对应于约束项系数保存单元104的示例,并且寄存器216和217对应于约束值保存单元106的示例。此外,电路212至215和218中除了寄存器216和217以外的部分对应于能量变化量计算单元103和标志生成单元105。
[0133] 单元电路202的区域221中的电路是自旋反转确定侧上的电路。电路212获得减去辅助自旋的值的情况的局部场或正常自旋的自旋状态从1转变至0的情况的局部场,并且使用反转确定公式生成反转候选标志。此外,电路213获得增加辅助自旋的值的情况的局部场或正常自旋的自旋状态从0转变至1的情况的局部场,并且使用反转确定公式生成反转候选标志。电路215确定反转之后的自旋状态是否等于或小于上限值且等于或大于下限值,并且识别加法候选确定的可用性和减法候选确定的可用性。然后,电路215生成加法标志和减法标志。电路214掩蔽(mask)对于将反转候选标志设置成不超过约束范围的自旋的自旋状态,该反转候选标志表示自旋根据有效/无效加法标志和有效/无效减法标志而变为反转候选。此后,在存在加法侧上的反转候选标志和减法侧上的反转候选标志两者的情况下,电路218选择并且输出加法侧上的反转候选标志和减法侧上的反转候选标志中的任一个。在单元电路202内部,当自身自旋为辅助自旋时,自旋状态取多个值但是利用值0或1参加比赛(tournament)。在该情况下,确定参加比赛时的值用以表示例如用于加法的0和用于减法的
1。此后,反转自旋选择单元50使用从电路218输出的信号通过比赛确定反转自旋。
[0134] 此外,单元电路202的区域222中的电路是自旋状态和局部场更新侧的电路。区域222中的电路是自旋状态和局部场更新侧的电路,并且使用从反转自旋选择单元50输入的确定的反转自旋的信息来更新自旋状态和局部场。区域222中的电路对应于局部场管理单元101和自旋状态管理单元102的示例。将从区域222中的电路输出的局部场和自旋状态输入至区域221中的电路,并且用于在下一反转时的计算。
[0135] 图8是当使用伊辛计算装置时的处理的流程图。此处,将使用伊辛计算装置1的用户称为用户。将参照图8描述由用户使用伊辛计算装置1的总体流程。
[0136] 存在用户期望求解的待求解的问题51。用户使用计算机等将待求解的问题转换成伊辛模型(步骤S151)。利用该转换,获取由公式(1)表示的伊辛模型能量公式53。此外,获取自旋状态和局部场的初始值54。
[0137] 接下来,将伊辛模型能量公式53、自旋状态和局部场的初始值54以及用于执行最优解搜索处理的操作条件52例如操作的迭代次数输入至伊辛计算装置1作为参数(步骤S152)。
[0138] 此后,伊辛计算装置1执行操作(步骤S153)。该处理是由上述伊辛计算装置1进行的最优解搜索处理。通过执行该操作,获得计算结果56。
[0139] 用户获取计算结果56(步骤S154)。然后,用户解释所获取的计算结果56(步骤S155)。通过该解释,用户获得关于待求解的问题51的待求解的问题的计算结果56。
[0140] 如上所述,根据本实施方式的伊辛计算装置引入能够取多个值的辅助自旋并且针对具有范围约束的优化问题执行搜索处理。因此,可以抑制用于设置范围约束的条件的资源的增加,并且可以提高待处理的问题的规模。此外,可以将辅助自旋与正常自旋的比率抑制至低值,可以提高搜索效率,并且可以缩短达到最小能量的时间。因此,可以提高针对组合优化问题的伊辛计算装置的处理性能,特别是用于求解具有范围约束的优化问题的处理性能。
[0141] (修改)
[0142] 使用其中辅助自旋的初始值为0的情况进行以上描述,但是辅助自旋的初始值可以是另一值。例如,辅助自旋的初始值可以是另一下限值。此外,在将辅助自旋的初始值设置为诸如0的下限值的情况下,辅助自旋值达到上限值需要花费时间,使得当上限值附近接近最优解时需要额外的时间。因此,辅助自旋的初始值可以被设置为上限值。
[0143] 在将辅助自旋的初始值设置为上限值的情况下的评估函数由以下公式(15)表示。此处,C表示上限值。
[0144] [公式.15]
[0145]
[0146] 此处,在M=Σym的情况下,可以如在图9的变换14中那样变换公式(15)。图9是示出关于根据第一实施方式的修改的辅助自旋的计算示例的图。根据变换14的变化公式将y0的值从M增加至M+1的情况下的差和将y0的值从M减小至M‑1的情况下的差由公式15表示。同样在该情况下,通过将在k之后的加法或减法之后的项设置为辅助自旋y0中的局部场,可以由公式(11)和(12)计算当自旋状态变化时的能量变化量和局部场的值的变化量。
[0147] 因此,退火单元10、反转自旋选择单元50、能量计算单元60和搜索结果保存单元70可以类似地执行第一实施方式的操作并且执行最优解搜索处理。注意,在该情况下,由于执行了对减小将辅助位的初始值设置为上限值的值的控制,因此当在接近上限值的范围中获得最优解时,可以缩短搜索时间。例如,在背包问题的情况下,背包的容量为上限值,并且可以在接近上限值的范围中获得最优解。因此,可以通过采用如修改中那样的根据上限值减小该值的方法来缩短达到最优解的搜索时间。
[0148] [第二实施方式]
[0149] 接下来,将描述第二实施方式。根据本实施方式的伊辛计算装置与第一实施方式中的伊辛计算装置的不同之处在于,在加法候选确定和减法候选确定两者均可能的情况下优先选择使加法标志或减法标志中的哪个有效。在图1和图3中还示出了根据本实施方式的伊辛计算装置1和退火单元10。在以下描述中,省略了对与第一实施方式的每个单元的操作类似的每个单元的操作的描述。
[0150] 根据本实施方式的退火单元10的标志生成单元105具有作为选择加法标志和减法标志的方法的三个选择方法:“加法优先”、“减法优先”和“随机”。然后,标志生成单元105从操作者接收指令并且从“加法优先”、“减法优先”和“随机”三个中采用由操作者指定的选择方法。
[0151] 在自身自旋是辅助自旋的情况下,标志生成单元105接收加1情况下的自旋状态的输入和减1情况下的辅助自旋的输入。然后,标志生成单元105根据加1情况下的自旋状态是否等于或小于上限值来识别加法候选确定的可用性。此外,标志生成单元105根据减1情况下的自旋状态是否等于或大于下限值来识别减法候选确定的可用性。然后,标志生成单元105在能量变化量满足反转确定公式的情况下生成反转候选标志。
[0152] 此外,在加法候选确定和减法候选确定两者均可能的情况下,标志生成单元105选择确定中的任一个。此时,当采用加法优先作为选择方法时,标志生成单元105优先选择加法标志并且使加法标志有效。此外,当采用减法优先作为选择方法时,标志生成单元105优先选择减法标志并且使减法标志有效。与之相对,当采用随机作为选择方法时,标志生成单元105随机选择加法标志或减法标志并且使加法标志或减法标志有效。
[0153] 例如,将描述搜索针对背包问题的最优解的情况作为示例。在该情况下,通过对加法给予优先,与随机选择的情况相比,执行更多的针对最优解的搜索处理,所述最优解具有更接近上限值的值。
[0154] 在背包问题的情况下,辅助自旋是背包的容量,并且物品的总值可能随着值的增大而变高。因此,可以通过对加法给予优先并且获得最优解来缩短达到最优解的搜索时间,所述最优解具有接近上限值的值。
[0155] 此外,在使用取多个值的多个辅助自旋的情况下,对于每个辅助自旋,使加法或减法中的哪个优先可以不同。因此,可以为以每个辅助自旋作为自身自旋的每个退火单元10准备设置寄存器,使得可以根据设置值来切换标志生成单元105的选择规则。
[0156] 如上所述,在其中针对辅助自旋的值执行了加法的自旋状态和其中针对辅助自旋的值执行了减法的自旋状态两者是可选择为反转自旋的情况下,根据本实施方式的伊辛计算装置可以优先选择加法或减法。取决于目标问题,例如,当对加法给予优先时可以缩短达到最优解的时间,或者当对减法给予优先时可以缩短达到最优解的时间。因此,通过给予优先并且针对辅助自旋的值选择加法或减法,可以缩短达到最优解的时间,并且可以改进针对组合优化问题的伊辛计算装置的处理性能。