Patent Publication Number: US-2021173978-A1

Title: Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application is a continuation application of International Application PCT/JP2018/034233 filed on Sep. 14, 2018 and designated the U.S., the entire contents of which are incorporated herein by reference. 
    
    
     FIELD 
     The embodiment relates to an optimization device, an optimization device control method, and an optimization device control program. 
     BACKGROUND 
     As a method of solving a multivariable optimization problem that a von Neumann computer is not good at, there is an optimization device (sometimes referred to as an Ising machine or a Boltzmann machine) using an Ising energy function. The optimization device performs calculation by replacing a problem to be calculated with an Ising model that is a model representing behavior of spins of magnetic material. 
     Related art is disclosed in International Publication Pamphlet No. WO 2017/037903/ 
     SUMMARY 
     According to an aspect of the embodiments, an optimization device includes: a memory; and a processor coupled to the memory and configured to: store a coefficient indicating magnitude of an interaction between bits in a bit string representing a state of an Ising model; output, when any bit in the bit string is inverted, a signal indicating inversion availability of an own bit according to calculation of energy change in the Ising model using the coefficient corresponding to the inverted bit and the own bit read from the memory as a plurality of bit operations; output a signal indicating a bit to be inverted in the bit string selected on the basis of the signal indicating inversion availability output from each of bit operations of a first number of bits of the bit string, of the plurality of bit operations, to each of the bit operations of the first number of bits; and change the first number of bits and change a second number of bits of the coefficient for each of the bit operations of the first number of bits. 
     The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims. 
     It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a diagram illustrating an optimization device according to a first embodiment. 
         FIG. 2  is a diagram illustrating an example of an information processing system according to a second embodiment. 
         FIG. 3  is a block diagram illustrating a hardware example of an information processing device. 
         FIG. 4  is a diagram illustrating an example of a relationship of hardware in the information processing system. 
         FIG. 5  is a block diagram illustrating a hardware example of a control unit. 
         FIG. 6  is a diagram illustrating an example of a combinatorial optimization problem. 
         FIG. 7  is a diagram illustrating a search example for a binary value that is minimum energy. 
         FIG. 8  is a diagram illustrating a circuit configuration example of the optimization device. 
         FIG. 9  is a diagram illustrating a circuit configuration example of a random selector unit. 
         FIG. 10  is a diagram illustrating an example of a trade-off relationship between scale and precision. 
         FIG. 11  is a diagram illustrating a storage example of weight coefficients (No. 1). 
         FIG. 12  is a diagram illustrating a storage example of weight coefficients (No. 2). 
         FIG. 13  is a diagram illustrating a storage example of weight coefficients (No. 3). 
         FIG. 14  is a diagram illustrating a storage example of weight coefficients (No. 4). 
         FIG. 15  is a flowchart illustrating an example of initialization processing. 
         FIG. 16  is a flowchart illustrating an example of operation processing. 
         FIG. 17  is a diagram illustrating a storage example of coupling coefficients (No. 5). 
         FIG. 18  is a diagram illustrating an example of an optimization device of a third embodiment. 
         FIG. 19  is a diagram illustrating a circuit configuration example of an LFB. 
         FIG. 20  is a diagram illustrating a circuit configuration example of a scale coupling circuit. 
         FIG. 21  is a diagram illustrating an example of a required range of scale/precision for each problem. 
         FIG. 22  is a diagram illustrating an example of a selectable range of scale precision. 
         FIGS. 23A to 23C  are diagrams illustrating examples of LFE use patterns. 
         FIG. 24  is a diagram illustrating an example of a use flow of the optimization device. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     The optimization device can also be modeled using, for example, a neural network. In that case, each of a plurality of bits (spin bits) corresponding to a plurality of spins included in the Ising model functions as a neuron that outputs 0 or 1 depending on a weight coefficient (also referred to as a coupling coefficient) indicating magnitude of an interaction between another bit and an own bit. The optimization device obtains, as a solution, a combination of each value of bits in which the minimum value of values (referred to as energy) of the above-described energy function (also referred to as a cost function or an objective function) is obtained, by a stochastic search method such as simulated annealing, for example. 
     For example, there is a proposal of a semiconductor system for searching for a ground state of an Ising model using a semiconductor chip equipped with a plurality of unit elements corresponding to spins. In the proposed semiconductor system, a plurality of semiconductor chips equipped with a certain number of unit elements is used for construction in implementing a semiconductor chip capable of handling a large-scale problem. 
     In the optimization device, the number of spin bits used (corresponding to the scale of the problem) and the number of bits of the weight coefficient (corresponding to the precision of a conditional expression in the problem) can change depending on the problem to be solved. For example, in a problem in a certain field, a relatively large number of spin bits may be used and a relatively small number of bits of the weight coefficient may be used. Meanwhile, in a problem in another field, a relatively small number of spin bits may be used and a relatively large number of bits of the weight coefficient may be used. However, it is inefficient to individually manufacture, for each problem, an optimization device provided with the number of spin bits and the number of bits of the weight coefficient suitable for each problem. 
     In one aspect, an object of the present invention is to provide an optimization device, an optimization device control method, and an optimization device control program capable of varying scale and precision. 
     Hereinafter, the present embodiment will be described with reference to the drawings. 
     First Embodiment 
     A first embodiment will be described. 
       FIG. 1  is a diagram illustrating an optimization device according to the first embodiment. 
     An optimization device  1  searches for values (ground state) of bits of when an energy function becomes minimum, of combinations (states) of each value of a plurality of bits (spin bits) corresponding to a plurality of spins included in an Ising model converted from a problem to be calculated. 
     Here, an Ising-type energy function E(x) is defined by, for example, the following expression (1). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     1 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     E 
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                   = 
                   
                     
                       - 
                       
                         
                           ∑ 
                           
                             
                               &lt; 
                               i 
                             
                             , 
                             
                               j 
                               &gt; 
                             
                           
                         
                          
                         
                           
                             W 
                             ij 
                           
                            
                           
                             x 
                             i 
                           
                            
                           
                             x 
                             j 
                           
                         
                       
                     
                     - 
                     
                       
                         ∑ 
                         i 
                       
                        
                       
                         
                           b 
                           i 
                         
                          
                         
                           x 
                           i 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
     The first term on the right side is an integration of products of values (0 or 1) of two bits and a coupling coefficient, for all of combinations of two bits selectable from all of bits included in the Ising model without omission and duplication. The total number of bits included in the Ising model is K (K is an integer of 2 or larger). Furthermore, each of i and j is an integer of 0 or larger and K−1 or smaller. x i  is a variable (also referred to as a state variable) representing the value of the i-th bit. x j  is a variable representing the value of the j-th bit. W ij  is a weight coefficient indicating the magnitude of an interaction between the i-th and j-th bits. Note that W ii =0. Furthermore, in many cases, W ij =W ij  (in other words, for example, a coefficient matrix based on the weight coefficients is often a symmetric matrix). 
     The second term on the right side is a sum of products of each bias coefficients of all the bits and values of the bits. b i  represents the bias coefficient of the i-th bit. 
     Furthermore, when the value of the variable x i  changes to 1−x i , the increment of the variable x can be expressed as Δx i =(1−x i )−x i =1−2x i . Thus, an energy change ΔE i  accompanying spin inversion (a change in value) is expressed by the expression (2) below. 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     2 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     
                       
                         
                           Δ 
                            
                           
                               
                           
                            
                           
                             E 
                             i 
                           
                         
                         = 
                           
                          
                         
                           
                             E 
                              
                             
                               ( 
                               x 
                               ) 
                             
                           
                            
                           
                             | 
                             
                               
                                 x 
                                 i 
                               
                               → 
                               
                                 1 
                                 - 
                                 
                                   x 
                                   i 
                                 
                               
                             
                           
                            
                           
                             - 
                             
                               E 
                                
                               
                                 ( 
                                 x 
                                 ) 
                               
                             
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                          
                         
                           
                             - 
                             Δ 
                           
                            
                           
                               
                           
                            
                           
                             
                               x 
                               i 
                             
                              
                             
                               ( 
                               
                                 
                                   
                                     ∑ 
                                     j 
                                   
                                    
                                   
                                     
                                       W 
                                       ij 
                                     
                                      
                                     
                                       x 
                                       j 
                                     
                                   
                                 
                                 + 
                                 
                                   b 
                                   i 
                                 
                               
                               ) 
                             
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                          
                         
                           
                             - 
                             Δ 
                           
                            
                           
                               
                           
                            
                           
                             x 
                             i 
                           
                            
                           
                             h 
                             i 
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                          
                         
                           { 
                           
                             
                               
                                 
                                   - 
                                   
                                     h 
                                     i 
                                   
                                 
                               
                               
                                 
                                   ( 
                                   
                                     
                                       for 
                                        
                                       
                                           
                                       
                                        
                                       
                                         x 
                                         i 
                                       
                                     
                                     = 
                                     
                                       0 
                                       → 
                                       1 
                                     
                                   
                                   ) 
                                 
                               
                             
                             
                               
                                 
                                   + 
                                   
                                     h 
                                     i 
                                   
                                 
                               
                               
                                 
                                   ( 
                                   
                                     
                                       for 
                                        
                                       
                                           
                                       
                                        
                                       
                                         x 
                                         i 
                                       
                                     
                                     = 
                                     
                                       1 
                                       → 
                                       0 
                                     
                                   
                                   ) 
                                 
                               
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
     h i  is called local field and is expressed by the expression (3). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     3 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     h 
                     i 
                   
                   = 
                   
                     
                       
                         ∑ 
                         j 
                       
                        
                       
                         
                           W 
                           ij 
                         
                          
                         
                           x 
                           j 
                         
                       
                     
                     + 
                     
                       b 
                       i 
                     
                   
                 
               
               
                 
                   ( 
                   3 
                   ) 
                 
               
             
           
         
       
     
     The local field h multiplied by a sign (+1 or −1) depending on Δx i  is the energy change ΔE i . The change Δh i  of the local field h i  is expressed by the expression (4). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     4 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     Δ 
                      
                     
                         
                     
                      
                     
                       h 
                       i 
                     
                   
                   = 
                   
                     { 
                     
                       
                         
                           
                             + 
                             
                               W 
                               ij 
                             
                           
                         
                         
                           
                             ( 
                             
                               
                                 for 
                                  
                                 
                                     
                                 
                                  
                                 
                                   x 
                                   j 
                                 
                               
                               = 
                               
                                 0 
                                 → 
                                 1 
                               
                             
                             ) 
                           
                         
                       
                       
                         
                           
                             - 
                             
                               W 
                               ij 
                             
                           
                         
                         
                           
                             ( 
                             
                               
                                 for 
                                  
                                 
                                     
                                 
                                  
                                 
                                   x 
                                   j 
                                 
                               
                               = 
                               
                                 1 
                                 → 
                                 0 
                               
                             
                             ) 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
     Processing of updating the local field h, when a certain variable x j  changes is performed in parallel. 
     The optimization device  1  is, for example, a one-chip semiconductor integrated circuit and is implemented using a field programmable gate array (FPGA) and the like. The optimization device  1  includes a bit operation circuit  1   a   1 , . . . ,  1   a K, . . . , and  1   a N (a plurality of bit operation circuits), a selection circuit unit  2 , a threshold generation unit  3 , a random number generation unit  4 , a setting change unit  5 , and a control unit  6 . Here, N is a total number of the bit operation circuits included in the optimization device  1 . N is an integer of K or larger. Identification information (index=0, . . . , K−1 . . . , N−1) is associated with each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. 
     The bit operation circuit  1   a   1 , . . . ,  1   a K, . . . , or  1   a N is a unit element that provides one bit included in a bit string representing a state of the Ising model. The bit string may be called spin bit string, state vector, or the like. Each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N stores the weight coefficient between its own bit and another bit, determines inversion availability of the own bit according to inversion of the another bit on the basis of the weight coefficient, and outputs a signal indicating the inversion availability of the own bit to the selection circuit unit  2 . 
     The selection circuit unit  2  selects a bit to be inverted (inversion bit) from the spin bit string. Specifically, the selection circuit unit  2  receives the signal of inversion availability output from each of the bit operation circuits  1   a   1 , . . . , and  1   a K used for searching for the ground state of the Ising model, of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. The selection circuit unit  2  preferentially selects one bit corresponding to the bit operation circuit that has outputted an inversion available signal from among the bit operation circuits  1   a   1 , . . . , and  1   a K, and adopts the selected bit as the inversion bit. For example, the selection circuit unit  2  selects the inversion bit on the basis of a random number bit output by the random number generation unit  4 . The selection circuit unit  2  outputs a signal indicating the selected inversion bit to the bit operation circuits  1   a   1 , . . . , and  1   a K. The signal indicating the inversion bit includes a signal indicating identification information of the inversion bit (index=j), a flag indicating inversion availability (fIg j =1), and a current value q j  of the inversion bit (a value before the inversion this time). Note that none of the bits may be inverted. In the case where neither bit is inverted, the selection circuit unit  2  outputs fIg j =0. 
     The threshold generation unit  3  generates a threshold to be used for determining the inversion availability of a bit for each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. A signal indicating the threshold is output to each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. As will be described below, the threshold generation unit  3  uses a parameter (temperature parameter) T indicating temperature and a random number to generate the threshold. The threshold generation unit  3  includes a random number generation unit that generates the random number. Favorably, the threshold generation unit  3  individually includes the random number generation unit and individually generates and supplies the threshold for each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. Note that the threshold generation unit  3  may share the random number generation unit among a predetermined number of bit operation circuits. 
     The random number generation unit  4  generates and outputs the random number bit to the selection circuit unit  2 . The random number bit generated by the random number generation unit  4  is used for selecting the inversion bit by the selection circuit unit  2 . 
     The setting change unit  5  changes the first number of bits (the number of spin bits) of the bit string (spin bit string) representing the state of the Ising model to be calculated, of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N. Furthermore, the setting change unit  5  changes the second number of bits of the weight coefficients for each of the bit operation circuits of the first number of bits. 
     The control unit  6  sets the temperature parameter T and the weight coefficient for each storage unit of the bit operation circuits  1   a   1 , . . . , and  1   a N, and controls the start and termination of operations by the bit operation circuits  1   a   1 , . . . , and  1   a N. The control unit  6  outputs an operation result. For example, when the operations using the bit operation circuits  1   a   1 , . . . , and  1   a K end, the control unit  6  reads and outputs the spin bit strings held in the bit operation circuits  1   a   1 , . . . , and  1   a K. 
     Next, a circuit configuration of the bit operation circuit will be described. The bit operation circuit  1   a   1  (index=0) will be mainly described, but other bit operation circuits can be implemented with a similar circuit configuration (for example, the index=X−1 is set for the X-th (X is an integer of 1 or more and N or less) bit operation circuit)). 
     The bit operation circuit  1   a   1  includes a storage unit  11 , a precision switching circuit  12 , an inversion determination unit  13 , a bit holding unit  14 , an energy change calculation unit  15 , and a state transition determination unit  16 . 
     The storage unit  11  is, for example, a register, a static random access memory (SRAM), or the like. The storage unit  11  stores a coefficient indicating the magnitude of an interaction between bits in the spin bit string. More specifically, the storage unit  11  stores the weight coefficient between its own bit (here, the bit with the index=0) and another bit. Here, the total number of weight coefficients is K 2  for the number of spin bits (the first number of bits) K. The storage unit  11  stores K weight coefficients W 00 , W 01 , . . . , and W 0,K-1  for the bit of index=0. Here, the weight coefficients are represented by the second number of bits L. Therefore, the storage unit  11  requires K×L bits to store the weight coefficients. Note that the storage unit  11  may be provided outside the bit operation circuit  1   a   1  and inside the optimization device  1  (the same similarly applies to the storage units of the other bit operation circuits). 
     When any bit in the spin bit string is inverted, the precision switching circuit  12  reads the weight coefficient for the inverted bit from the storage unit  11  of its own (bit operation circuit  1   a   1 ), and outputs the read weight coefficient to the energy change calculation unit  15 . That is, the precision switching circuit  12  receives the identification information of the inversion bit from the selection circuit unit  2 , reads the weight coefficient corresponding to a set of the inversion bit and its own bit from the storage unit  11 , and outputs the weight coefficient to the energy change calculation unit  15 . 
     At this time, the precision switching circuit  12  reads the weight coefficients represented by the second number of bits set by the setting change unit  5 . The precision switching circuit  12  changes the second number of bits of the coefficients read from the storage unit  11  according to the change in the second number of bits by the setting change unit  5 . 
     For example, the precision switching circuit  12  incudes a selector that reads a bit string of a predetermined number of bits from the storage unit  11 . In a case where the predetermined number of bits read by the selector is larger than the second number of bits, the precision switching circuit  12  reads a unit bit string including the weight coefficient corresponding to the inversion bit using the selector, and extracts weight coefficients represented by the second number of bits from the read unit bit string. Alternatively, in the case where the predetermined number of bits read by the selector is smaller than the second number of bits, the precision switching circuit  12  may extract the weight coefficients represented by the second number of bits from the storage unit  11  by coupling a plurality of bit strings read by the selector. 
     The inversion determination unit  13  receives the signal indicating the index=j and fIg j  output by the selection circuit unit  2 , and determines whether the own bit has been selected as the inversion bit on the basis of the signal. In the case where the own bit has been selected as the inversion bit (that is, the index=j indicates the own bit and fig indicates inversion available), the inversion determination unit  13  inverts the bit stored in the bit holding unit  14 . That is, in a case where the bit held in the bit holding unit  14  is 0, the bit is changed to 1. Meanwhile, in a case where the bit held in the bit holding unit  14  is 1, the bit is changed to 0. 
     The bit holding unit  14  is a register that holds one bit. The bit holding unit  14  outputs the held bit to the energy change calculation unit  15  and the selection circuit unit  2 . 
     The energy change calculation unit  15  calculates an energy change value ΔE 0  of the Ising model using the weight coefficient read from the storage unit  11  and outputs the energy change value ΔE 0  to the state transition determination unit  16 . Specifically, the energy change calculation unit  15  receives the value of the inversion bit (the value before the inversion this time) from the selection circuit unit  2 , and calculates Δh 0  by the expression (4) according to whether the inversion bit is inverted from 1 to 0 or 0 to 1. Then, the energy change calculation unit  15  updates h 0  by adding Δh 0  to the previous h 0 . The energy change calculation unit  15  includes a register that holds h 0  and holds the updated h 0  by the register. 
     Moreover, the energy change calculation unit  15  receives the current own bit from the bit holding unit  14 , and calculates the energy change value ΔE 0  of the Ising model of the case where the own bit is inverted from 0 to 1 when the own bit is 0, or from 1 to 0 when the own bit is 1, by the expression (2) The energy change calculation unit  15  outputs the calculated energy change value ΔE 0  to the state transition determination unit  16 . 
     The state transition determination unit  16  outputs a signal fIg 0  indicating the inversion availability of the own bit according to the energy change calculation by the energy change calculation unit  15  to the selection circuit unit  2 . Specifically, the state transition determination unit  16  is a comparator that receives the energy change value ΔE 0  calculated by the energy change calculation unit  15 , and determines the inversion availability of the own bit according to comparison of the energy change value ΔE 0  with the threshold generated by the threshold generation unit  3 . Here, the determination by the state transition determination unit  16  will be described. 
     In simulated annealing, it is known that, when an allowance probability p(ΔE, T) of a state transition that causes a certain energy change ΔE is determined as the expression (5) below, the state reaches an optimal solution (ground state) in the limit of the time (the number of iterations) infinity. 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     5 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     p 
                      
                     
                       ( 
                       
                         
                           Δ 
                            
                           
                               
                           
                            
                           E 
                         
                         , 
                         T 
                       
                       ) 
                     
                   
                   = 
                   
                     f 
                      
                     
                       ( 
                       
                         - 
                         
                           
                             Δ 
                              
                             
                                 
                             
                              
                             E 
                           
                           T 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   5 
                   ) 
                 
               
             
           
         
       
     
     In the expression (5), T is the temperature parameter T described above. Here, as a function f, the expression (6) (Metropolis method) or the expression 7 Gibbs method is used. 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     6 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     
                       f 
                       metro 
                     
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                   = 
                   
                     min 
                      
                     
                       ( 
                       
                         1 
                         , 
                         
                           e 
                           x 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   6 
                   ) 
                 
               
             
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     7 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     
                       f 
                       Gibbs 
                     
                      
                     
                       ( 
                       x 
                       ) 
                     
                   
                   = 
                   
                     1 
                     
                       1 
                       + 
                       
                         e 
                         
                           - 
                           x 
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   7 
                   ) 
                 
               
             
           
         
       
     
     The temperature parameter T is expressed by, for example, the expression (8). That is, the temperature parameter T is given by a function that logarithmically decreases with respect to the number of iterations t. For example, a constant c is determined according to the problem. 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     8 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   T 
                   = 
                   
                     
                       
                         T 
                         0 
                       
                        
                       
                         log 
                          
                         
                           ( 
                           c 
                           ) 
                         
                       
                     
                     
                       log 
                        
                       
                         ( 
                         
                           t 
                           + 
                           c 
                         
                         ) 
                       
                     
                   
                 
               
               
                 
                   ( 
                   8 
                   ) 
                 
               
             
           
         
       
     
     Here, T 0  is an initial temperature value, and is desirably a sufficiently large value depending on the problem. 
     In the case of using the allowance probability p(ΔE, T) expressed by the expression (5), when a state reaches a steady state after sufficient repetition of the state transition at a certain temperature, the state is generated according to the Boltzmann distribution. That is, an occupancy probability of each state follows the Boltzmann distribution for a thermal equilibrium state in thermodynamics. Therefore, by gradually decreasing the temperature in such a manner that the state following the Boltzmann distribution is generated at a certain temperature, and the state follow the Boltzmann distribution is generated at a temperature lower than the certain temperature, the state following the Boltzmann distribution at each temperature can be achieved. Then, when the temperature is 0, the lowest energy state (ground state) is achieved with a high probability by the Boltzmann distribution at the temperature 0. Since this state is very similar to a state change of when a material is annealed, this method is called simulated annealing. At this time, probabilistic occurrence of a state transition that increases energy corresponds to thermal excitation in physics. 
     For example, a circuit that outputs a flag (fIg=1) indicating allowance of the state transition that causes the energy change ΔE with the allowance probability p(ΔE, T) can be implemented by a comparator that outputs a value according to a comparison between f(−ΔE/T) and a uniform random number u taking a value in an interval [0, 1). 
     However, the same function can be implemented even when the following modification is made. Applying the same monotonically increasing function to two numbers does not change the magnitude relationship. Therefore, even when the same monotonically increasing function is applied to two inputs of the comparator, the output of the comparator does not change. For example, an inverse function f −1 (−ΔE/T) of f(−ΔE/T) can be used as the monotonically increasing function applied to f(−ΔE/T), and f l (u) in which −ΔE/T of f −1 (−ΔE/T) is u can be used as the monotonically increasing function applied to the uniform random number u. In that case, a circuit having a similar function to the above-described comparator may be a circuit that outputs 1 when −ΔE/T is larger than f −1 (u). Moreover, since the temperature parameter T is positive, the state transition determination unit  16  may be a circuit that outputs fIg 0 =1 when −ΔE is larger than T·f −1 (u) (or when ΔE is smaller than −(T·f −1 (u)). 
     The threshold generation unit  3  generates the uniform random number u and outputs the value of f −1 (u), using a conversion table for conversion to the value of f −1 (u) described above. When the Metropolis method is applied, f −1 (u) is given by the expression (9). Furthermore, when the Gibbs method is applied, f −1 (u) is given by the expression (10). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     9 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     
                       f 
                       metro 
                       
                         - 
                         1 
                       
                     
                      
                     
                       ( 
                       u 
                       ) 
                     
                   
                   = 
                   
                     log 
                      
                     
                       ( 
                       u 
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   9 
                   ) 
                 
               
             
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     10 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   
                     
                       f 
                       Gibbs 
                       
                         - 
                         1 
                       
                     
                      
                     
                       ( 
                       u 
                       ) 
                     
                   
                   = 
                   
                     log 
                      
                     
                       ( 
                       
                         u 
                         
                           1 
                           - 
                           u 
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   10 
                   ) 
                 
               
             
           
         
       
     
     The conversion table is stored in, for example, a memory such as a random access memory (RAM) or a flash memory (not illustrated) connected to the threshold generation unit  3 . The threshold generation unit  3  outputs a product (T·f −1 (u)) of the temperature parameter T and f −1 (u) as the threshold. Here, T·f −1 (u) corresponds to thermal excitation energy. 
     Note that, when the selection circuit unit  2  inputs fIg j  to the state transition determination unit  16  to indicate that fIg j  does not allow the state transition (that is, the state transition does not occur), the state transition determination unit  16  may perform comparison with the threshold after adding an offset value to −ΔE 0 . Furthermore, the state transition determination unit  16  may increase the offset value to be added in a case where non-occurrence of the state transition continues. Meanwhile, in a case where fIg 1  allows the state transition (that is, the state transition occurs), the state transition determination unit  16  sets the offset value to 0. The addition of the offset value to −ΔE 0  or the increase in the offset value enables the state transition to be more easily allowed. In the case where the current state is in a local solution, escape from the local solution is promoted. 
     In this way, the temperature parameter T is set to be gradually small, and the spin bit string in the case where, for example, the value of the temperature parameter T is set to be small by a predetermined number of times (or the temperature parameter T has reached the minimum value) is held in the bit operation circuit  1   a   1 , . . . , and  1   a K. The optimization device  1  outputs the spin bit string of the case where the value of the temperature parameter T is set to be small by a predetermined number of times (or the temperature parameter T has reached the minimum value) as the solution. 
     In the optimization device  1 , the above setting change unit  5  can change the number of spin bits (first number of bits) of the Ising model and the number of bits (second number of bits) of the weight coefficients between bits. Here, the number of spin bits corresponds to the scale of the circuit that implements the Ising model (the scale of the problem). The optimization device  1  can be applied to the combinatorial optimization problem having a larger number of combination candidates as the scale is larger. Furthermore, the number of bits of the weight coefficients corresponds to the precision of expression of the interrelationship between bits (precision of conditional expression in the problem). The conditions for the energy change ΔE at the time of spin inversion can be set in more details as the precision is higher. There are some cases where, in a problem, the number of spin bits is large and the number of bits representing the weight coefficients is small. Alternatively, in another problem, the number of spin bits is small and the number of bits representing the weight coefficients is large. Meanwhile, it is inefficient to individually manufacture the optimization device suitable for each problem according to the problem. 
     Therefore, the optimization device  1  enables the setting change unit  5  to set the number of spin bits representing the state of the Ising model and the number of bits of the weight coefficients, thereby making the scale and precision variable. As a result, the scale and precision that suits the problem can be implemented in one optimization device  1 . 
     More specifically, each of the bit operation circuits  1   a   1 , . . . ,  1   a K, . . . , and  1   a N includes the precision switching circuit, and switches, using the precision switching circuit, a bit length of the weight coefficient read from its own storage unit according to the setting by the setting change unit  5 . Furthermore, the selection circuit unit  2  inputs the signal indicating the inversion bit to the number (for example, K) bit operation circuits corresponding to the number of spin bits set by the setting change unit  5 , and selects the inversion bit from among the bits corresponding to the number (K) of bit operation circuits. Thereby, the Ising model can be implemented by one optimization device  1  with the scale and precision according to the problem even if the optimization device having the scale and precision according to the problem is not individually manufactured. 
     Here, as described above, the storage unit included in each of the bit operation circuits  1   a   1 , . . . , and  1   a N is implemented by a storage device having a relatively small capacity such as an SRAM. Therefore, the capacity of the storage unit may become insufficient depending on the number of bits of the weight coefficients when the number of spin bits increases. Meanwhile, according to the optimization device  1 , the scale and precision can be set to satisfy the limitation of the capacity of the storage unit by the setting change unit  5 . Specifically, it is conceivable that the setting change unit  5  decreases the number of bits of the weight coefficients as the number of spin bits increases. Furthermore, it is also conceivable that the setting change unit  5  decreases the number of spin bits as the number of bits of the weight coefficients increases. 
     Furthermore, in the above example, K bit operation circuits of the N bit operation circuits are used for the Ising model. The optimization device  1  may not use the remaining N−K bit operation circuits. In that case, the selection circuit unit  2  forcibly sets all the flags flg output by the remaining N−K bit operation circuits to 0 so that the bits corresponding to the remaining N−K bit operation circuits are not selected as candidates for inversion. 
     Alternatively, in a case where N−K≥K, the optimization device  1  may implement the same Ising model as the above-described Ising model, using the K bit operation circuits of the remaining N−K bit operation circuits, and increase the degree of parallelism of the same problem processing by both the Ising models to speed up the calculation. 
     Moreover, the optimization device  1  may implement another Ising model corresponding to another problem, using some of the remaining N−K bit operation circuits, and perform operation of the another problem in parallel with the problem represented by the above-described Ising model. 
     Hereinafter, an information processing system using the optimization device  1  will be illustrated, and the functions of the optimization device  1  will be described in more detail. 
     Second Embodiment 
     Next, a second embodiment will be described. 
       FIG. 2  is a diagram illustrating an example of an information processing system according to the second embodiment. 
     The information processing system of the second embodiment includes an information processing device  20  and a client  30 . The information processing device  20  and the client  30  are connected to a network  40 . The network  40  may be, for example, a local area network (LAN), a wide area network (WAN), the Internet, or the like. 
     The information processing device  20  provides a function to replace a combinatorial optimization problem with an Ising model and solve the combinatorial optimization problem at high speed by searching for a ground state of the Ising model. 
     The client  30  is a client computer used by a user, and is used for inputting a problem to be solved by the user to the information processing device  20 . 
       FIG. 3  is a block diagram illustrating a hardware example of the information processing device. 
     The information processing device  20  includes a central processing unit (CPU)  21 , a dynamic random access memory (DRAM)  22 , a storage device  23 , a network interface card (NIC)  24 , an optimization device  25 , and a medium reader  28 . 
     The CPU  21 , DRAM  22 , storage device  23 , NIC  24 , optimization device  25 , and medium reader  28  are connected to a bus  29  of the information processing device  20 . The bus  29  is, for example, a peripheral component interconnect express (PCIe) bus. 
     The CPU  21  is a processor that executes instructions of a program stored in the DRAM  22 . The CPU  21  loads the program and at least a part of data stored in the storage device  23  to the DRAM  22 , and executes the program. The CPU  21  controls settings and operations of the optimization device  25  by a function exhibited by executing the program. 
     The DRAM  22  is a main storage device of the information processing device  20 , and temporarily stores the program executed by the CPU  21  and data or the like set in the optimization device  25 . 
     The storage device  23  is an auxiliary storage device of the information processing device  20 , and stores the program executed by the CPU  21  and data or the like set in the optimization device  25 . The storage device  23  is, for example, a solid state drive (SSD), a hard disk drive (HDD), or the like. 
     The NIC  24  is a communication interface that is connected to the network  40  and communicates with the client  30  via the network  40 . The NIC  24  is connected to, for example, communication devices such as a switch and a router belonging to the network  40  via a cable. 
     The optimization device  25  searches for the ground state of the Ising model under the control of the CPU  21 . The optimization device  25  is, for example, a one-chip semiconductor integrated circuit, and is implemented by an FPGA or the like. The optimization device  25  is an example of the optimization device  1  according to the first embodiment. 
     The medium reader  28  is a reading device that reads a program or data recorded in a recording medium  41 . As the recording medium  41 , for example, a magnetic disk, an optical disk, a magneto-optical (MO) disk, a semiconductor memory, or the like may be used. The magnetic disk includes a flexible disk (FD) and an HDD. The optical disc includes a compact disc (CD) and a digital versatile disc (DVD). 
     The medium reader  28  copies the program and data read from the recording medium  41  to another recording medium such as the DRAM  22  or the storage device  23 , for example. The read program is executed by the CPU  21 , for example. Note that the recording medium  41  may be a portable recording medium, and may be used for distribution of the program and data. 
     Furthermore, the recording medium  41  and the storage device  23  may be sometimes referred to as computer-readable recording media. 
     Note that the client  30  includes a CPU, a main storage device, an auxiliary storage device, a NIC, an input device such as a mouse and a keyboard, and a display. 
       FIG. 4  is a diagram illustrating an example of a relationship of hardware in the information processing system. 
     The client  30  executes a user program  31 . The user program  31  inputs various data (for example, operating conditions such as content of a problem to be solved and a use schedule of the optimization device  25 ) to the information processing device  20 , and displays an operation result by the optimization device  25 . The client  30  and the NIC  24  implement an input unit that inputs various data to the information processing device  20  and a display unit that notifies a solution obtained as a result of a ground state search as it is or displays result information easy to understand by the user (for example, information of a display screen on which the result is visualized as a graph). 
     The CPU  21  is a processor (operation unit) that executes a library  21   a  and a driver  21   b . A program of the library  21   a  and a program of the driver  21   b  are stored in the storage device  23  and are loaded into the DRAM  22  when executed by the CPU  21 . 
     The library  21   a  receives various data input by the user program  31  and converts the problem to be solved by the user into a problem for searching for the lowest energy state of the Ising model. The library  21   a  provides the driver  21   b  with information regarding the converted problem (for example, the number of spin bits, the number of bits representing weight coefficients, values of the weight coefficients, an initial value of a temperature parameter, and the like). Furthermore, the library  21   a  acquires the search result of the solution by the optimization device  25  from the driver  21   b , converts the search result into the result information easy to understand by the user, and provides the search result to the user program  31 . 
     The driver  21   b  supplies the information provided by the library  21   a  to the optimization device  25 . Furthermore, the driver  21   b  acquires the search result of the solution by the Ising model from the optimization device  25  and provides the search result to the library  21   a.    
     The optimization device  25  includes a control unit  25   a  and a local field block (LFB)  50  as hardware. 
     The control unit  25   a  includes a RAM for storing an operating condition of the LFB  50  received from the driver  21   b , and controls the operation by the LFB  50  on the basis of the operating condition. Furthermore, the control unit  25   a  sets initial values in various registers provided in the LFB  50 , stores the weight coefficients in the SRAM, and reads a spin bit string (search result) after the operation is completed, for example. The control unit  25   a  is implemented by, for example, a circuit or the like in an FPGA. 
     The LFB  50  includes a plurality of local field elements (LFEs). The LFE is a unit element corresponding to a spin bit. One LFE corresponds to one spin bit. As will be described below, the optimization device  25  may include a plurality of LFBs. 
       FIG. 5  is a block diagram illustrating a hardware example of the control unit. 
     The control unit  25   a  includes a CPU input/output unit  25   a   1 , a control register  25   a   2 , an LFB transmission unit  25   a   3 , and an LFB reception unit  25   a   4 . 
     The CPU input/output unit  25   a   1  inputs the data received from the CPU  21  to the control register  25   a   2  or the LFB  50 . For example, the CPU input/output unit  25   a   1  can input setting data such as scale and precision, initial values of parameters, and a coupling constant input by the CPU  21 , and the operating condition data of the LFB  50  to the LFB  50  via the control register  25   a   2 , and can input such data to each register or RAM in the LFB  50 . 
     The control register  25   a   2  holds the various setting data for the LFB  50  by the CPU input/output unit  25   a   1  and outputs the setting data to the LFB transmission unit  25   a   3 . Furthermore, the control register  25   a   2  holds the data received from the LFB  50  by the LFB reception unit  25   a   4  and outputs the data to the CPU input/output unit  25   a   1 . 
     The LFB transmission unit  25   a   3  transmits the setting data held in the control register  25   a   2  to the LFB  50 . 
     The LFB reception unit  25   a   4  receives the data (such as the operation result) from the LFB  50  and stores the data in the control register  25   a   2 . 
       FIG. 6  is a diagram illustrating an example of the combinatorial optimization problem. 
     As an example of the combinatorial optimization problem, consider a traveling salesman problem. Here, for the sake of simplicity, it is assumed to find a route to go around five cities of A city, B city, C city, D city, and E city at the lowest cost (distance, fee, or the like). Graph  201  illustrates one route having the cities as nodes and movements between the cities as edges. This route is expressed by, for example, a matrix  202  in which rows correspond to the order to go around, and columns corresponds to the cities. The matrix  202  indicates that a salesman moves to the city to which the bit “1” is set in ascending order of rows. Moreover, the matrix  202  can be converted to a binary value  203  corresponding to a spin bit string. In the example of the matrix  202 , the binary value  203  is 5×5=25 bits. The number of bits of the binary value  203  (spin bit string) increases as the number of cities to travel increases. That is, as the scale of the combinatorial optimization problem increases, more spin bits are required, and the number of bits (scale) of the spin bit string increases. 
     Next, a search example for a binary value that is the minimum energy. 
       FIG. 7  is a diagram illustrating a search example for a binary value that is minimum energy. 
     First, the energy before inverting one bit (before spin inversion) of a binary value  221  is E init . 
     The optimization device  25  calculates an energy change amount ΔE when inverting any one bit of the binary value  221 . Graph  211  illustrates the energy change with respect to one-bit inversion according to an energy function, where the horizontal axis represents the binary value and the vertical axis represents the energy. The optimization device  25  obtains ΔE by the expression (2). 
     The optimization device  25  applies the above calculation to all the bits of the binary value  221 , and calculates the energy change amount ΔE for the inversion of each of the bits. For example, when the number of bits of the binary value  221  is N, the number of inversion patterns  222  is N. Graph  212  illustrates a state of the energy change for each inversion pattern. 
     The optimization device  25  randomly selects one of the inversion patterns  222  that satisfy an inversion condition (a predetermined determination condition between a threshold and ΔE) on the basis of ΔE for each inversion pattern. The optimization device  25  adds/subtracts DE corresponding to the selected inversion pattern to/from E init  before spin inversion to calculate the energy value E after spin inversion. The optimization device repeats the above procedure using the obtained energy value E as E init  and the binary value  223  after spin inversion. 
     Here, as described above, one element of W used in the expressions (2) and (3) is a spin inversion weight coefficient indicating the magnitude of an interaction between bits. The number of bits representing the weight coefficient is called precision. The conditions for the energy change amount E at the time of spin inversion can be set in more details as the precision is higher. For example, the total size of W is “the precision x the number of spin bits x the number of spin bits” for all of couplings of two bits contained in the spin bit string. As an example, in the case where the number of spin bits is 8 k (=8192), the total size of W is “precision×8 k×8 k” bits. 
     Next, a circuit configuration of the optimization device  25  that performs the search illustrated in  FIG. 7  will be described. 
       FIG. 8  is a diagram illustrating a circuit configuration example of the optimization device. 
     The optimization device  25  (or the LFB  50  of the optimization device  25 ) includes LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an , a random selector unit  52 , a threshold generation unit  53 , a random number generation unit  54 , a mode setting register  55 , an adder  56 , and an E storage register  57 . 
     Each of the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an  is used as one bit of the spin bit. n is an integer of 2 or larger and represents the number of LFEs included in the LFB  50 . Identification information (index) of the LFE is associated with each of the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . The index=0, 1, . . . , or n−1 for each of the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . The LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an  are examples of the bit operation circuits  1   a   1 , . . . , and  1   a N in the first embodiment. 
     Hereinafter, the circuit configuration of the LFE  51   a   1  will be described. The LFEs  51   a   2 , . . . , and  51   an  are also implemented with a circuit configuration similar to the LFE  51   a   1 . Regarding description of the circuit configurations of the LFEs  51   a   2 , . . . , and  51   an , the “a 1 ” part at the end of the reference sign of each of the element in the following description is replaced with “a 2 ”, . . . , and “an” (for example, the reference sign of “ 60   a   1 ” is replaced with “ 60   an ”), respectively. Furthermore, the subscripts of each of the values such as h, q, ΔE, and W may be replaced with subscripts corresponding to “a 2 ”, . . . , and “an”, respectively. 
     The LFE  51   a   1  includes an SRAM  60   a   1 , a precision switching circuit  61   a   1 , a Δh generation unit  62   a   1 , an adder  63   a   1 , an h storage register  64   a   1 , an inversion determination unit  65   a   1 , a bit storage register  66   a   1 , a ΔE generation unit  67   a   1 , and a determination unit  68   a   1 . 
     The SRAM  60   a   1  stores the weight coefficients W. The SRAM  60   a   1  corresponds to the storage unit  11  of the first embodiment. The SRAM  60   a   1  stores only the weight coefficients W used by the LFE  51   a   1 , of all the weight coefficients W of all the spin bits. Therefore, when the number of spin bits is K (K is an integer of 2 or larger and n or smaller), the size of all the weight coefficients stored in the SRAM  60   a   1  is “precision×K” bits.  FIG. 8  illustrates the case where the number of spin bits K=n as an example. In this case, the weight coefficients W 00 , W 01 , . . . , and W 0,n-1  are stored in the SRAM  60   a   1 . 
     The precision switching circuit  61   a   1  acquires the index that is identification information of an inversion bit and a flag F indicating inversion available from the random selector unit  52 , and extracts the weight coefficient corresponding to the inversion bit from the SRAM  60   a   1 . The precision switching circuit  61   a   1  outputs the extracted weight coefficient to the Δh generation unit  62   a   1 . For example, the precision switching circuit  61   a   1  may acquire the index and the flag F stored in the SRAM  60   a   1  by the random selector unit  52  from the SRAM  60   a   1 . Alternatively, the precision switching circuit  61   a   1  may have a signal line that receives supply of the index and the flag F from the random selector unit  52  (not illustrated). 
     Here, the precision switching circuit  61   a   1  receives the setting of the number of bits (precision) of the weight coefficients set in the mode setting register  55 , and switches the number of bits of the weight coefficients read from the SRAM  60   a   1  according to the setting. 
     Specifically, the precision switching circuit  61   a   1  includes a selector for reading a bit string (unit bit string) having a predetermined number of unit bits from the SRAM  60   a   1 . The precision switching circuit  61   a   1  reads the unit bit string of the number of bits r including the weight coefficient corresponding to the inversion bit by the selector. For example, in a case where the number of unit bits r read by the selector is larger than the number of bits z of the weight coefficient, the precision switching circuit  12  reads the weight coefficients by shifting the bit portion indicating the weight coefficient corresponding to the inversion bit toward a least significant bit (LSB) side and substituting 0 for the other bit portions with respect to the read bit string. Alternatively, the number of unit bits r may be smaller than the number of bits z set by the mode setting register  55 . In this case, the precision switching circuit  61   a   1  may extract the weight coefficients at the set number of bits z by coupling a plurality of unit bit strings read by the selector. 
     Note that the precision switching circuit  61   a   1  is also connected to the SRAM  60   a   2  included in the LFE  51   a   2 . As will be described below, the precision switching circuit  61   a   1  can also read the weight coefficients from the SRAM  60   a   2 . 
     The Δh generation unit  62   a   1  receives the current bit value of the inversion bit (bit value before the inversion this time) from the random selector unit  52 , and calculates a change amount Δh 0  of a local field h 0  by the expression (4) using the weight coefficients acquired from the precision switching circuit  61   a   1 . The Δh generation unit  62   a   1  outputs h 0  to the adder  63   a   1 . 
     The adder  63   a   1  adds Δh 0  to the local field h 0  stored in the h storage register  64   a   1  and outputs the local field h 0  to the h storage register  64   a   1 . 
     The h storage register  64   a   1  takes in the value (the local field h 0 ) output by the adder  63   a  in synchronization with a clock signal (not illustrated). The h storage register  64   a   1  is, for example, a flip-flop. Note that an initial value of the local field h 0  stored in the h storage register  64   a   1  is a bias coefficient b 0 . The initial value is set by the control unit  25   a.    
     The inversion determination unit  65   a   1  receives the index=j of the inversion bit and the flag F j  indicating the inversion availability from the random selector unit  52 , and determines whether the own bit has been selected as the inversion bit. In a case where the own bit has been selected as the inversion bit, the inversion determination unit  65   a   1  inverts the spin bit stored in the bit storage register  66   a   1 . 
     The bit storage register  66   a   1  holds the spin bit corresponding to the LFE  51   a   1 . The bit storage register  66   a   1  is, for example, a flip-flop. The spin bit stored in the bit storage register  66   a   1  is inverted by the inversion determination unit  65   a   1 . The bit storage register  66   a   1  outputs spin bit to the ΔE generation unit  67   a   1  and the random selector unit  52 . 
     The ΔE generation unit  67   a   1  calculates an energy change amount ΔE 0  of the Ising model according to the inversion of the own bit by the expression (2) on the basis of the local field h 0  of the h storage register  64   a   1  and the spin bit of the bit storage register  66   a   1 . The ΔE generation unit  67   a   1  outputs the energy change amount ΔE 0  to the determination unit  68   a   1  and the random selector unit  52 . 
     The determination unit  68   a   1  outputs a flag F 0  indicating whether to allow the inversion of the own bit (indicating the inversion availability of the own bit) to the random selector unit  52  by comparing the energy change amount ΔE 0  output by the DE generation unit  67   a   1  and the threshold generated by the threshold generation unit  53 . Specifically, the determination unit  68   a   1  outputs F 0 =1(inversion available) when ΔE 0  is smaller than the threshold value −(T·f −1 (u)), and outputs F 0 =0 (inversion unavailable) when M 0  is equal to or larger than the threshold value −(T·f −1 (u)). Here, f −1 (u) is a function given in either the expression (9) or (10) according to an applicable law. Furthermore, u is a uniform random number in the interval [0,1). 
     The random selector unit  52  receives the energy change amount, the flag indicating the inversion availability of the spin bit, and the spin bit from each of the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an , and selects the bit to be inverted (inversion bit) from among the inversion-available spin bits. 
     The random selector unit  52  supplies the current bit value (bit q j ) of the selected inversion bit to the Δh generation units  62   a   1 ,  62   a   2 , . . . , and  62   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . The random selector unit  52  is an example of the selection circuit unit  2  of the first embodiment. 
     The random selector unit  52  outputs the index=j of the inversion bit and the flag F j  indicating the inversion availability to the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . Note that, as described above, the random selector unit  52  may output the index=j of the inversion bit and the flag F j  indicating the inversion availability to the precision switching circuits  61   a   1 ,  61   a   2 , . . . , and  61   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an.    
     Furthermore, the random selector unit  52  supplies the index=j of the inversion bit and the flag F j  indicating the inversion availability to the inversion determination units  65   a   1 ,  65   a   2 , . . . , and  65   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an.    
     Moreover, the random selector unit  52  supplies ΔE j  corresponding to the selected inversion bit to the adder  56 . 
     Here, the random selector unit  52  receives the setting of the number of spin bits (that is, the number of LFEs to be used) in a certain Ising model from the mode setting register  55 . For example, the random selector unit  52  enables a search for solution, using a number of LFEs corresponding to the set number of spin bits in order from the smallest index. For example, in a case of using K LFEs of n LFEs, the random selector unit  52  selects the inversion bit from the spin bit string corresponding to the LFEs of the LFEs  51   a   1 , . . . , and  51   a K. At this time, it is conceivable that, for example, the random selector unit  52  forcibly sets the flag F output from each of the unused n−K LFEs  51   a (K−1), . . . , and  51   an  to 0. 
     The threshold generation unit  53  generates and supplies the threshold to be used for comparison with the energy change amount ΔE to the determination units  68   a   1 ,  68   a   2 , . . . , and  68   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . As described above, the threshold generation unit  53  generates the threshold using the temperature parameter T, the uniform random number u in the interval [0,1), and f −1 (u) illustrated in the expression (9) or (10). The threshold generation unit  53  individually includes a random number generation unit for each LIFE, for example, and generates the threshold using the random number u for each LFE. Note that the random number generation unit may be shared by some LFEs. The initial value of the temperature parameter T and a decrease cycle, a decrease amount of the temperature parameter T in the simulated annealing, and the like are controlled by the control unit  25   a.    
     The random number generation unit  54  generates a random number bit to be used for selecting the inversion bit in the random selector unit  52 , and supplies the random number bit to the random selector unit  52 . 
     The mode setting register  55  supplies a signal indicating the number of bits of the weight coefficients (that is, precision) to the precision switching circuits  61   a   1 ,  61   a   2 , and  61   an  included in the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an . Furthermore, the mode setting register  55  supplies a signal indicating the number of spin bits (that is, scale) to the random selector unit  52 . The control unit  25   a  sets the number of spin bits and the number of bits of the weight coefficients for the mode setting register  55 . The mode setting register  55  is an example of the setting change unit  5  of the first embodiment. 
     The adder  56  adds the energy change amount ΔE j  output by the random selector unit  52  to the energy value E stored in the E storage register  57 , and outputs the energy value E to the E storage register  57 . 
     The E storage register  57  takes in the energy value E output by the adder  56  in synchronization with a dock signal (not illustrated). The E storage register  57  is, for example, a flip-flop. Note that the initial value of the energy value E is calculated by the control unit  25   a  using the expression (1) and set in the E storage register  57 . 
     For example, in the case of using K LFEs for searching for a solution, the control unit  25   a  obtains the spin bit string by reading each spin bit of the bit storage registers  66   a   1 , . . . , and  66   a K. 
       FIG. 9  is a diagram illustrating a circuit configuration example of the random selector unit. 
     The random selector unit  52  includes a flag control unit  52   a  and a plurality of selection circuits connected in a tree shape over a plurality of stages. 
     The flag control unit  52   a  controls the value of the flag input to each of the selection circuits  52   a   1 ,  52   a   2 ,  52   a   3 ,  52   a   4 , . . . , and  52   aq  in the first stage according to the setting of the number of spin bits of the mode setting register  55 .  FIG. 9  illustrates a partial circuit  52   xn  that controls the value of the flag for one input of the selection circuit  52   aq  (corresponding to the output of the LFE  51   an ). A flag setting unit  52   yn  of the partial circuit  52   xn  is a switch for forcibly setting a flag Fn output from the unused LFE  51   an  to 0. 
     Two sets of variables q i , F i , and ΔE i  output by two of the LFEs  51   a   1 ,  51   a   2 , . . . , and  51   an  are input to each of the selection circuits  52   a   1 ,  52   a   2 ,  52   a   3 ,  52   a   4 , . . . , and  52   aq  in the first stage. For example, a set of variables q 0 , F 0 , and ΔE 0  output by the LFE  51   a   1  and a set of variables q 1 , F 1 , and ΔE 1  output by the LFE  51   a   2  are input to the selection circuit  52   a   1 . Furthermore, a set of variables q 2 , F 2 , and ΔE 2  and a set of variables q 3 , F 3 , and ΔE 3  are input to the selection circuit  52   a   2 , and a set of variables q 4 , F 4 , and ΔE 4  and a set of variables q 5 , F 5 , and ΔE 5  are input to the selection circuit  52   a   3 . Moreover, a set of variables q 6 , F 6 , and ΔE 6  and a set of variables q 7 , F 7 , and ΔE 7  are input to the selection circuit  52   a   4 , and a set of variables q n-2 , F n-2 , and ΔE n-2 , and a set of variables q i , F i , and ΔE n-1  are input to the selection circuit  52   aq.    
     Then, each of the selection circuits  52   a   1 , . . . , and  52   aq  has one set of variables q i , F i , and ΔE i  on the basis of the input two sets of variables q i , F i , and ΔE i , and the 1-bit random number output by the random number generation unit  54 . At this time, each of the selection circuits  52   a   1 , . . . , and  52   aq  preferentially selects the set having F i  of 1, or selects any one set on the basis of the 1-bit random number in a case where both the sets have F i  of 1 (which similarly applies to the other selection circuits). Here, the random number generation unit  54  individually generates the 1-bit random number for each selection circuit and supplies the 1-bit random number to each selection circuit. Furthermore, each of the selection circuits  52   a   1 , . . . , and  52   aq  generates a 1-bit identification value indicating which set of variables q i , F i , and ΔE i  is selected, and outputs a signal (called state signal) including the selected variables q i , F i , and ΔE i  and the identification value. Note that the number of selection circuits  52   a   1  to  52   aq  in the first stage is ½ of the number of the LFEs  51   a   1 , . . . , and  51   an , that is, n/2. 
     Two state signals output by the selection circuits  52   a   1 , . . . , and  52   aq  are input to each of the selection circuits  52   b   1 ,  52   b   2 , . . . , and  52   br  in the second stage. For example, the state signals output by the selection circuits  52   a   1  and  52   a   2  are input to the selection circuit  52   b   1 , and the state signals output by the selection circuits  52   a   3  and  52   a   4  are input to the selection circuit  52   b   2 . 
     Then, each of the selection circuits  52   b   1 , . . . , and  52   br  selects one of the two state signals on the basis of the two state signals and the 1-bit random number output by the random number generation unit  54 . 
     Furthermore, each of the selection circuits  52   b   1 , . . . , and  52   br  updates the identification value included in the selected state signal by adding one bit to indicate which state signal has been selected, and outputs the selected state signal. 
     Similar processing is performed in the selection circuits in the third and subsequent stages. The bit width of the identification value is increased by one bit in the selection circuit at each stage. The selection circuit  52   p  in the last stage outputs a state signal that is the output of the random selector unit  52 . The identification value included in the state signal output by the random selector unit  52  is an index indicating the inversion bit expressed by a binary number. 
     Note that the random selector unit  52  may output the index corresponding to the inversion bit by receiving, from each LFE, the index corresponding to the LFE together with the flag F, and selecting the index using each selection circuit, similarly to the variables q i , F i , and ΔE i . In this case, each LFE includes a register for storing the index, and outputs the index from the register to the random selector unit  52 . 
     In this way, the random selector unit  52  forcibly sets the signals indicating the inversion availability output by the LFEs  51   a (K+1), . . . , and  51   an  other than the LFEs  51   a   1 , . . . , and  51   a K of the set number of spin bits K to be inversion unavailable, of the LFEs  51   a   1 , . . . , and  51   an . The random selector unit  52  selects the inversion bit on the basis of the signals indicating the inversion availability output by the LFEs  51   a   1 , . . . , and  51   a K and the signals indicating inversion unavailable set for the LFEs  51   a (K+1), . . . , and  51   an . The random selector unit  52  outputs the signal indicating the inversion bit to the LFEs  51   a  (K+1), . . . ,  51   an  in addition to the LFEs  51   a   1 , . . . , and  51   a K. 
     In this way, the flag F of the unused LFE is forcibly set to 0 by the control of the flag control unit  52   a , so that the bit corresponding to the LFE not used in the spin bit string can be excluded from the inversion candidates. 
     Next, a storage example of the weight coefficient for each of the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  of the LFEs  51   a   1 , . . . , and  51   an  will be described. First, a trade-off relationship between the scale and precision with respect to an SRAM capacity will be described. 
       FIG. 10  is a diagram illustrating an example of the trade-off relationship between the scale and precision. 
     As described above, an example of the combinatorial optimization problem is the traveling salesman problem. The traveling salesman problem is a problem of low precision when the number of cities to travel is large and the number of traveling conditions (travel time, travel distance, travel cost, and the like) is small, and requires high precision when the number of traveling conditions is large. In addition, examples of an optimization problem with relatively low precision include problems with certain conditions such as eight queens problems and four-color problems. Meanwhile, portfolio optimization problems require high precision because there are many conditions such as amount of money and period. 
     When the SRAM capacity for each LFE is limited, there is a trade-off relationship between the scale and precision. Graph  300  illustrates a trade-off relationship between the scale and precision in a case where an upper limit of the capacity for storing the weight coefficients in the SRAM for each LFE is 128 k (kilo) bits. Here, 1 k (kilo)=1024. The horizontal axis of the graph  300  represents the scale (k bits), and the vertical axis represents the precision (bits). Note that, as an example, it is assumed that n=8192. 
     In this case, the maximum precision is 128 bits for 1-kbit scale. Furthermore, the maximum precision is 64 bits for 2-kbit scale. The maximum precision is 32 bits for 4-kbit scale. The maximum precision is 16 bits for 8-kbit scale. 
     Therefore, in the optimization device  25 , for example, the following four modes are made available. The first mode is a 1-kbit scale/128-bit precision mode. The second mode is a 2-kbit scale/64-bit precision mode. The third mode is a 4-kbit scale/32-bit precision mode. The fourth mode is an 8-kbit scale/16-bit precision mode. Next, a storage example of the weight coefficient corresponding to each of the four modes will be described. The weight coefficient is stored in each of the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  by the control unit  25   a . Note that the number of unit bits read from the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  by each selector of the precision switching circuits  61   a   1 ,  61   a   2 , . . . , and  61   an  is assumed to be 128 bits as an example. 
       FIG. 11  is a diagram illustrating a storage example of weight coefficients (No. 1). 
     In the case of using the above-described first mode (1-kbit scale/128-bit precision), the weight coefficients W are expressed by the expression (11). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     11 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   W 
                   = 
                   
                     ( 
                     
                       
                         
                           
                             W 
                             
                               0 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               0 
                               , 
                               1023 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                         
                           ⋱ 
                         
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             W 
                             
                               1023 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               1023 
                               , 
                               1023 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                   ( 
                   11 
                   ) 
                 
               
             
           
         
       
     
     Data  1   d   1 ,  1   d   2 , . . . , and ids are storage examples of the weight coefficients for the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   as  in the case of using the above-described first mode (1-kbit scale/128-bit precision). Here, s=1024. The data  1   d   1 ,  1   d   2 , . . . , and ids are stored in the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   as , respectively. In this mode, 1 k (=1024) LFEs are used. Note that, in  FIG. 11 , the LFEs  51   a   1 , . . . , and  51   as  may be expressed as LFE 0 , . . . , and LFE 1023  using the respective identification numbers (which similarly applies to the following drawings). 
     The data  1   d   1  indicates W 0,0  to W 0,1023  stored in the SRAM  60   a   1  of the LFE  51   a   1  (LFE 0 ). The data  1   d   2  indicates W 1,0  to W 1,1023  stored in the SRAM  60   a   2  of the LFE  51   a   2  (LFE 1 ). The data  1   ds  indicates W 1023,0  to W 1023,1023  stored in the SRAM  6   as  of the LFE  51   as  (LFE 1023 ). The number of bits of one weight coefficient W ij  is 128 bits. 
       FIG. 12  is a diagram illustrating a storage example of weight coefficients (No. 2). 
     In the case of using the above-described second mode (2-kbit scale/64-bit precision), the weight coefficients W are expressed by the expression (12). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     12 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   W 
                   = 
                   
                     ( 
                     
                       
                         
                           
                             W 
                             
                               0 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               0 
                               , 
                               2047 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                         
                           ⋱ 
                         
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             W 
                             
                               2047 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               2047 
                               , 
                               2047 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                   ( 
                   12 
                   ) 
                 
               
             
           
         
       
     
     Data  2   d   1 ,  2   d   2 , . . . , and  2   dt  are storage examples of the weight coefficients for the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   at  in the case of using the above-described second mode (2-kbit scale/64-bit precision). Here, t=2048. The data  2   d   1 ,  2   d   2 , . . . , and  2   dt  are stored in the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   at , respectively. In this mode, 2 k (=2048) LFEs are used. 
     The data  2   d   1  indicates W 0,0  to W 0,2047  stored in the SRAM  60   a   1  of the LFE  51   a   1  (LFE 0 ). The data  2   d   2  indicates W 1,0  to W 1,2047  stored in the SRAM  60   a   2  of the LFE  51   a   2  (LFE 1 ). The data  2   dt  indicates W 2047,0  to W 2047,2047  stored in the SRAM  60   at  of the LFE  51   at  (LFE 2047 ). The number of bits of one weight coefficient W ij  is 64 bits. 
       FIG. 13  is a diagram illustrating a storage example of weight coefficients (No. 3). 
     In the case of using the above-described third mode (4-kbit scale/32-bit precision), the weight coefficients W are expressed by the expression (13). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     13 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   W 
                   = 
                   
                     ( 
                     
                       
                         
                           
                             W 
                             
                               0 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               0 
                               , 
                               4095 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                         
                           ⋱ 
                         
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             W 
                             
                               4095 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               4095 
                               , 
                               4095 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                   ( 
                   13 
                   ) 
                 
               
             
           
         
       
     
     Data  3   d   1 ,  3   d   2 , . . . , and  3   du  are storage examples of the weight coefficients for the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   au  in the case of using the above-described third mode (4-kbit scale/32-bit precision). Here, u=4096. The data  3   d   1 ,  3   d   2 , . . . , and  3   du  are stored in the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   au , respectively. In this mode, 4 k (=4096) LFEs are used. 
     The data  3   d   1  indicates W 0,0  to W 0,4095  stored in the SRAM  60   a   1  of the LFE  51   a   1  (LFE 0 ). The data  3   d   2  indicates W 1,0  to W 1,4095  stored in the SRAM  60   a   2  of the LFE  51   a   2  (LFE 1 ). The data  3   du  indicates W 4095,0  to W 4095,4095  stored in the SRAM  60   au  of the LFE  51   au  (LFE 4095 ). The number of bits of one weight coefficient W ij  is 32 bits. 
       FIG. 14  is a diagram illustrating a storage example of weight coefficients (No. 4). 
     In the case of using the above-described fourth mode (8-kbit scale/16-bit precision), the weight coefficients W are expressed by the expression (14). 
     
       
         
           
             
               
                 
                   [ 
                   
                     Math 
                     . 
                     
                         
                     
                      
                     14 
                   
                   ] 
                 
               
               
                 
                     
                 
               
             
             
               
                 
                   W 
                   = 
                   
                     ( 
                     
                       
                         
                           
                             W 
                             
                               0 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               0 
                               , 
                               8191 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                         
                           ⋱ 
                         
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             W 
                             
                               8191 
                               , 
                               0 
                             
                           
                         
                         
                           … 
                         
                         
                           
                             W 
                             
                               8191 
                               , 
                               8191 
                             
                           
                         
                       
                     
                     ) 
                   
                 
               
               
                 
                   ( 
                   14 
                   ) 
                 
               
             
           
         
       
     
     Data  4   d   1 ,  4   d   2 , . . . , and  4   dn  are storage examples of the weight coefficients for the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  in the case of using the above-described fourth mode (8-kbit scale/16-bit precision). Here, n=8192. The data  4   d   1 ,  4   d   2 , . . . , and  4   dn  are stored in the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an , respectively. In this mode, 8 k (=8192) LFEs are used. 
     The data  4   d   1  indicates W 0,0  to W 0,8191  stored in the SRAM  60   a   1  of the LFE  51   a   1  (LFE 0 ). The data  4   d   2  indicates W 1,0  to W 1,8191  stored in the SRAM  60   a   2  of the LFE  51   a   2  (LFE 1 ). The data  4   dn  indicates W 8191,0  to W 8191,8191  stored in the SRAM  60   an  of the LFE  51   an  (LFE 8191 ). The number of bits of one weight coefficient W ij  is 16 bits. 
     Next, a processing procedure of the optimization device  25  will be described. First, an example of initialization processing of the optimization device  25  will be described. 
       FIG. 15  is a flowchart illustrating an example of the initialization processing. 
     (S 10 ) The CPU  21  inputs the initial values and operating conditions according to the problem to the optimization device  25 . The initial values include, for example, the energy value E, the local field h i , the spin bit q i , the initial value of the temperature parameter T, the weight coefficients W, and the like. Furthermore, the operating conditions include the number of update times N1 of the state with one temperature parameter, the number of change times N2 of the temperature parameter, a range of reduction of the temperature parameter, and the like. The control unit  25   a  sets the input initial values and the weight coefficients in the registers and SRAMs of each LFE described above. Note that, in a case where there is an unused LFE, the control unit  25   a  sets 0 as W in the SRAM of each LFE, for example. The weight coefficient W between spin bits is expressed by the number of bits corresponding to the predsion according to the problem. 
     (S 11 ) The CPU  21  inputs the number of spin bits (scale) and the number of bits of the weight coefficients (predsion) according to the problem to the optimization device  25 . The control unit  25   a  receives the number of spin bits and the number of bits of the weight coefficients from the CPU  21  and inputs them to the mode setting register  55 . The number of bits of the weight coefficients input to the mode setting register  55  is input to the precision switching circuits of each LFE. Furthermore, the number of spin bits input to the mode setting register  55  is input to the random selector unit  52 . 
     (S 12 ) The CPU  21  inputs an operation start flag (for example, an operation start flag=1) to the optimization device  25 . The control unit  25   a  receives the input of the operation start flag and starts the operation by the LFB  50 . In this way, the initialization processing is completed. 
       FIG. 16  is a flowchart illustrating an example of operation processing. 
     Here, in the description of  FIG. 16 , the LFE corresponding to the index=i is described as LFE  51   ax  (the first LFE is LFE  51   a   1  and the n-th LFE is LFE  51   an ). Each part included in the LFE  51   ax  is also described as, for example, SRAM  60   ax  by adding “x” to the end of the reference sign, for example. The operations by each of the LFEs  51   a   1 , . . . , and  51   an  are executed in parallel. 
     (S 20 ) The ΔE generation unit  67   ax  generates the energy change amount ΔE i  in the case of inverting the bit q i  on the basis of the local field h i  stored in the h storage register  64   ax  and the bit q i  stored in the bit storage register  66   ax . The expression (2) is used to generate ΔE i . 
     (S 21 ) The determination unit  68   ax  compares the energy change amount ΔE generated by the ΔE generation unit  67   ax  with the threshold value (=−(T·f −1 (u))) generated by the threshold generation unit  53 , and determines whether the threshold &gt;ΔE i . In the case where the threshold &gt;ΔE i , the processing proceeds to step S 22 . In the case where the threshold ≤ΔE i , the processing proceeds to step S 23 . 
     (S 22 ) The determination unit  68   ax  outputs an inversion candidate signal (F i =1) to the random selector unit  52 . Then, the processing proceeds to step S 24 . 
     (S 23 ) The determination unit  68   ax  outputs a non-inversion signal (F i =0) to the random selector unit  52 . Then, the processing proceeds to step S 24 . 
     (S 24 ) The random selector unit  52  selects one inversion bit from among all the inversion candidates (bits corresponding to the LFE with F i =1) output respectively from the LFEs  51   a   1 , . . . , and  51   an . The random selector unit  52  outputs the index=j, F j , and q j  corresponding to the selected inversion bit to the LFEs  51   a   1 , . . . , and  51   an . Furthermore, the random selector unit  52  outputs ΔE j  corresponding to the selected inversion bit to the adder  56 . Then, next steps S 25  (energy update processing) and S 26  (state update processing) are started in parallel. 
     (S 25 ) The adder  56  adds the energy change amount ΔE corresponding to the inversion bit to the energy value E to update the energy value E stored in the E storage register  57 . That is, E=E+ΔE. Then, the energy update processing is completed. 
     (S 26 ) The precision switching circuit  61   ax  acquires the index=j and the flag F j  corresponding to the inversion bit, and reads the unit bit string including the weight coefficient corresponding to the inversion bit from the SRAM  60   ax . The unit bit string is the unit of the bit string read from SRAM  60   ax  at a time by the selector of the precision switching circuit  61   ax . The number of bits in the unit bit string (the number of unit bits) is 128 bits as one example (another value may be used). In this case, in step S 26 , the 128-bit unit bit string is read from the SRAM  60   ax.    
     For example, in the case where 128/a (a=1, 2, 4, or 8) bits are selected as the precision, the precision switching circuit  61   ax  reads the (Integer(j/a))-th unit bit string counted from the beginning (0-th) unit bit string of the SRAM  60   ax . Here, Integer (/a) is a function that extracts an integer part from the value of W/a). 
     (S 27 ) The precision switching circuit  61   ax  extracts the weight coefficient W ij  (weight coefficient corresponding to the inversion bit q j ) of a number of bits according to the mode selection set by the mode setting register  55  from the unit bit string read in step S 26 . For example, in the case of extracting a z-bit bit string from the 128-bit unit bit string, the precision switching circuit  61   ax  extracts z-bit weight coefficients by shifting a z-bit bit range corresponding to the inversion bit toward the LSB side, and setting 0 to the other upper bits. 
     Note that the precision switching circuit  61   ax  specifies the bit range according to what number section from the beginning (0-th) section the bit range corresponding to the inversion bit corresponds to when the unit bit string read in step S 26  is divided into bit-length sections according to the precision from the beginning. 
     According to the examples in  FIGS. 12 to 14 , in the case of 64-bit precision, the bit range corresponds to the 0-th section when j is an even number and the first section when j is an odd number. Furthermore, in the case of 32-bit precision, the bit range corresponds to the 0-th section in the case of mod (j, 4)-th=0, the first section in the case of mod (j, 4)=1, the second section in the case of mod (j, 4)=2, and the third section in the case of mod(, 4)=3. Here, mod (u, v) is a function that indicates a remainder when u is divided by v. Moreover, in the case of 16-bit precision, “mod (j, 8)”-th section from the beginning of the read 128-bit unit bit string is similarly the bit range corresponding to the inversion bit. Note that, in the case of 128-bit precision, the precision switching circuit  61   ax  sets the 128-bit unit bit string read in step S 26  as the weight coefficient corresponding to the inversion bit as it is. 
     In the above example, for the 128/a (a=1, 2, 4, or 8)-bit precision, the “mod (, a)”-th section (the size of one section is 128/a bits) from the beginning of the 128-bit unit bit string read in step S 26  is the bit range Indicating the weight coefficient corresponding to the inversion bit. 
     (S 28 ) The Δh generation unit  62   ax  generates Δh i  on the basis of an inversion direction of the inversion bit and the weight coefficient W ij  extracted by the precision switching circuit  61   ax . The expression (4) is used to generate Δh i . Furthermore, the inversion direction of the inversion bit is determined according to the inversion bit q j  (the bit before the inversion this time) output by the random selector unit  52 . 
     (S 29 ) The adder  63   ax  adds the Δh i  generated by the Δh generation unit  62   ax  to the local field h, stored in the h storage register  64   ax  to update the local field h i  stored in the h storage register  64   ax . Furthermore, the inversion determination unit  65   ax  determines whether the own bit has been selected as the inversion bit on the basis of the index=j and the flag F j  output by the random selector unit  52 . The inversion determination unit  65   ax  inverts the spin bit stored in the bit storage register  66   ax  in the case where the own bit has been selected as the inversion bit, or maintains the spin bit in the bit storage register  66   ax  in the case where the own bit has not been selected as the inversion bit. Here, the case where the own bit has been selected as the inversion bit means a case where the index=j=i and F j =1 for the signal output by the random selector unit  52 . 
     (S 30 ) The control unit  25   a  determines whether the number of times of update processing of each spin bit held in the LFEs  51   a   1 , . . . , and  51   an  has reached N1 (the number of times of update processing=N1) in the current temperature parameter T. In the case where the number of times of update processing has reached N1, the processing proceeds to step S 31 . In the case where the number of times of update processing has not reached N1, the control unit  25   a  adds 1 to the number of times of update processing and advances the processing to step S 20 . 
     (S 31 ) The control unit  25   a  determines whether the number of changes of the temperature parameter T has reached N2 (whether the number of temperature changes=N2). In the case where the number of temperature changes reaches N2, the processing proceeds to step S 33 . In the case where the number of temperature changes has not reached N2, the control unit  25   a  adds 1 to the number of temperature changes and advances the processing to step S 32 . 
     (S 32 ) The control unit  25   a  changes the temperature parameter T. Specifically, the control unit  25   a  reduces the value of the temperature parameter T (corresponding to lowering the temperature) by the range of reduction according to the operating condition. Then, the processing proceeds to step S 20 . 
     (S 33 ) The control unit  25   a  reads the spin bit stored in the bit storage register  66   ax  and outputs the spin bit as an operation result. Specifically, the control unit  25   a  reads the spin bits stored respectively in the bit storage registers  66   a   1 , . . . , and  66   a K corresponding to the number of spin bits K set by the mode setting register  55 , and outputs the spin bits to the CPU  21 . That is, the control unit  25   a  supplies the read spin bit string to the CPU  21 . Then, the operation processing is completed. 
     Note that, in step S 24 , the random selector unit  52  forcibly sets the value of F output by an unused LFE to 0 according to the setting of the mode setting register  55 , thereby excluding the unused LFE from the bit inversion candidates. 
     According to the optimization device  25 , the mode setting register  55  enables setting of the number of spin bits representing the state of the Ising model and the number of bits of the weight coefficients, whereby the scale and precision suitable for the problem can be achieved in the one-chip optimization device  25 . 
     More specifically, the precision switching circuit  61   ax  switches the bit length of the weight coefficient read from the SRAM  60   ax  according to the setting of the mode setting register  55 . By using the precision switching circuit  61   ax , as described in step S 27 , various precisions can be achieved without changing the number of unit bits read from the SRAM  60   ax  by the selector of the precision switching circuit  61   ax . For example, the precision can be made variable without requiring remaking of the signal line for reading the number of unit bits from the SRAM  60   ax  by the selector of the precision switching circuit  61   ax.    
     Furthermore, the random selector unit  52  inputs the signal indicating the inversion bit to the number of (for example, K) LFEs corresponding to the number of spin bits set by the mode setting register  55 , and selects the inversion bit from among the bits corresponding to the number of (K) LFEs. The random selector unit  52  also inputs the signal indicating the inversion bit to the unused n−K LFEs, but excludes the unused LFEs from the inversion bit selection candidates by forcibly setting the flag F output from the n−K LFEs to 0 (inversion unavailable). 
     Thereby, the Ising model can be implemented by one optimization device  25  with the scale and precision according to the problem even if the optimization device having the scale and precision according to the problem is not individually manufactured. 
     Next, another example of the mode setting will be described. For example, the optimization device  25  stores the weight coefficients in the SRAMs  60   a   1 , . . . , and  60   an  as follows, thereby providing a fifth mode of 4-kbit scale/64-bit precision, in addition to the above-described four modes. 
       FIG. 17  is a diagram illustrating a storage example of coupling coefficients (No. 5). 
     Data  5   d   1 ,  5   d   2 , . . . , and  5   dn  are storage examples of the weight coefficients for the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an  in the case of using the above-described fifth mode (4-kbit scale/64-bit precision). Here, n=8192. The data  5   d   1 ,  5   d   2 , . . . , and  5   dn  are stored in the SRAMs  60   a   1 ,  60   a   2 , . . . , and  60   an , respectively. In this mode, 4 k (=4096) LFEs are used as the spin bit string, and another 4 k (=4096) LFEs are used only for storing the weight coefficients. 
     The data  5   d   1  indicates W 0,0  to W 0,2047  stored in the SRAM  60   a   1  of the LFE  51   a   1  (LFE 0 ). The data  5   d   2  indicates W 0,2048  to W 0,2048  stored in the SRAM  60   a   2  of the LFE  51   a   2  (LFE 1 ). The data  5   dn  indicates W 4095,2048  to W 4095,4095  stored in the SRAM  60   an  of the LFE  51   an  (LFE 8191 ). The number of bits of one weight coefficient W ij  is 64 bits. 
     Here, as described above, the precision switching circuit  61   a   1  of the LFE  51   a   1  can also acquire the weight coefficient from the SRAM  60   a   2  of the LFE  51   a   2 . That is, the precision switching circuit  61   a   1  can adopt a method of stopping the functions other than the SRAM  60   a   2  of the LFE  51   a   2  and lending the capacity of the SRAM  60   a   2  to the LFE  51   a   1  by using the readout route from the adjacent SRAM  60   a   2  of the LFE  51   a   2 , for example. For example, the odd-numbered LFE (the LFE in the beginning is the first LFE) makes the SRAM of the even-numbered LFE available (or it can be said that the even-numbered LFE makes the SRAM of the odd-numbered LFE available in the case where the LIFE In the beginning is the 0-th LFE). 
     In this way, the precision switching circuit  61   a   1 , . . . , or  61   an  reads a part of the weight coefficients related to the own bit and other bits from the SRAM included in another LFE unused as the spin bit according to the change in the number of bits of the weight coefficients. In this case, the random selector unit  52  may exclude the bit corresponding to the another LFE from the inversion bit selection candidates by forcibly setting the flag F output from the another LFE unused as the spin bit to 0 (inversion unavailable), for example. 
     Thereby, the fifth mode of the 4-kbit scale/64-bit precision can be implemented. Similarly, even greater precision can be achieved by reducing the scale. Thus, according to the optimization device  25 , the scale and precision can be more flexibly changed according to the problem. 
     Third Embodiment 
     Next, a third embodiment will be described. Items different from the above-described second embodiment will be mainly described, and description of common items will be omitted. 
     The third embodiment provides a function to efficiently make LFEs available in addition to the functions of the second embodiment. 
     Here, since a device configuration of an information processing system and a hardware configuration of an information processing device  20  according to the third embodiment are similar to those in  FIGS. 2 and 3 , description thereof is omitted. An optimization device of the third embodiment is partially different from the optimization device  25  of the second embodiment in a circuit configuration. 
       FIG. 18  is a diagram illustrating an example of the optimization device of the third embodiment. 
     An optimization device  26  is, for example, a one-chip semiconductor integrated circuit, and is implemented by an FPGA or the like. The optimization device  26  is an example of the optimization device  1  according to the first embodiment. The optimization device  26  includes a plurality of LFBs. The optimization device  26  includes a control unit  25   a  that controls the plurality of LFBs (not illustrated). 
     In the third embodiment, as an example, the number of LFEs belonging to one LFB is m (m is an integer of 2 or larger), and the optimization device  26  includes LFBs  70   a ,  70   b ,  70   c ,  70   d ,  70   e ,  70   f ,  70   g , and  70   h . In this case, the optimization device  26  includes a total of 8 m LFEs and can implement a maximum scale of 8 m bits. Note that the number of LFBs included in the optimization device  26  is not limited to eight and may be another number. 
     The plurality of LFEs included in the LFBs  70   a , . . . , and  70   h  are examples of the bit operation circuits  1   a   1 , . . . , and  1   a N of the first embodiment. Each of LFBs  70   a , . . . , and  70   h  can be said to be one group of LFEs each including a predetermined number (m) of LFEs as elements. Furthermore, identification numbers #0 to #7 are assigned to the LFBs  70   a , . . . , and  70   h , respectively. 
     The optimization device  26  further includes a scale coupling circuit  91 , a mode setting register  92 , adders  93   a ,  93   b ,  93   c ,  93   d ,  93   e ,  93   f ,  93   g , and  93   h , and E storage registers  94   a ,  94   b ,  94   c ,  94   d ,  94   e ,  94   f ,  94   g , and  94   h.    
     Here, the LFB  70   a  includes LFEs  71   a   1 , . . . , and  71   am , a random selector unit  72 , a threshold generation unit  73 , a random number generation unit  74 , and a mode setting register  75 . Since the LFEs  71   a   1 , . . . , and LFE  71   am , the random selector unit  72 , the threshold generation unit  73 , the random number generation unit  74 , and the mode setting register  75  correspond to the hardware of the same names in the second embodiment described with reference to  FIG. 8 , description is omitted. Note that the random selector unit  72  outputs a set of state signals (a flag F x0 , a spin bit q x0 , and an energy change amount ΔE x0 ) for a selected inversion bit to the scale coupling circuit  91 . Furthermore, the random selector unit  72  does not have to include (but may include) the flag control unit  52   a . For example, in the random selector unit  72 , two state signals from the LFEs are input to each selection circuit in the first stage of the random selector unit  72  without going through the flag control unit  52   a . Note that the LFBs  70   b , . . . , and  70   h  have a similar circuit configuration to the LFB  70   a.    
     The scale coupling circuit  91  receives the state signal from each of the LFBs  70   a , . . . , and  70   h , and selects an inversion bit on the basis of the state signal. The scale coupling circuit  91  supplies a signal regarding the inversion bit to each of the LFEs of the LFBs  70   a , . . . , and  70   h.    
     Specifically, the scale coupling circuit  91  outputs the flag F y0 , the bit q y0 , and the index=y0 indicating the inversion bit to the LFEs  71   a   1 , . . . , and  71   am  of the LFB  70   a   1 . Here, in the following drawings, the notation such as “index=x0” output by the random selector unit  72  and the scale coupling circuit  91  may be abbreviated as “x0”. The scale coupling circuit  91  outputs the energy change amount ΔE y0  to the adder  93   a.    
     Furthermore, the scale coupling circuit  91  supplies the flag F y1 , the bit q y1 , and the index=y1 indicating the inversion bit to each of the LFEs of the LFB  70   b . The scale coupling circuit  91  outputs the energy change amount ΔE y1  to the adder  93   b.    
     The scale coupling circuit  91  outputs the flag F y2 , the bit g y2 , and the index=y2 indicating the inversion bit to each of the LFEs of the LFB  70   c . The scale coupling circuit  91  outputs the energy change amount ΔE y2  to the adder  93   c.    
     The scale coupling circuit  91  outputs the flag F y3 , the bit q y3 , and the index=y3 indicating the inversion bit to each of the LFEs of the LFB  70   d . The scale coupling circuit  91  outputs the energy change amount ΔE y3  to the adder  93   d.    
     The scale coupling circuit  91  outputs the flag F y4 , the bit q y4 , and the index=y4 indicating the inversion bit to each of the LFEs of the LFB  70   e . The scale coupling circuit  91  outputs the energy change amount ΔE y4  to the adder  93   e.    
     The scale coupling circuit  91  outputs the flag F y5 , the bit q y5 , and the index=y5 indicating the inversion bit to each of the LFEs of the LFB  70   f . The scale coupling circuit  91  outputs the energy change amount ΔE y5  to the adder  93   f.    
     The scale coupling circuit  91  outputs the flag F y6 , the bit q y6 , and the index=y6 indicating the inversion bit to each of the LFEs of the LFB  70   g . The scale coupling circuit  91  outputs the energy change amount ΔE y6  to the adder  93   g.    
     The scale coupling circuit  91  outputs the flag F y7 , the bit q y7 , and the index=y7 indicating the inversion bit to each of the LFEs of the LFB  70   h . The scale coupling circuit  91  outputs the energy change amount ΔE y7  to the adder  93   h.    
     The random selector unit (including the random selector unit  72 ) included in each of the LFBs  70   a , . . . , and  70   h  and the scale coupling circuit  91  are an example of the selection circuit unit  2  of the first embodiment. 
     The mode setting register  92  sets an operation mode for the scale coupling circuit  91 . The mode setting register  92  sets, in the scale coupling circuit  91 , the same operation mode as the operation mode set in the LFEs  71   a   1 , . . . , and  71   am  and the random selector unit  72  by the mode setting register  75 . Details of the mode setting by the mode setting registers  75  and  92  will be described below. The mode setting registers (including the mode setting register  75 ) included in each of the LFBs  70   a , . . . , and  70   h  and the mode setting register  92  are an example of the setting change unit  5  of the first embodiment. 
     The adder  93   a  adds ΔE y0  to the energy value E 0  stored in the E storage register  94   a  to update the energy value E 0 . The E storage register  94   a  takes in the energy value E 0  calculated by the adder  93   a  in synchronization with a dock signal (not illustrated), for example, (which similarly applies to the other E storage registers). 
     The adder  93   b  adds ΔE y1  to the energy value E 1  stored in the E storage register  94   b  to update the energy value E 1 . The E storage register  94   b  takes in the energy value E 1  calculated by the adder  93   b.    
     The adder  93   c  adds ΔE y2  to the energy value E 2  stored in the E storage register  94   c  to update the energy value E 2 . The E storage register  94   c  takes in the energy value E 2  calculated by the adder  93   c.    
     The adder  93   d  adds ΔE y3  to the energy value E 3  stored in the E storage register  94   d  to update the energy value E 3 . The E storage register  94   d  takes in the energy value E 3  calculated by the adder  93   d.    
     The adder  93   e  adds ΔE y4  to the energy value E 4  stored in the E storage register  94   e  to update the energy value E 4 . The E storage register  94   e  takes in the energy value E 4  calculated by the adder  93   e.    
     The adder  93   f  adds ΔE y s to the energy value E 5  stored in the E storage register  94   f  to update the energy value E 5 . The E storage register  94   f  takes in the energy value E 5  calculated by the adder  93   f.    
     The adder  93   g  adds ΔE y6  to the energy value E 5  stored in the E storage register  94   g  to update the energy value E 5 . The E storage register  94   g  takes in the energy value E 5  calculated by the adder  93   g.    
     The adder  93   h  adds ΔE y7  to the energy value E, stored in the E storage register  94   h  to update the energy value E 7 . The E storage register  94   h  takes in the energy value E 7  calculated by the adder  93   h.    
     Each of the E storage registers  94   a , . . . , and  94   h  is, for example, a flip-flop. 
     Next, a circuit configuration example of the LFB  70   a  will be described. The LFBs  70   b , . . . , and  70   h  have a similar circuit configuration to the LFB  70   a.    
       FIG. 19  is a diagram illustrating a circuit configuration example of the LFB. 
     Each of the LFEs  71   a   1 ,  71   a   2 , . . . , and  71   am  is used as one bit of spin bits. m is an integer of 2 or larger and represents the number of LFEs Included in the LFB  70   a . In  FIG. 19 , m=1024 is set as an example. Note that m may be another value. 
     Identification information (index) is associated with each of the LFEs  71   a   1 ,  712 , . . . , and  71   am . For each of the LFEs  71   a   1 ,  71   a   2 , . . . , and  71   am , the index=0, 1, . . . , or 1023. 
     The circuit configuration of the LFE  71   a   1  will be described below. The LFEs  71   a   2 , . . . , and  71   am  are implemented with a similar circuit configuration to the LFE  71   a   1 . Regarding description of the circuit configurations of the LFEs  71   a   2 , . . . , and  71   am , the “a 1 ” part at the end of the reference sign of each of the element in the following description is replaced with “a 2 ”, . . . , and “am”, respectively (for example, the reference sign of “ 80   a   1 ” is replaced with “ 80   am ”). 
     The LFE  71   a   1  includes an SRAM  80   a   1 , a precision switching circuit  81   a   1 , a Δh generation unit  82   a   1 , an adder  83   a   1 , an h storage register  84   a   1 , an inversion determination unit  85   a   1 , a bit storage register  86   a   1 , a ΔE generation unit  87   a   1 , and a determination unit  88   a   1 . 
     Here, the SRAM  80   a   1 , the precision switching circuit  81   a   1 , the Δh generation unit  82   a   1 , the adder  83   a   1 , the h storage register  84   a   1 , the inversion determination unit  85   a   1 , the bit storage register  86   a   1 , the ΔE generation unit  87   a   1 , and the determination unit  88   a   1  have similar functions to the hardware with the same names described in  FIG. 8 , respectively. Note that the index=y0 and the flag F y0  indicating inversion availability output by the scale coupling circuit  91  are supplied to the SRAM  80   a   1  (or the precision switching circuit  81   a   1 ) and the inversion determination unit  85   a   1 . Furthermore, the inversion bit q y0  output by the scale coupling circuit  91  is supplied to the Δh generation unit  82   a   1 . 
     The mode setting register  75  sets the number of bits (precision) of weight coefficients for the precision switching circuits  81   a   1 ,  81   a   2 , . . . , and  81   am . The mode setting register  75  does not have a signal line for setting the random selector unit  72  (however, the mode setting register  75  may have the signal line). In the third embodiment, as an example, the following five types of modes described in the second embodiment can be used. 
     The first mode is a 1-kbit scale/128-bit precision mode. The 1-kbit scale/128-bit precision mode uses one LFB. This mode can be implemented with only one of the LFBs  70   a , . . . , and  70   h.    
     The second mode is a 2-kbit scale/64-bit precision mode. The 2-kbit scale/64-bit precision mode uses two LFBs. For example, the mode can be Implemented by any one of a combination of the LFBs  70   a  and  70   b , a combination of the LFBs  70   c  and  70   d , a combination of the LFBs  70   e  and  70   f , and a combination of the LFBs  70   g  and  70   h.    
     The third mode is a 4-kbit scale/32-bit precision mode. The 4-kbit scale/32-bit precision mode uses four LFBs. For example, the mode can be implemented by either a combination of the LFBs  70   a ,  70   b ,  70   c , and  70   d  or a combination of the LFBs  70   e ,  70   f ,  70   g , and  70   h.    
     The fourth mode is a 4-kbit scale/64-bit precision mode. The 4-kbit scale/64-bit precision mode uses eight LFBs. This mode can be implemented using a combination of the LFBs  70   a , . . . , and  70   h . Note that, as described in  FIG. 17 , the number of LFEs used in one LFB is half the number of LFEs included in one LFB. 
     The fifth mode is an 8-kbit scale/16-bit precision mode. The 8-kbit scale/16-bit precision mode uses eight LFBs. This mode can be implemented using a combination of the LFBs  70   a , . . . , and  70   h.    
     Furthermore, the optimization device  26  of the third embodiment enables the same problems or other problems to be executed in parallel by combining the above-described 1-kbit scale/128-bit precision mode, the 2-kbit scale/64-bit precision mode, and the 4-kbit scale/32-bit precision mode. 
     Therefore, the scale coupling circuit  91  selects, for the plurality of LFBs (combinations of the LFBs), the number of LFBs to be combined (the number of groups to be combined) to include the number of LFEs corresponding to the number of spin bits according to a change in the number of spin bits by the mode setting register  92 . The scale coupling circuit  91  has, for example, the following circuit configuration. 
       FIG. 20  is a diagram illustrating a circuit configuration example of a scale coupling circuit. 
     The scale coupling circuit  91  includes selection circuits  91   a   1 ,  91   a   2 ,  91   a   3 ,  91   a   4 ,  91   b   1 ,  91   b   2 , and  91   c   1  connected in a tree shape over a plurality of stages, a random number generation unit  91   d , and mode selection circuits  91   e   1 ,  91   e   2 ,  91   e   3 ,  91   e   4 ,  91   e   5 ,  91   e   6 ,  91   e   7 , and  91   e   8 . 
     Two sets (state signals) of variables q i , F i , ΔE i , and the index=i output by the LFBs  70   a , . . . , and  70   h  are input to each of the selection circuits  91   a   1 , . . . , and  91   a   4  in the first stage. For example, a set of (q x0 , F x0 , ΔE x0 , the index=x0) output by the LFB  70   a  (#0) and a set of (q x1 , F x1 , ΔE x1 , the index=x1) output by the LFB  70   b  (#1) are input to the selection circuit  91   a   1 . Furthermore, a set of (q x2 , F x2 , ΔE x2 , the index=x2) output by the LFB  70   c  (#2) and a set of (q x3 ,F x3 ,ΔE x3 , the index=x3) output by the LFB  70   d  (#3) are input to the selection circuit  91   a   2 . A set of (q x4 , F x4 , ΔE x4 , the index=x4) output by the LFB  70   e  (#4) and a set of (q x5 , F x5 , ΔE x5 , the index=x5) output by the LFB  70   f  (#5) are input to the selection circuit  91   a   3 . A set of (q x6 , F x6 , ΔE x6 , the index=x6) output by the LFB  70   g  (#6) and a set of (q x7 , F x7 , ΔE x7 , the index=x7) output by the LFB  70   h  (#7) are input to the selection circuit  91   a   4 . 
     Then, each of the selection circuits  91   a   1 , . . . , and  91   a   4  selects a set of (x i , F i , ΔE i , the index=i) from the two sets on the basis of the 1-bit random number output by the random number generation unit  91   d . At this time, each of the selection circuits  91   a   1 , . . . , and  91   a   4  preferentially selects the set having F i  of 1, or selects any one set on the basis of the 1-bit random number in the case where both the sets have F i  of 1 (which similarly applies to the other selection circuits  91   b   1 ,  91   b   2 , and  91   c   1 ). Here, the random number generation unit  91   d  individually generates the 1-bit random number for each selection circuit and supplies the 1-bit random number to each selection circuit. Furthermore, each of the selection circuits  91   a   1 , . . . , and  91   a   4  generates an identification value Indicating which set has been selected on the basis of the index included in both sets, and outputs a state signal including the selected variables q i , F i , and ΔE i  and the identification value. Note that the identification value output by each of the selection circuits  91   a   1 , . . . , and  91   a   4  is increased by 1 bit from the input index. 
     Two state signals output by the selection circuits  91   a   1 , . . . , and  91   a   4  are input to each of the selection circuits  91   b   1  and  91   b   2  in the second stage. For example, the state signals output by the selection circuits  91   a   1  and  91   a   2  are input to the selection circuit  91   b   1 , and the state signals output by the selection circuits  91   a   3  and  91   a   4  are input to the selection circuit  91   b   2 . 
     Then, each of the selection circuits  91   b   1  and  91   b   2  selects one of the two state signals on the basis of the two state signals and the 1-bit random number output by the random number generation unit  91   d . Furthermore, each of the selection circuits  91   b   1  and  91   b   2  updates the identification value included in the selected state signal by adding one bit to indicate which state signal has been selected, and outputs the selected state signal. 
     Two state signals output by the selection circuits  91   b   1  and  91   b   2  are input to the selection circuit  91   c   1  in the last stage. The selection circuit  91   c   1  selects one of the two state signals on the basis of the two state signals and the 1-bit random number output by the random number generation unit  91   d . Furthermore, the selection circuit  91   c   1  updates the identification value included in the selected state signal by adding one bit to indicate which state signal has been selected, and outputs the selected state signal. 
     As described above, the identification value corresponds to the index. The scale coupling circuit  91  may output the index corresponding to the inversion bit by each selection circuit selecting the index input from each random selector unit, similarly to the variables q i , F i , and ΔE i . In this case, each random selector unit receives an index from each LFE together with the variable q and the flag F. It is conceivable that the control unit  25   a  sets the index according to the combination of LFBs for the predetermined index storage registers of each of the LFEs. 
     Each of the mode selection circuits  91   e   1 , . . . , and  91   e   8  has an input terminal according to the scale (that is, 1-kbit, 2-kbit, 4-kbit, or 8-kbit). In the drawing, “1” illustrated in each of the mode selection circuits  91   e   1 , . . . , and  91   e   8  represents the input terminal corresponding to the 1-kbit scale. The “2” represents the input terminal corresponding to the 2-kbit scale. The “4” represents the input terminal corresponding to the 4-kbit scale (note that 32-bit precision). The “8” represents the input terminal corresponding to the 8-kbit scale (or 4-kbit scale/64-bit precision). 
     The state signal output by the LFB  70   a  (#0) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   1 . The state signal output by the LFB  70   b  (#1) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   2 . The state signal output by the LFB  70   c  (#2) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   3 . The state signal output by the LFB  70   d  (#3) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   4 . The state signal output by the LFB  70   e  (#4) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   5 . The state signal output by the LFB  70   f  (#5) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   6 . The state signal output by the LFB  70   g  (#6) Is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   7 . The state signal output by the LFB  70   h  (#7) is input to the 1-kbit scale input terminal of the mode selection circuit  91   e   8 . 
     The state signal output by the selection circuit  91   a   1  is input to the respective 2-kbit scale input terminals of the mode selection circuits  91   e   1  and  91   e   2 . The state signal output by the selection circuit  91   a   2  is input to the respective 2-kbit scale input terminals of the mode selection circuits  91   e   3  and  91   e   4 . The state signal output by the selection circuit  91   a   3  is input to the respective 2-kbit scale input terminals of the mode selection circuits  91   e   5  and  91   e   6 . The state signal output by the selection circuit  91   a   4  is input to the respective 2-kbit scale input terminals of the mode selection circuits  91   e   7  and  91   e   8 . 
     The state signal output by the selection circuit  91   b   1  is input to the respective 4-kbit scale input terminals of the mode selection circuits  91   e   1 ,  91   e   2 ,  91   e   3 , and  91   e   4 . The state signal output by the selection circuit  91   b   2  is input to the respective 4-kbit scale input terminals of the mode selection circuits  91   e   5 ,  91   e   6 ,  91   e   7 , and  91   e   8 . 
     The state signal output by the selection circuit  91   c   1  is input to the respective 8-kbit scale input terminals of the mode selection circuits  91   e   1 , . . . , and  91   e   8 . 
     Each of the mode selection circuits  91   e   1 , . . . , and  91   e   8  receives the setting of the scale (the number of spin bits) by the mode setting register  92 . Note that, in  FIG. 20 , the signal line for each of the mode selection circuits  91   e   2 , . . . , and  91   e   8  from the mode setting register  92  is abbreviated by the notation of “ . . . ”. Each of the mode selection circuits  91   e   1 , . . . , and  91   e   8  selects the state signal input to the input terminal according to the set scale, outputs (x j , F j , index=j) to the LFBs  70   a , . . . , and  70   h , and outputs ΔE j  to the adders  93   a , . . . , and  93   h.    
     For example, the mode selection circuit  91   e   1  outputs (x y0 , F y0 , the index=y0) to the LFB  70   a  and outputs ΔE y0  to the adder  93   a . The adder  93   a  updates E 0  on the basis of ΔE y0 . The mode selection circuit  91   e   2  outputs (x y1 , F y1 , the index=y1) to the LFB  70   b  and outputs ΔE y1  to the adder  93   b . The adder  93   b  updates E 1  on the basis of ΔE y1 . The mode selection circuit  91   e   3  outputs (x y2 , F y2 , the index=y2) to the LFB  70   c  and outputs ΔE y2  to the adder  93   c . The adder  93   c  updates E 2  on the basis of ΔE y2 . The mode selection circuit  91   e   4  outputs (x y3 , F y3 , the index=y3) to the LFB  70   d  and outputs ΔE y3  to the adder  93   d . The adder  93   d  updates E 3  on the basis of ΔE y3 . The mode selection circuit  91   e   5  outputs (x y4 , F y4 , the index=y4) to the LFB  70   e  and outputs ΔE y4  to the adder  93   e . The adder  93   e  updates E 4  on the basis of ΔE y4 . The mode selection circuit  91   e   6  outputs (x y5 , F y5 , the index=y5) to the LFB  70   f  and outputs ΔE y5  to the adder  93   f . The adder  93   f  updates E 5  on the basis of ΔE y5 . The mode selection circuit  91   e   7  outputs (x y6 , F y6 , the index=y6) to LFB  70   g  and outputs ΔE y6  to the adder  93   g . The adder  93   g  updates E 6  on the basis of ΔE y6 . The mode selection circuit  91   e   8  outputs (x y7 , F y7 , the index=y7) to the LFB  70   h  and outputs ΔE y7  to the adder  93   h . The adder  93   h  updates E 7  on the basis of ΔE y7 . 
     That is, the optimization device  26  of the third embodiment Includes, for each LFB, the random selector unit that selects one of the bits on the basis of the signals indicating inversion availability output from the LFEs belonging to a certain LFB (group), and outputs the signal indicating the selected bit to the scale coupling circuit  91 . The scale coupling circuit  91  combines one or more LFBs according to a change in the number of spin bits, and selects the bit to be inverted on the basis of the signals indicating the bit selected by the random selector unit corresponding to each of the one or more LFBs. The scale coupling circuit  91  outputs the signal indicating the bit to be inverted to the LFEs belonging to the one or more LFBs. 
     Here, the mode setting register  92  individually sets the scale for the mode selection circuits  91   e   1 , . . . , and  91   e   8 . Note that, in a mode of a certain scale, a common scale is set for the mode selection circuits corresponding to the LFBs used in combination. 
     For example, the mode setting register  92  may set the same number of bits or different numbers of bits for the number of spin bits of the first spin bit string corresponding to the first combination of LFBs and the number of spin bits of the second spin bit string corresponding to the second combination of LFBs. Furthermore, the mode setting register of each LFB including the mode setting register  75  may set the same number of bits or different numbers of bits for the number of bits of weight coefficients for the LFEs belonging to the first combination of LFBs and the number of bits of weight coefficients for the LFEs belonging to the second combination of LFBs. 
     For example, in the case of using the 2-kbit scale mode using the LFBs  70   a  and  70   b  in combination, the mode setting register  92  supplies a selection signal for selecting the 2-kbit scale mode to the mode selection circuits  91   e   1  and  91   e   2 . At this time, for example, the optimization device  26  can execute the same problem as the operation by the LFBs  70   a  and  70   b  or a different problem in parallel, using the remaining six LFBs by the setting of the mode setting register  92 . For example, the scale coupling circuit  91  may implement six 1-kbit scale modes in each of the six LFBs for the remaining six LFBs. Furthermore, the scale coupling circuit  91  may implement three 2-kbit scale modes by combining each two of the six LFBs. Moreover, the scale coupling circuit  91  may implement a 2-kbit scale mode by combining two of the six LFBs, and implement a 4-kbit scale mode by combining the other four LFBs. 
     Examples of the combination of modes implemented in parallel are not limited to the above combinations, and various combinations are conceivable such as a combination of eight 1-kbit scale modes, a combination of four 2-kbit scale modes, and a combination of four 1-kbit scale modes and two 2-kbit scale modes, for example. 
     In this way, the scale coupling circuit  91  receives the setting of the number of spin bits for each of the plurality of spin bit strings by the mode setting register  92 , and selects the number of LFBs (the number of groups) to be combined for each of the numbers of spin bits of the plurality of spin bit strings, and combines the LFBs. As a result, a plurality of Ising models can be Implemented on one optimization device  26 . 
     Note that common energy is stored in the set of E storage registers corresponding to the set of LFBs used in combination. For example, in the case of using the LFBs  70   a  and  70   b  in combination, E 0  and E 1  stored in the E storage registers  94   a  and  94   b  have the same value. In this case, when reading the energy value for the set of LFBs  70   a  and  70   b , the control unit  25   a  may read the energy value stored in either one of the E storage registers  94   a  and  94   b  (for example, the E storage register  94   a  corresponding to the LFB  70   a ) The control unit  25   a  reads the energy value for other combinations of LFBs in a similar manner. 
     In the third embodiment, the control unit  25   a  receives the input by the CPU  21  such as the initial values and operating conditions for each problem to be calculated in parallel as step S 10  in  FIG. 15 . Then, in step S 11 , the control unit  25   a  sets the scale/precision corresponding to each problem in the mode setting registers of the LFBs and the mode setting register  92  for each group of LFBs used for one problem. 
     For example, for the first problem, the control unit  25   a  sets the 2-kbit scale/64-bit precision for the mode setting registers of the LFBs  70   a  and  70   b  and sets the mode setting register  92  to cause the mode selection circuits  91   e   1  and  91   e   2  to perform output for the 2-kbit scale. Furthermore, for the second problem, the control unit  25   a  sets the 2-kbit scale/64-bit precision for the mode setting registers of the LFBs  70   c  and  70   d  and sets the mode setting register  92  to cause the mode selection circuits  91   e   3  and  91   e   4  to perform output for the 2-kbit scale. 
     In this case, the optimization device  26  can calculate two problems (or both problems may be the same problem) in parallel. Specifically, the control unit  25   a  controls the LFBs to perform the procedure of the flowchart illustrated in  FIG. 16  for the combination of the LFBs corresponding to each problem. For example, the control unit  25   a  individually receives, for each problem, the initial values of various parameters such as the temperature parameter T, the weight coefficients, the number of bit updates and the number of temperature changes in a certain temperature parameter, and the like, inputs the received values to the LFBs belonging to the combination of LFBs that calculate the problem, and executes the operations in parallel by the combinations of LFBs. 
     After the operation is completed, the control unit  25   a  reads the spin bit string for the first problem from the each of the LFEs of the LFBs  70   a  and  70   b , and sets the spin bit string as the solution of the first problem. Furthermore, after the operation is completed, the control unit  25   a  reads the spin bit string for the second problem from the each of the LFEs of the LFBs  70   c  and  70   d , and sets the spin bit string as the solution of the second problem. Three or more problems can be calculated in parallel in a similar manner. As a result, operations for a plurality of problems can be efficiently executed. 
     Furthermore, in the case of solving the same problem in parallel by a plurality of sets of LFBs, it is conceivable that the control unit  25   a  speeds up the operation by, for example, a method called replica exchange method. In the replica exchange method, the search for a solution is speeded up by updating the spin bit string with a different temperature parameter in each set of LFBs (each replica) and exchanging the temperature parameters between the sets of LFBs (that is, between replicas) with a predetermined probability after a predetermined number of updates. 
     Alternatively, as a method of searching for a solution, a method of repeating the procedure from the start to the end in  FIG. 16  and obtaining the spin bit string of the minimum energy from among a plurality of operation results as the solution is conceivable. In this case, the control unit  25   a  can reduce the above-described number of repetitions and speed up the operation by solving the same problem using a plurality of sets of LFBs in parallel. 
     By the way, as the optimization problems that can be calculated using the optimization devices  25  and  26  illustrated in the second and third embodiments, problems in various fields are conceivable. For example, the scale of the problem required and the precision of expression of the problem may change depending on the field such as academic discipline or industry. 
       FIG. 21  is a diagram illustrating an example of a required range of scale/precision for each problem. 
     Graph  400  illustrates ranges of scale and precision required for problems in three types of fields, where the horizontal axis represents a scale ratio (a degree indicating the magnitude of scale) and the vertical axis represents a precision ratio (a degree indicating the magnitude of precision). The scale ratio is a ratio of a scale value (the number of spin bits) actually required to a scale reference value that is a reference of scale. The precision ratio is a ratio of a precision value (the number of bits of coupling coefficients) actually required to a precision reference value that is a reference of precision. 
     Region  401  illustrates the range of scale ratio/precision ratio required for problems in the field of power. Region  402  illustrates the range of scale ratio/precision ratio required for problems in the field of finance. Region  403  illustrates the range of scale ratio/precision ratio required for problems in the field of life sciences. 
     For example, according to the region  401 , problems in the field of power often require a relatively high precision ratio. Furthermore, according to the region  402 , problems in the field of finance require a relatively small scale ratio but may require a relatively high precision ratio. Furthermore, in the field of life science, problems require a relatively low precision ratio but may require a relatively large scale ratio. Note that the scale ratio/precision ratio required in each field described here is an example, and the required range of scale ratio/precision ratio may vary according to the problems dealt with in each field in the future. 
     Meanwhile, it is also conceivable to manufacture an optimization device suitable for the scale and precision for each problem, but it is not efficient. 
     Therefore, in the second or third embodiment, combinatorial optimization problems in various fields can be dealt with by making it possible to implement various scale/precision modes by the one-chip optimization device  25  or  26 . 
       FIG. 22  is a diagram illustrating an example of a selectable range of scale and precision. 
     Graph  500  illustrates an example of a selectable range of scale and precision that can be implemented by the optimization device  25  or  26 . Here, it is assumed that the upper limit of the capacity reserved for storing the weight coefficient in the SRAM for each LFE is 128 kbits, and the number of LFEs in each of the optimization device  25  and  26  is n=8192. As described above, the optimization devices  25  and  26  can implement, for example, five types of modes. Note that, in a range illustrated with the hatched area in the graph  500 , another scale/precision mode may be used. By increasing the SRAM capacity for each LFE, even larger scale/precision modes can be implemented. 
     In the optimization device  25  or  26 , various use patterns of the each of the LFEs are implemented after making the scale/precision mode variable. 
       FIGS. 23A to 23C  are diagrams illustrating examples of LFE use patterns. 
       FIG. 23A  illustrates an example (No. 1) of a use pattern of n LFEs that can be implemented in the second or third embodiment. For example, the optimization device  26  implements a first Ising model X using an LFE group  710  (that is, the first combination of LFBs) including a LFEs of the n LFEs. Furthermore, the optimization device  26  does not use an LFE group  720  including the remaining β LFEs. Similarly, the optimization device  25  may implement the first Ising model X using the LFE group  710  and does not use the LFE group  720 . 
       FIG. 23B  illustrates an example (No. 2) of a use pattern of n LFEs that can be implemented in the third embodiment. For example, the optimization device  26  implements the first Ising model X using the LFE group  710  (that is, the first combination of LFBs) including a LFEs of the n LFEs. Furthermore, the optimization device  26  implements the first Ising model X using an LFE group  730  (that is, the second combination of LFBs) including a LFEs of the remaining LFEs. By increasing the degree of parallelism of operations for the same problem, it is possible to accelerate convergence of the solution and speed up the operations. 
       FIG. 23C  illustrates an example (No. 3) of a use pattern of n LFEs that can be implemented in the third embodiment. For example, the optimization device  26  implements the first Ising model X using the LFE group  710  (that is, the first combination of LFBs) including a LFEs of the n LFEs. Furthermore, the optimization device  26  implements a second Ising model Y using an LFE group  740  (that is, the second combination of LFBs) including γ (may be γ=α or γ≠α) LFEs of the remaining LFEs. Thereby, different problems can be calculated in parallel. 
     Next, an example of a use flow of the optimization device  26  by the user will be described. Hereinafter, the optimization device  26  will be mainly illustrated, but a similar use flow is applied to the optimization device  25  as well. 
       FIG. 24  is a diagram illustrating an example of a use flow of the optimization device. 
     (S 101 ) The CPU  21  receives data  601  indicating a problem to be solved by a user from the client  30  via the NIC  24 . The client  30  and the NIC  24  implement an input unit that inputs various data to the information processing device  20  and a notification unit that notifies a solution obtained as a result of a ground state search as result information that can be easily understood by the user. The CPU  21  converts the data  601  into a search problem for the ground state of an Ising model, using the function of the library  21   a . As a result, the CPU  21  generates scale data  611  indicating the scale (the number of spin bits) of the problem, precision data  612  indicating the precision of expression of the problem, energy data  613  indicating the initial value of energy, and scale precision mode data  614  according to the scale/precision. The scale data  611  may be binary data indicating the spin bit string. The precision data  612  may include the weight coefficient between spin bits represented by the precision. The CPU  21  determines an appropriate scale precision mode from the problem and generates scale precision mode data  614 . 
     (S 102 ) The CPU  21  inputs the scale data  611 , the precision data  612 , and the energy data  613  to the control unit  25   a  as initial values. 
     (S 103 ) CPU  21  receives the input of user-specified operating conditions  602 . The user-specified operating conditions  602  include, for example, the number of state updates in a certain temperature parameter, the number of updates of the temperature parameter, the range of reduction in the temperature parameter, the initial value of the temperature parameter, and the like. Furthermore, the user-specified operating conditions  602  may include the number of LFBs to be combined. The CPU  21  includes the number of LFBs to be combined in the scale precision mode data  614 . The CPU  21  inputs the scale precision mode data  614  and the user-specified operating conditions  602  to the control unit  25   a  as operating conditions. The scale precision mode data  614  is set in the mode setting registers of each LFE including the mode setting register  75  and the mode setting register  92 . 
     (S 104 ) When steps S 102  and S 103  are completed, the CPU  21  instructs the control unit  25   a  to start executing the operation for searching for the ground state. 
     (S 105 ) When the operation by the optimization device  26  is completed, the CPU  21  acquires an operation result  615  from the optimization device  26  and converts the operation result into result information (for example, information on a result display screen) that can be easily understood by the user. The CPU  21  transmits the converted result information to the client  30  as a solution  616  of the problem to be solved by the user. 
     In this way, the CPU  21  determines the number of spin bits and the number of bits of weight coefficients according to the problem input by the user. The control unit  25   a  receives information indicating the number of spin bits, the number of bits of weight coefficients, and the weight coefficients from the CPU  21 . The control unit  25   a  sets the number of spin bits and the number of bits of weight coefficients in the mode setting register  55  (or the mode setting registers  75  and  92 ). The control unit  25   a  stores the information in the SRAMs of the number of LFEs corresponding to the number of spin bits, respectively. 
     In this way, the user can execute the operation by the optimization device  25  or  26  with the scale/precision according to the problem to be solved by the user. For example, the optimization device  26  can calculate the same problem or different problems by the same user in parallel. Furthermore, the optimization device  26  can calculate different problems by different users in parallel. That is, by enabling the operation with appropriate scale/precision according to the problem to be solved, another problem can be calculated in parallel using a free LFB (or free LFEs). Furthermore, the one-chip optimization devices  25  and  26  can be shared by a plurality of users. Moreover, the one-chip optimization devices  25  and  26  can be shared by a plurality of problems. 
     Furthermore, an optimization device (or an optimization system) having the above-described functions is conceivable. The optimization device (or optimization system) includes the input unit, the conversion unit, the control unit, and the display unit. 
     The input unit inputs a problem to be solved and an operating conditions. The input unit may be, for example, an input device such as a mouse or a keyboard, or may be implemented by an NIC (for example, NIC  24 ) and a client terminal (for example, client  30 ). 
     The conversion unit converts the input problem into a search problem in a ground state of an Ising model, and generates scale information indicating a scale of the search problem, precision information indicating precision of expression of the search problem, energy information indicating an initial value of energy of the search problem, and scale precision mode Information according to the scale and precision. The conversion unit may be, for example, a processor such as a CPU (for example, CPU  21 ) that exhibits the functions of the library  21   a  and the driver  21   b . The conversion unit may be implemented by a semiconductor integrated circuit such as an FPGA. 
     The control unit inputs the scale information, the precision information, and the energy information (or the initial value of the spin bit string, the coupling coefficients, and the initial value of energy according to the scale information, the precision information, and the energy information) and inputs the operating conditions and the scale precision mode information, and executes the operation for searching for the ground state and outputs the solution. The control unit may be, for example, the control unit  25   a  that inputs the scale information, the precision information, and the energy information (or the initial value of the spin bit string, the coupling coefficients, and the initial value of energy according to the scale information, the precision information, and the energy information) and inputs the operating conditions and the scale precision mode information to the LFB  50  (or LFBs  70   a , . . . , and  70   h ) and executes the operation for searching for the ground state using the LFB and outputs the solution. The control unit may be, for example, a semiconductor chip including the control unit  25   a  and the LFB  50  (or LFBs  70   a , . . . , and  70   h ), and may be a semiconductor chip that searches for the ground state of the Ising model. That is, the control unit may be a semiconductor chip that executes the operation for searching for the ground state of the Ising model and outputs the solution on the basis of the scale information, precision information, and energy information (or the spin bit string of the number of bits according to the scale information, the coupling coefficients of the number of bits according to the precision information, and the initial value of energy according to the energy information), the operating conditions, and the scale precision mode information. The scale information may be represented by the scale ratio to the scale reference value that is a reference of scale. The precision information may be represented by the precision ratio to the precision reference value that is a reference of precision. 
     The display unit displays the solution obtained as a result of the search for the ground state by the control unit. The display unit may be a display or may be implemented by a NIC and a client terminal. For example, the conversion unit converts the solution obtained as a result of the search for the ground state into visualized display information. The display unit displays the visualized display information. 
     The scale/precision can be varied by the illustrated optimization device. The user can execute the operation by the optimization device with the scale/precision according to the problem to be solved. 
     Note that the control of the optimization device  1  according to the first embodiment may be implemented by executing the program by the processor included in the computer that controls the optimization device  1 . For example, the program is stored in the RAM of the computer. The control of the optimization devices  25  and  26  according to the second and third embodiments may be implemented by causing the CPU  21  to execute the program. The program can be recorded in the computer-readable recording medium  41 . 
     For example, the program can be distributed by distributing the recording medium  41  in which the program is recorded. Alternatively, the program may be stored in another computer and distributed via a network. For example, a computer may store (install) the program, which is recorded in the recording medium  41  or received from another computer, in the DRAM  22  or the storage device  23 , read the program from the DRAM  22  or the storage device  23 , and execute the program. 
     The above description merely describes the principle of the present invention. Moreover, numerous modifications and variations are able to be made by those skilled in the art, and the present invention is not limited to the above-described or illustrated exact configuration and application example, and all corresponding modifications and equivalents are regarded to fall within the scope of the present invention by appended claims and equivalents thereof. 
     All examples and conditional language provided herein are intended for the pedagogical purposes of aiding the reader in understanding the invention and the concepts contributed by the inventor to further the art, and are not to be construed as limitations to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although one or more embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.