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

数据处理设备、数据处理方法和程序与流程

2022-12-06 19:19:59 来源:中国专利 TAG:


1.本文中讨论的实施方式涉及数据处理设备、数据处理方法和程序。


背景技术:

2.作为计算诺依曼型(neumann-type)计算机不擅长的大规模离散优化问题之一的组合优化问题的设备,存在使用伊辛型评估函数(也称为能量函数等)的伊辛设备(也称为玻尔兹曼机)。
3.伊辛设备将组合优化问题转换为表示磁性材料的自旋行为的伊辛模型。伊辛设备通过诸如模拟退火方法或副本交换方法(也称为并行回火方法等)的马尔可夫链蒙特卡洛方法搜索伊辛型评估函数的值(相当于能量)为局部最小的伊辛模型的状态。评估函数的值是局部最小值中的最小值的状态是最优解。通过改变评估函数的符号,伊辛设备还可以搜索评估函数的值是局部最大的状态。伊辛模型的状态可以由多个状态变量的值的组合来表示。0或1可以用作每个状态变量的值。为此,状态变量也可以称为“位”。
4.例如,伊辛型评估函数由以下式(1)定义。
5.[式1]
[0006][0007]
右侧的第一项将两个状态变量的值(0或1)与权重值(指示两个状态变量之间的相互作用程度)的乘积相加,对于伊辛模型的所有状态变量的所有组合没有省略和重复。xi是具有标识号i的状态变量,xj是具有标识号j的状态变量,并且w
ij
是指示具有标识号i与标识号j的状态变量之间的相互作用程度的权重值。右侧的第二项计算每个标识号的偏置系数与状态变量的乘积之和。bi表示标识号=i的偏置系数。c是常数。
[0008]
xi的值改变时的能量变化量(δei)由下式(2)表示。
[0009]
[式2]
[0010][0011]
在式(2)中,当状态变量xi从1改变为0时,δxi为-1,而当状态变量xi从0改变为1时,δxi为1。hi被称为局部场,并且δei是hi与取决于δxi的符号( 1或-1)的乘积。
[0012]
例如,伊辛设备基于δei与基于随机数和温度参数值获得的噪声值(也称为热噪声)之间的比较结果来确定是否改变xi的值。例如,当δei小于噪声值时,伊辛设备通过更新xi的值来引起状态转变。在下文中,可以将改变(更新)状态变量的值称为翻转。可以将是否改变状态变量的值的确定称为翻转确定。
[0013]
不具有相互作用的一组状态变量的同时翻转不影响计算的收敛性。因此,在相关技术中,存在通过在对多个状态变量执行翻转确定之后允许对不具有相互作用的一组状态变量(权重值为0)同时翻转来提高计算速度的技术(专利文献1)。
[0014]
[引用列表]
[0015]
[专利文献]
[0016]
[专利文献1]日本公开特许公报第2017-219952号。


技术实现要素:

[0017]
[问题]
[0018]
然而,由于允许对不具有相互作用的一组状态变量同时翻转的相关技术在翻转确定之后使用状态变量之间的权重值,因此即使允许被翻转的状态变量也可能取决于权重值而不被翻转。在这种情况下,对翻转确定执行的计算作为无用计算而结束。例如,当相对于xi的权重值不为0的状态变量的数目为ri时,每一次翻转确定发生σ
iri
(当状态变量的总数目为n时,i=1至n)次无用计算。
[0019]
根据一个方面,本公开内容旨在提供可以缩短组合优化问题的计算时间的数据处理设备、数据处理方法和程序。
[0020]
[问题的解决方案]
[0021]
根据一种实施方式,提供了一种数据处理设备,该数据处理设备搜索多个状态变量的值的组合,通过该组合,包括多个状态变量和下述权重值的伊辛型评估函数的值是局部最小或局部最大,所述权重值指示多个状态变量之间的相互作用程度。数据处理设备包括:存储单元,其被配置成存储组信息,该组信息指示多个状态变量中的每一个属于下述多个组中的哪个组,所述多个组通过将多个状态变量进行分组使得权重值的绝对值等于或小于阈值而获得;以及处理单元,其被配置成:执行以下第一处理:基于预定值与在多个第一状态变量中的每一个的值改变的情况下评估函数的值的变化量之间的比较结果,确定是否允许多个第一状态变量中的每一个的值的改变,所述多个第一状态变量属于第一组并且是基于组信息从多个状态变量中选择的;以及当在第一处理中确定允许多个第一状态变量中的多个第二状态变量的值的改变时,执行改变多个第二状态变量的值的第二处理。
[0022]
此外,根据一种实施方式,提供了数据处理方法。
[0023]
此外,根据一种实施方式,提供了程序。
[0024]
发明效果
[0025]
根据一个方面,本公开内容可以缩短组合优化问题的计算时间。
附图说明
[0026]
图1是示出根据第一实施方式的数据处理设备和数据处理方法的示例的图;
[0027]
图2是示出根据第二实施方式的数据处理设备的硬件示例的框图;
[0028]
图3是示出数据处理设备的功能的示例的框图;
[0029]
图4是示出组信息的示例的图;
[0030]
图5是示出分组处理流程的示例的流程图;
[0031]
图6是示出分组的校正处理的流程的示例的流程图;
[0032]
图7是示出阈值确定处理的流程的示例的流程图;
[0033]
图8是示出搜索处理的流程的示例的流程图;
[0034]
图9是示出根据第三实施方式的数据处理设备的示例的图;
[0035]
图10是示出现场可编程门阵列(fpga)的第一示例的图;
[0036]
图11是示出fpga的每个单元的操作时序的示例的时序图;
[0037]
图12是示出fpga的第二示例的图;
[0038]
图13是示出fpga的第三示例的图;以及
[0039]
图14是示出数据处理方法的修改示例的图。
具体实施方式
[0040]
在下文中,将参照附图描述本公开内容的实施方式。
[0041]
(第一实施方式)
[0042]
图1是示出根据第一实施方式的数据处理设备和数据处理方法的示例的图。
[0043]
第一实施方式的数据处理设备10包括存储单元11和处理单元12。
[0044]
例如,存储单元11是作为诸如动态随机存取存储器(dram)的电子电路的易失性存储设备,或者是作为诸如硬盘驱动器(hdd)或闪存的电子电路的非易失性存储设备。存储单元11可以包括诸如寄存器的电子电路。
[0045]
存储单元11存储指示预先分组的多个状态变量中的每一个属于多个组中的哪个组的组信息。
[0046]
对包括在由式(1)表示的伊辛型评估函数中的多个状态变量进行分组,使得权重值的绝对值等于或小于阈值。
[0047]
图1示出了将所有状态变量分组成15a1、15a2、......和15am的m个组的示例。a
11
、a
12
、...、a
21
、a
22
、...和a
m1
、a
m2
、...指示组信息的示例。a
11
、a
12
...表示属于组15a1的状态变量的标识号,a
21
、a
22
...表示属于组15a2的状态变量的标识号,并且a
m1
、a
m2
、...表示属于组15am的状态变量的标识号。
[0048]
包括在组15a1至15am的每一个中的多个状态变量之间的权重值的绝对值(|w
ij
|)等于或小于阈值(ε)。例如,在稍后描述的分组处理之前,ε由以下两种方法指定。
[0049]
例如,第一种指定方法是由用户直接指定ε的方法。例如,可以将由式(1)表示的包括在伊辛型评估函数中的所有权重值的绝对值的平均值(ave.(|w
ij
|))指定为ε。可以将通过从ave.(|w
ij
|)减去|w
ij
|的标准偏差(sdv.(|w
ij
|))的三倍而获得的ave.(|w
ij
|)-3sdv.(|w
ij
|)指定为ε。替选地,在包括在伊辛型评估函数中的所有权重值的绝对值中,可以将最大值的0.01倍、最小值的2倍、最大值与最小值之间的差的0.1倍等指定为ε。
[0050]
第二种指定方法是以下方法:当指定属于每个组的状态变量的数目的下限值时,指定ε以满足下限值。稍后将描述该方法的细节(参照图7)。
[0051]
例如,如图1所示,如上所述分组的多个状态变量的标识号作为a
11
、a
12
、...、a
21
、a
22
、...和a
m1
、a
m2
、...等针对每个组存储在存储单元11中。
[0052]
存储单元11可以存储各种类型的数据,例如处理单元12执行将在后面描述的数据处理方法(组合优化问题的计算)的计算条件。例如,存储单元11可以存储包括在由式(1)表示的伊辛型评估函数中的w
ij
、bi和c、每个状态变量的初始值等。当处理单元12通过软件执行将在后面描述的数据处理方法的部分或全部处理时,用于执行处理的程序存储在存储单元11中。
[0053]
例如,可以由作为诸如中央处理单元(cpu)、图形处理单元(gpu)或数字信号处理
器(dsp)的硬件的处理器实现处理单元12。还可以由诸如专用集成电路(asic)或现场可编程门阵列(fpga)的电子电路来实现处理单元12。
[0054]
例如,处理单元12搜索由式(1)表示的评估函数的值(能量)是局部最小的分配状态。评估函数的值是局部最小值中的最小值的状态是最优解。通过改变由式(1)表示的评估函数的符号,处理单元12还可以搜索评估函数的值是局部最大的状态(在这种情况下,评估函数的值是最大值的状态是最优解)。
[0055]
图1示出了由处理单元12执行的处理的流程的一部分。
[0056]
步骤s1:处理单元12对属于基于组信息选择的特定组的多个状态变量中的每一个执行翻转确定。
[0057]
例如,首先,处理单元12对属于组15a1的多个状态变量中的每一个执行翻转确定。在这种情况下,基于表示为a
11
、a
12


的标识号来选择要用于计算的权重值,并且计算由式(2)表示的δei。例如,在包括在评估函数中的状态变量的数目为n并且a
11
=1的情况下,使用w
11
至w
1n
并且计算δe1。基于δe1与预定值之间的比较结果,处理单元12确定是否允许x1的翻转。例如,预定值是基于随机数和温度参数值获得的噪声值。例如,当δe1小于log(rand)
×
t时,处理单元12确定允许x1的翻转,log(rand)
×
t是基于等于或大于0并且等于或小于1的均匀随机数(rand)和温度参数(t)获得的噪声值的示例。对属于由组信息表示的组15a1的除了a
11
的其他状态变量执行类似的处理。
[0058]
步骤s2:处理单元12对属于特定组的多个状态变量中被允许通过步骤s1的处理翻转的所有状态变量(在图1中指示为可以接受翻转的状态变量)进行翻转。
[0059]
通过使同时翻转的多个状态变量具有等于或小于阈值(ε)的权重值的绝对值(|w
ij
|),计算的收敛性可以受到更小的影响。通过使用更小的阈值,计算的收敛性进一步受到更小的影响。然而,由于随着阈值变得更小,属于一个组的状态变量的数目可能减少并且可以被同时翻转的状态变量的数目可能减少,所以期望根据所请求的计算精度、计算时间等来确定阈值。
[0060]
步骤s3:处理单元12改变待处理的组。此后,重复从步骤s1开始的处理。
[0061]
例如,当执行模拟退火方法时,每当翻转确定处理重复预定次数时,处理单元12根据预定温度参数变化时间表减小上述温度参数(t)的值。处理单元12输出在上述翻转确定处理重复预定次数时获得的状态(每个状态变量的值),作为组合优化问题的计算结果(例如,在显示装置(未示出)上显示状态)。每当发生翻转时,处理单元12可以更新由式(1)表示的评估函数的值(能量),并且保存直到该时刻能量为最小能量时获得的能量和状态。在这种情况下,处理单元12可以将与在上述翻转确定处理重复预定次数之后存储的最小能量对应的状态作为计算结果输出。
[0062]
当处理单元12执行副本交换方法时,处理单元12在设置不同温度参数值的多个副本的每一个中执行上述翻转确定处理。每当上述翻转确定处理重复预定次数时,处理单元12执行副本交换。例如,处理单元12从多个副本中随机地选择两个副本,并且基于副本之间的能量差或副本之间的温度参数值的差来以预定的交换概率在两个所选择的副本之间交换温度参数值或状态。例如,每当在每个副本中发生翻转时,处理单元12更新由式(1)表示的评估函数的值(能量),并且保存直到该时刻能量为最小能量时获得的能量和状态。处理单元12将与在每个副本中将上述翻转确定处理重复预定次数之后存储的最小能量中的、所
有副本中的最小能量对应的状态作为计算结果输出。
[0063]
根据上述数据处理设备10和数据处理方法,在翻转确定中允许翻转之后,在翻转不被拒绝的情况下对属于权重值的绝对值等于或小于阈值的同一组的多个状态变量同时翻转。因此,由于不发生无用计算,因此可以缩短计算时间。
[0064]
由于不发生无用计算,因此提高了计算时的能量效率,并且可以降低用于计算的功耗。
[0065]
只要权重值的绝对值等于或小于阈值,不仅可以同时翻转不具有相互作用(w
ij
=0)的多个状态变量,而且可以同时翻转具有相互作用的多个状态变量。为此,如上所述的这样的数据处理方法对于诸如不具有相互作用的状态变量的数目较小的二进制二次规划(bqp)的问题也是有效的。
[0066]
(第二实施方式)
[0067]
图2是示出根据第二实施方式的数据处理设备的硬件的示例的框图。
[0068]
例如,数据处理设备20是计算机,并且包括cpu 21、随机存取存储器(ram)22、hdd 23、gpu 24、输入接口25、介质读取器26和通信接口27。上述单元耦接至总线。
[0069]
cpu 21是包括执行程序指令的运算电路的处理器。cpu 21将存储在hdd 23中的程序和数据的至少一部分加载到ram 22中,并且执行程序。cpu 21可以包括多个处理器核,数据处理设备20可以包括多个处理器,并且可以通过使用多个处理器或处理器核来并行地执行下面将要描述的处理。多个处理器(多处理器)的集合可以被称为“处理器”。
[0070]
ram 22是易失性半导体存储器,其临时地存储由cpu 21执行的程序或者用于供cpu 21计算的数据。数据处理设备20可以包括除了ram 22之外的类型的存储器,并且可以包括多个存储器。
[0071]
hdd 23是非易失性存储装置,其存储诸如操作系统(os)、中间件和应用软件的软件的程序和数据。例如,程序包括用于使数据处理设备20执行搜索组合优化问题的解的处理的程序。数据处理设备20可以包括诸如闪存或固态驱动器(ssd)的另一类型的存储装置,并且可以包括多个非易失性存储装置。
[0072]
gpu 24根据来自cpu 21的指令将图像输出到耦接至数据处理设备20的显示器24a。可以使用阴极射线管(crt)显示器、液晶显示器(lcd)、等离子显示面板(pdp)、有机电致发光(oel)显示器等作为显示器24a。
[0073]
输入接口25从耦接至数据处理设备20的输入装置25a获取输入信号,并且将所获取的输入信号输出至cpu 21。可以使用诸如鼠标的指向装置、触摸面板、触摸板或轨迹球、键盘、遥控器、按钮开关等作为输入装置25a。多种类型的输入装置可以耦接至数据处理设备20。
[0074]
介质读取器26是读取记录在记录介质26a上的程序或数据的读取装置。例如,可以使用磁盘、光盘、磁光盘(mo)、半导体存储器等作为记录介质26a。磁盘包括软磁盘(fd)和hdd。光盘包括致密盘(cd)和数字多功能盘(dvd)。
[0075]
例如,介质读取器26将从记录介质26a读取的程序或数据复制到诸如ram 22或hdd 23的另一记录介质。例如,所读取的程序由cpu 21执行。记录介质26a可以是便携类型记录介质,并且可以用于分发程序或数据。记录介质26a和hdd 23可以被称为计算机可读记录介质。
[0076]
通信接口27是耦接至网络27a并且经由网络27a执行与另一信息处理设备的通信的接口。通信接口27可以是经由线缆耦接至通信装置例如交换机的有线通信接口或者可以是经由无线链路耦接至基站的无线通信接口。
[0077]
接下来,将描述数据处理设备20的功能和处理过程。
[0078]
图3是示出数据处理设备的功能的示例的框图。
[0079]
数据处理设备20包括输入单元30、控制单元31、分组单元32、存储单元33、搜索单元34和输出单元35。
[0080]
例如,可以通过使用由cpu 21执行的程序模块来实现输入单元30、控制单元31、分组单元32、搜索单元34和输出单元35。例如,可以通过使用固定在ram 22或hdd 23中的存储区域来实现存储单元33。
[0081]
例如,输入单元30接收问题信息(式(1)的w
ij
、bi和c)和计算条件(例如,用于分组的阈值(ε)、用于改变温度参数(t)的信息、翻转确定的最大次数等)的输入。这些信息可以由操作输入装置25a的用户输入,或者可以经由记录介质26a或网络27a输入。
[0082]
控制单元31控制数据处理设备20的每个单元,并且使每个单元执行稍后描述的处理。
[0083]
分组单元32基于包括在伊辛型评估函数中的权重值(w
ij
)对多个状态变量进行分组使得满足|w
ij
|≤ε,并且生成指示分组结果的组信息。
[0084]
存储单元33存储权重值和组信息。存储单元33可以存储各种类型的信息,例如其他问题信息、计算条件、n个状态变量的值和能量的计算结果。
[0085]
搜索单元34通过重复执行翻转确定和对被允许翻转的状态变量进行翻转的处理来搜索评估函数的值(能量)是局部最小的状态。
[0086]
例如,输出单元35将在执行预定次数的搜索处理之后获得的评估函数中包括的每个状态变量的值以及此时的评估函数的值作为计算结果输出。例如,输出单元35可以在显示器24a上输出并显示计算结果、可以经由网络27a将计算结果发送至另一信息处理设备或者可以将计算结果存储在外部存储装置中。
[0087]
图4是示出组信息的示例的图。图4示出了在将状态变量分组成m个组的情况下的组信息的示例。
[0088]
例如,a
11
、a
12
、...、a
1q
、...表示属于第一组的n1个状态变量的标识号,并且a
1q
表示属于第一组的第q个状态变量的标识号。a
p1
、a
p2
、...、a
pq
、...表示属于第p组的n
p
个状态变量的标识号,并且a
pq
表示属于第p组的第q个状态变量的标识号。
[0089]
在下文中,将描述数据处理设备20的处理过程。首先,数据处理设备20执行如下所述的分组处理。
[0090]
图5是示出分组处理流程的示例的流程图。
[0091]
步骤s10:输入单元30接收问题信息(式(1)的w
ij
、bi和c)和计算条件(例如,用于分组的阈值(ε)、用于改变温度参数(t)的信息、翻转确定的最大次数等)的输入。在下文中,将假设包括在式(1)的评估函数中的状态变量的数目为n来进行描述。
[0092]
步骤s11:分组单元32设置d1=1,di=0,m=1,nm=1以及a
m,nm
=1。a
m,nm
的nm指示nm(属于第m组的状态变量的数目)。di是指示标识号=i(2≤i≤n)的状态变量(xi)是否被分类到任何组中的变量。di=0指示xi未被分类到任何组中,并且di=1指示xi被分类到任何组
中。d1=1指示x1被分类到特定组(第一组)。由于在开始时只存在第一组并且仅x1属于第一组的状态,组的数目(m)被设置为m=1并且nm=1。a
m,nm
=1的原因是因为属于第一组的状态变量(x1)的标识号是1。
[0093]
步骤s12:分组单元32设置i=2。
[0094]
步骤s13:分组单元32确定是否是di=0。当确定是di=0时,分组单元32执行步骤s14的处理。当确定不是di=0时,分组单元32执行步骤s20的处理。
[0095]
步骤s14:分组单元32设置p=0。p是组号。
[0096]
步骤s15和步骤s16:分组单元32设置p=p 1,并且确定是否p≤m。当确定是p≤m时,分组单元32执行步骤s18的处理。当确定不是p≤m时,分组单元32执行步骤s17的处理。
[0097]
步骤s17:分组单元32设置m=m 1,nm=1,a
m,nm
=i以及di=1。在步骤s17的处理中,标识号=i的状态变量被分类到下一组中。在步骤s17的处理之后,执行步骤s20的处理。
[0098]
步骤s18:分组单元32确定对于q=1、...、n
p
中的每一个,f
ε
(a
pq
,i)是否为1。f
ε
(a
pq
,i)是当在标识号=a
pq
的状态变量与标识号=i的状态变量之间的权重值等于或小于ε时为1并且当权重值大于ε时为0的函数。当确定对于q=1、...、n
p
中的每一个,f
ε
(a
pq
,i)为1时,分组单元32执行步骤s19的处理。当确定对于q=1、...、n
p
中的每一个,f
ε
(a
pq
,i)不为1时,分组单元32返回至步骤s15的处理。
[0099]
步骤s19:分组单元32设置n
p
=n
p
1,a
p,np
=i以及di=1。a
p,np
的np指示n
p
。在步骤s19的处理中,将标识号=i的状态变量分类为第p组的第n
p
个状态变量。
[0100]
步骤s20和步骤s21:分组单元32设置i=i 1,并且然后确定i是否已经达到n。当确定i尚未达到n时,分组单元32重复步骤s13的处理。当确定i已经达到n时,分组单元32结束分组处理。
[0101]
通过上述处理,式(1)的评估函数中包括的n个状态变量中的每一个被分类为任何组,并且a
m,nm
和a
p,np
存储在存储单元33中作为组信息。
[0102]
在分组之后,分组单元32可以执行如下所述的分组校正,使得属于组的状态变量的数目在组中尽可能地相等。
[0103]
图6是示出分组的校正处理的流程的示例的流程图。
[0104]
步骤s30:通过属于每个组的状态变量的数目对m个组进行排序。在存在相同数目的状态变量所属的两个组的情况下,可以通过假定属于所述组中的一个的状态变量的数目小来执行排序。
[0105]
首先,分组单元32设置s=m。s指示当按照属于每个组的状态变量的数目的升序对m个组排列时的组的顺序。由于m是组的数目,因此首先指定状态变量的最大数目所属的组。
[0106]
步骤s31:分组单元32将变量u设置为u=rs并且将变量z设置为z=1。rs是当以属于每个组的状态变量的数目的升序对组排列时第s个组的标识号。
[0107]
步骤s32和步骤s33:分组单元32将变量t设置为t=1并且将变量v设置为v=r
t
。r
t
是当以属于每个组的状态变量的数目的升序对组排列时第t个组的标识号。
[0108]
步骤s34:分组单元32确定对于y=1、...、nv中的每一个,f
ε
(a
uz
,a
vy
)是否为1。f
ε
(a
uz
,a
vy
)是当在标识号=a
uz
的状态变量与标识号=a
vy
的状态变量之间的权重值等于或小于ε时为1并且当权重值大于ε时为0的函数。当确定对于y=1、...、nv中的每一个,f
ε
(a
uz
,a
vy
)为1时,分组单元32执行步骤s41的处理。当确定对于y=1、...、nv中的每一个,f
ε
(a
uz
,avy
)不为1时,分组单元32执行步骤s35的处理。
[0109]
步骤s35和步骤s36:分组单元32设置t=t 1,并且确定是否是t《s。当确定是t《s时,分组单元32返回至步骤s33的处理。当确定不是t《s时,分组单元32执行步骤s37的处理。
[0110]
步骤s37和步骤s38:分组单元32设置z=z 1,并且确定是否是z《nu 1。当确定是z《nu 1时,分组单元32返回至步骤s32的处理。当确定不是z《nu 1时,分组单元32执行步骤s39的处理。
[0111]
步骤s39和步骤s40:分组单元32设置s=s-1,并且确定是否是s》1。当确定是s》1时,分组单元32返回至步骤s31的处理。当确定不是s》1时,分组单元32结束分组的校正处理。
[0112]
步骤s41:分组单元32将标识号=a
uz
的状态变量从标识号=u的组移动至标识号=v的组。
[0113]
步骤s42:分组单元32在将标识号=a
uz
的状态变量从标识号=u的组移动至标识号=v的组之后,再次通过属于每个组的状态变量的数目对m个组执行排序。
[0114]
步骤s43:分组单元32确定是否是n
g-nh≤1(g=rm,h=r1)以及从步骤s30开始的处理是否已经重复了指定次数。当确定是n
g-nh≤1或者从步骤s30开始的处理已经重复了指定次数时,分组单元32结束分组的校正处理。当确定不是n
g-nh≤1并且从步骤s30开始的处理尚未重复指定次数时,分组单元32重复从步骤s30开始的处理。
[0115]
通过上述分组的校正处理,在组之间将属于组的状态变量的数目均等化,并且抑制了属于该组的状态变量的数目太小的组的生成。因此,抑制了允许同时翻转的状态变量的数目的减少,并且可以避免通过多个状态变量的同时翻转来缩短计算时间的效果受损的情况。
[0116]
当指定属于每个组的状态变量的数目的下限值时,分组单元32可以确定用于分组的阈值(ε)以满足下限值。
[0117]
图7是示出阈值确定处理的流程的示例的流程图。
[0118]
步骤s50:首先,分组单元32设置ε=0。
[0119]
步骤s51:分组单元32使用ε执行图5所示的分组处理。除了图5所示的分组处理之外,分组单元32还可以执行图6所示的分组的校正处理。
[0120]
步骤s52:对于m个组,分组单元32确定每个组中状态变量的数目的最小值是否等于或大于预定下限值。当确定每个组中状态变量的数目的最小值等于或大于预定下限值时,分组单元32结束阈值确定处理。在这种情况下,阈值被适当地确定(成功)。当确定每个组中状态变量的数目的最小值并不等于或大于预定下限值时,分组单元32执行步骤s53的处理。
[0121]
步骤s53和步骤s54:分组单元32设置ε=ε 1,并且然后确定是否是ε》max(|w
ij
|)(取最大值(|w
ij
|))。ε增加的值不限于1。当确定是ε》max(|w
ij
|)时,分组单元32结束阈值确定处理。在这种情况下,阈值未被适当地确定(失败)。当确定不是ε》max(|w
ij
|)时,分组单元32重复从步骤s51开始的处理。
[0122]
当阈值未被适当地确定时,存在通过在步骤s53的处理中将小于1的值添加至ε而不是将1添加至ε、由于存在下限值不适当的可能性而通过改变下限值、或者通过采取其他措施来适当地确定阈值的可能性。
[0123]
通过上述阈值确定处理,抑制了属于该组的状态变量的数目太小的组的生成,抑制了允许同时翻转的状态变量的数目的减少,并且可以避免通过多个状态变量的同时翻转来缩短计算时间的效果受损的情况。
[0124]
接下来,将描述数据处理设备20的搜索处理。
[0125]
图8是示出搜索处理的流程的示例的流程图。
[0126]
步骤s60:搜索单元34获取存储在存储单元33中的组信息(a
pq
(1≤q≤n
p
,1≤p≤m))。
[0127]
步骤s61:搜索单元34设置p=1。
[0128]
步骤s62:搜索单元34设置q=1。
[0129]
步骤s63:搜索单元34执行标识号=a
pq
的状态变量的翻转确定。例如,搜索单元34从存储单元33读取待用于由a
pq
标识的状态变量被翻转的情况下的能量变化量的计算的权重值。通过使用式(2),搜索单元34计算在标识号=a
pq
的状态变量被翻转的情况下的能量变化量。当所计算的变化量小于噪声值时,搜索单元34允许对标识号=a
pq
的状态变量翻转。当变化量等于或大于噪声值时,搜索单元34不允许翻转。
[0130]
例如,在a
pq
=i时,读出w
i1
至w
in
,并且通过式(2)计算δei。例如,当δei小于log(rand)
×
t时,搜索单元34允许xi的翻转,其中,log(rand)
×
t是基于等于或大于0并且等于或小于1的均匀随机数(rand)和温度参数(t)获得的噪声值的示例。
[0131]
步骤s64和步骤s65:搜索单元34设置q=q 1,并且然后确定q是否为n
p
1。当确定q为n
p
1时,搜索单元34执行步骤s66的处理。当确定q不是n
p
1时,搜索单元34重复从步骤s63开始的处理。
[0132]
步骤s66:通过步骤s63至s65的处理,搜索单元34对被允许翻转的所有状态变量进行翻转。
[0133]
步骤s67和步骤s68:搜索单元34设置p=p 1,并且然后确定p是否为m 1。当确定p不是m 1时,搜索单元34重复从步骤s62开始的处理。当搜索单元34确定p为m 1时,执行步骤s69的处理。
[0134]
步骤s69:控制单元31确定翻转确定的次数是否为温度参数(t)的变化周期。当确定翻转确定的次数是t的变化周期时,控制单元31执行步骤s70的处理。当确定翻转确定的次数不是t的变化周期时,控制单元31执行步骤s71的处理。
[0135]
步骤s70:控制单元31改变(减小)t的值。例如,控制单元31通过将t乘以温度衰减率α(例如,0.99)来减小t。
[0136]
步骤s71:控制单元31确定翻转确定的次数是否等于或大于预定次数(图8的示例中为n)。当确定翻转确定的次数不等于或大于预定次数时,控制单元31重复从步骤s61开始的处理。当确定翻转确定的次数等于或大于预定次数时,控制单元31执行步骤s72的处理。
[0137]
步骤s72:例如,控制单元31使输出单元35输出n个状态变量的当前值作为计算结果。这样结束了搜索处理。
[0138]
图5至图8所示的处理的顺序是示例。可以适当地改变处理的顺序。
[0139]
在根据上述第二实施方式的数据处理设备20和数据处理方法中,可以获得与根据第一实施方式的数据处理设备10和数据处理方法类似的效果。例如,在翻转确定中允许翻转之后,在翻转不被拒绝的情况下,对属于权重值的绝对值等于或小于ε的同一组的多个状
态变量进行同时翻转。因此,由于不发生无用计算,所以可以缩短计算时间。由于不发生无用计算,因此提高了计算时的能量效率,并且可以降低用于计算的功耗。
[0140]
出于上述原因,通过图6和图7所示的处理进行的分组的校正或ε的确定,可以避免通过对多个状态变量的同时翻转来缩短计算时间的效果受损的情况。
[0141]
如上所述,可以通过使数据处理设备20执行程序来实现上述处理细节。
[0142]
程序可以记录在计算机可读记录介质(例如,记录介质26a)上。例如,可以使用磁盘、光盘、磁光盘、半导体存储器等作为记录介质。磁盘包括fd和hdd。光盘包括cd、可记录(r)/可重写(rw)cd、dvd和dvd-r/rw。程序可以记录在便携式记录介质上并且被分发。在这种情况下,程序可以从便携式记录介质被复制到另外的记录介质(例如,hdd 23)然后被执行。
[0143]
(第三实施方式)
[0144]
图9是示出根据第三实施方式的数据处理设备的示例的图。在图9中,与图2所示的元件相同的元件被赋予相同的附图标记。
[0145]
根据第三实施方式的数据处理设备40包括耦接至总线的加器速卡41。
[0146]
加速器卡41是搜索组合优化问题的解的硬件加速器。加速器卡41包括fpga 41a和dram 41b。可以存在多个加速器卡41。
[0147]
例如,在根据第三实施方式的数据处理设备40中,fpga 41a执行图1所示的处理单元12的处理的至少一部分、图3所示的控制单元31的处理的至少一部分以及搜索单元34的处理。fpga 41a中的dram 41b或存储电路(静态随机存取存储器(sram)、寄存器等)(未示出)用作图1所示的存储单元11和图3所示的存储单元33。
[0148]
在下文中,将描述fpga 41a的三个示例(在下文中,称为fpga 41a1、fpga 41a2、fpga 41a3)。
[0149]
(第一示例)
[0150]
图10是示出fpga的第一示例的图。
[0151]
fpga 41a1包括寄存器单元50和寄存器单元51、选择电路52、计算电路(在下文中称为玻尔兹曼机电路)53、确定结果保存电路54、更新电路55和控制器56。
[0152]
寄存器单元50包括多个寄存器,并且存储诸如图4所示的组信息。例如,通过图9所示的cpu 21执行图5至图7所示的处理来生成组信息,并且该组信息被存储在寄存器单元50中。
[0153]
寄存器单元51包括多个寄存器,并且存储权重值(w
ij
)。在图10的示例中,权重值是w
ij
=0,其未存储在寄存器单元51中。
[0154]
组信息和权重值可以存储在dram 41b中,或者可以存储在fpga 41a1中的sram(未示出)中。
[0155]
选择电路52顺序地选择存储在寄存器单元50中的a
pq
并且将其输出。a
pq
按顺序从属于同一组的a
pq
中选择。例如,针对第一组,按照a
11
、a
12
、...的顺序选择标识号。一旦已经选择了属于第一组的状态变量的所有标识信息,接下来,针对第二组,按照a
21
、a
22
、...的顺序选择标识号。
[0156]
玻尔兹曼机电路53包括选择电路53a、乘法电路53b1、乘法电路53b2、......和乘法电路53bn、加法电路单元53c和翻转确定电路53d。
[0157]
选择电路53a根据由选择电路52输出的a
pq
选择待从寄存器单元51读取的权重值。图10示出了当a
pq
=i时要读取的权重值的示例。当a
pq
=i时,选择电路53a选择w
i1
、w
i2
、...和w
in
并且将其输出。
[0158]
乘法电路53b1至乘法电路53bn计算式(2)的w
ij
xj。乘法电路53b1至乘法电路53bn中的每一个输出由选择电路53a输出的权重值中的一个与由更新电路55输出的n个状态变量(x1至xn)的当前值中的对应状态变量的值的乘积。例如,在选择电路53a选择并且输出w
i1
至w
in
的情况下,乘法电路53b1输出w
i1
与x1的乘积,乘法电路53b2输出w
i2
与x2的乘积,并且乘法电路53bn输出w
in
与xn的乘积。
[0159]
加法电路单元53c包括多个加法电路,并且通过将乘法电路53b1至乘法电路53bn的输出相加来计算式(2)的w
ij
xj的和。
[0160]
当对标识号=a
pq
的状态变量翻转的情况下的能量变化量小于噪声值时,翻转确定电路53d输出指示允许翻转的确定结果。当变化量等于或大于噪声值时,翻转确定电路53d输出指示不允许翻转的确定结果。
[0161]
例如,翻转确定电路53d包括噪声生成电路,该噪声生成电路基于从控制器56提供的温度参数(t)生成噪声值(log(rand)
×
t)。rand是等于或大于0并且等于或小于1的均匀随机数。log(rand)可以作为表数据存储在诸如sram的存储器中。在这种情况下,例如,从存储器中读取与由随机数生成电路生成的rand对应的log(rand),将log(rand)乘以t并且用作噪声值。
[0162]
翻转确定电路53d包括保存式(1)和式(2)中指示的偏置系数(bi(i=1至n))的电路(例如,寄存器)。翻转确定电路53d接收来自选择电路52的a
pq
,并且通过将由a
pq
标识的偏置系数与由加法电路单元53c输出的w
ij
xj之和相加来获得局部场(式(2)的hi)。根据该问题,所有偏置系数可以是0。
[0163]
翻转确定电路53d接收由更新电路55输出的n个状态变量(x1至xn)的当前值,并且确定在标识号=a
pq
的状态变量被翻转的情况下的式(2)中指示的-δxi。当标识号=a
pq
的状态变量的当前值为1时,-δxi为1。在当前值为0时,-δxi为-1。当标识号=a
pq
的状态变量的当前值为1时,翻转确定电路53d使用局部场作为能量变化量。在当前值为0时,翻转确定电路53d使用通过对局部场的符号反转而获得的值作为能量变化量。
[0164]
确定结果保存电路54保存由翻转确定电路53d输出的确定结果。确定结果保存电路54预先保存通过分组处理获得的属于每个组的状态变量的数目(上述n
p
)。基于n
p
,确定结果保存电路54确定是否针对属于正在被处理的组的所有状态变量保存了确定结果。
[0165]
当确定未针对属于该组的所有状态变量保存了确定结果时,每当翻转确定电路53d输出确定结果时,确定结果保存电路54使选择电路52选择表示属于该组的下一个状态变量的标识号的a
pq
。当确定针对属于该组的所有状态变量保存了确定结果时,确定结果保存电路54将确定结果提供给更新电路55。此时,确定结果保存电路54使选择电路52在属于下一组的多个状态变量的标识号中选择表示第一状态变量的标识号的a
pq

[0166]
更新电路55包括保存n个状态变量(x1至xn)的值的电路(例如,寄存器)以及将n个状态变量的值中的任何一个值或多个值从0反转为1或从1反转为0以执行翻转的电路。当接收到来自确定结果保存电路54的属于特定组的所有状态变量的确定结果时,更新电路55基于确定结果对该组中被允许翻转的所有状态变量进行翻转。当存在允许被翻转的多个状态
变量时,更新电路55可以并行地翻转状态变量。更新电路55输出n个状态变量(x1至xn)的当前值。
[0167]
控制器56控制t的值、fpga 41a1的每个单元的操作时序等。
[0168]
图11是示出fpga的每个单元的操作时序的示例的时序图。
[0169]
在从选择电路52将特定组的一个a
pq
提供给玻尔兹曼机电路53时(定时t1),玻尔兹曼机电路53根据a
pq
选择要从寄存器单元51读取的w
ij
(定时t2),并且读取w
ij
(定时t3)。玻尔兹曼机电路53执行翻转确定,并且将确定结果发送至确定结果保存电路54(定时t4)。
[0170]
当确定结果不是针对属于特定组的最后状态变量时,执行模式a的操作。当确定结果是针对属于特定组的最后状态变量时,执行模式b的操作。
[0171]
在模式a的操作中,确定结果保存电路54指示选择电路52选择下一个a
pq
(a
pq
表示属于同一组的下一个状态变量的标识号)(定时t5a),并且玻尔兹曼机电路53接收该a
pq
(定时t6a)。之后,执行与定时t2至定时t4处的操作类似的操作。
[0172]
另一方面,在模式b的操作中,确定结果保存电路54指示选择电路52选择下一组的第一个a
pq
(a
pq
表示在属于下一组的多个状态变量的标识号中的第一个状态变量的标识号)(定时t5b)。玻尔兹曼机电路53接收该a
pq
(定时t6b)。在定时t5b,确定结果保存电路54向更新电路55提供针对属于当前正在被处理的组的所有状态变量的确定结果。基于确定结果,更新电路55对组中被允许翻转的所有状态变量进行翻转,并且将x1至xn的当前值(或在执行翻转的情况下的更新值)提供给玻尔兹曼机电路53(定时t7b)。在x1至xn中,属于除了当前正在被处理的组之外的组的状态变量的值不改变。之后,执行与定时t2至定时t4处的操作类似的操作。
[0173]
在控制器56的控制下,重复上述操作。当执行模拟退火方法时,控制器56每隔翻转确定的预定次数就减小t的值。例如,控制器56使更新电路55输出当翻转确定的次数已经达到预定次数时获得的x1至xn的值作为组合优化问题的计算结果。在cpu 21的控制下,x1至xn的输出值被输出至数据处理设备40的外部(例如,显示在显示器24a上)。
[0174]
每当发生翻转时,控制器56可以更新由式(1)表示的评估函数的值(能量),并且使诸如寄存器的存储电路存储在能量是直到该时刻的最小能量时获得的能量和状态。在这种情况下,控制器56可以输出与当翻转确定的次数已经达到预定次数时所存储的最小能量对应的x1至xn的值,作为计算结果。
[0175]
在上述数据处理设备40中,可以获得与根据第一实施方式的数据处理设备10的效果类似的效果。例如,在翻转确定电路53d的翻转确定中允许翻转之后,在翻转不被拒绝的情况下,在更新电路55中对属于权重值的绝对值等于或小于ε的同一组的多个状态变量同时翻转。因此,由于不发生无用计算,所以可以缩短计算时间。由于不发生无用计算,因此提高了计算时的能量效率,并且可以降低用于计算的功耗。
[0176]
尽管在上述示例中,每当翻转确定电路53d输出确定结果时,图10中的fpga 41a1的确定结果保存电路54输出使选择电路52选择下一个a
pq
的选择信号,但这不是唯一情况。例如,控制器56可以在不等待翻转确定电路53d输出确定结果的情况下使选择电路52以预定周期(例如,时钟周期)输出属于同一组的多个状态变量的a
pq
。因此,可以并行地执行针对属于同一组的多个状态变量的积和运算处理和翻转确定处理,并且可以进一步缩短计算时间。
[0177]
(第二示例)
[0178]
图12是示出fpga的第二示例的图。在图12中,与图10所示的元件相同的元件被赋予相同的附图标记。
[0179]
第二示例的fpga 41a2的计算电路61a包括多个电路单元(在下文中称为玻尔兹曼机电路61a1、61a2、......以及61al)。玻尔兹曼机电路61a1至61al中的每一个具有与图10所示的玻尔兹曼机电路53相同的电路配置。
[0180]
选择电路60选择以最大与玻尔兹曼机电路61a1至61a1的数目相等的数目表示属于特定组的状态变量的标识号的a
pq
,并且从寄存器单元50读取a
pq

[0181]
在图12的示例中,选择l a
p1
、a
p2
、...和a
pl
作为表示属于特定组的状态变量的标识号的a
pq
,并且将其提供给玻尔兹曼机电路61a1至61al。在图12的示例中,将a
p1
提供给玻尔兹曼机电路61a1,将a
p2
提供给玻尔兹曼机电路61a2,并且将a
pl
提供给玻尔兹曼机电路61al。
[0182]
玻尔兹曼机电路61a1至61a1中的每一个对由所提供的a
pq
标识的状态变量执行翻转确定,并且输出确定结果。
[0183]
确定结果保存电路62保存从玻尔兹曼机电路61a1至61a1中的每一个输出的确定结果。确定结果保存电路62预先保存属于每个组的状态变量的数目(上述n
p
)。
[0184]
基于n
p
,确定结果保存电路62确定是否保存了针对属于正被处理的组的所有状态变量的确定结果。当确定未保存针对属于正被处理的组的所有状态变量的确定结果时,使选择电路60选择表示标识号的最大值l a
pq
,以用于标识属于该组的剩余状态变量。
[0185]
当确定保存了针对属于正在被处理的组的所有状态变量的确定结果时,确定结果保存电路62将确定结果提供给更新电路55。此时,确定结果保存电路62使选择电路60从属于下一组的多个状态变量的标识号中的表示第一状态变量的标识号的a
pq
中选择最大值l a
pq

[0186]
如上所述,通过提供多个玻尔兹曼机电路61a1至61a1,可以并行地执行属于同一组的状态变量的翻转确定,并且可以进一步缩短计算时间。
[0187]
(第三示例)
[0188]
图13是示出fpga的第三示例的图。在图13中,与图12所示的元件相同的元件被赋予相同的附图标记。
[0189]
虽然第三示例的fpga 41a3基本上与第二示例的fpga 41a2相同,但是计算电路61b包括与评估函数中包括的所有状态变量(x1至xn)相同数目的玻尔兹曼机电路61b1、61b2、......和61bn。玻尔兹曼机电路61b1至61bn中的每一个具有与图10所示的玻尔兹曼机电路53相同的电路配置。
[0190]
由于属于每个组的状态变量的数目小于n,因此不使用玻尔兹曼机电路61b1至61bn中的一些(例如,对由a
pn
标识的状态变量执行处理的玻尔兹曼机电路61bn)。然而,通过提供n个玻尔兹曼机电路61b1至61bn,即使当属于每个组的状态变量的数目大时,也可以并行地处理所有状态变量。因此,可以进一步缩短计算时间。
[0191]
虽然至此已经基于实施方式描述了本公开内容的数据处理设备、数据处理方法和程序的各方面,但是这些仅是示例。
[0192]
例如,以下修改也是可能的。
[0193]
图14是示出数据处理方法的修改示例的图。
[0194]
在图14的示例中,当正在执行针对第一组的翻转确定和更新时,可以通过应用不在第一组中的状态变量来执行针对第二组的积和运算。
[0195]
例如,当由图10的翻转确定电路53d、确定结果保存电路54和更新电路55执行针对第一组的翻转确定和更新处理时,属于其他组的状态变量的值不改变。为此,乘法电路53b1至53bn和加法电路单元53c可以通过应用不在第一组中的状态变量来执行针对第二组的积和运算。
[0196]
由于当完成针对第一组的翻转确定和更新时确定了第一组中的状态变量的值,因此通过应用第一组中的状态变量来执行针对第二组的积和运算。执行针对第二组的翻转确定和更新。同样在该时间期间,可以通过应用不在第二组中的状态变量来执行针对第三组的积和运算。由于当完成针对第二组的翻转确定和更新时确定了第二组中的状态变量的值,因此通过应用第二组中的状态变量来执行针对第三组的积和运算。
[0197]
因此,可以进一步缩短计算时间。
[0198]
除此之外,各种修改是可能的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献