Computing device, computing method, and computer program product

Through the improved simulation forking algorithm and the simula method alternately update variables xi and yi, the precise solution of the combined optimization problem is solved, and the near-optimal solution is quickly found in large-scale problems, improving computing stability and efficiency.

CN115034125BActive Publication Date: 2025-08-22KK TOSHIBA
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202111002962.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-03-08
Filing Date
2021-08-30
Publication Date
2025-08-22
Estimated Expiration
2041-08-30

AI Technical Summary

Technical Problem

It is difficult for the prior art to accurately calculate the solutions to the combination optimization problem, especially in large-scale combination optimization problems, and the existing hardware implementation is difficult to use on a large scale and stably.

Method used

The improved simulated forking algorithm is adopted, and the two variables xi and yi are alternately updated through the simula method, and the variable values ​​are adjusted under specific conditions. Combined with the simula method and the improved algorithm, the precise solution of the combined optimization problem is achieved.

Benefits of technology

The precise solution of the combined optimization problem is realized, the calculation speed and stability are improved, the close-optimal solution can be found in large-scale problems, and variable divergence is avoided.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115034125B_ABST
    Figure CN115034125B_ABST
Patent Text Reader

Abstract

The present disclosure relates to a computing device, a computing method, and a program. The computing device includes an updating unit and an output unit. The updating unit updates the first variable and the second variable alternately in sequence per unit time from the initial moment to the end moment for each of a plurality of elements associated with the first variable and the second variable. The plurality of elements correspond to a plurality of discrete variables of a combinatorial optimization problem. The first variable and the second variable are respectively represented by real numbers. In the updating process per unit time, the updating unit updates the first variable based on the second variable for each of the plurality of elements. When the first variable is less than the first value, the first variable is changed to the first value, and the second variable is changed to the third value. When the first variable is greater than the second value, the first variable is changed to the second value, and the second variable is changed to the third value. An acceleration value calculated by a predetermined operation is added to the second variable. In this way, a solution to the combinatorial optimization problem is accurately calculated.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to a computing device, a computing method, and a program. Background Art

[0002] Combinatorial optimization problems involve selecting the combination that best meets a goal from among multiple combinations. Mathematically, combinatorial optimization problems can be formulated as either maximizing or minimizing a function with multiple discrete variables, known as the "objective function." While combinatorial optimization problems are ubiquitous in various fields, including finance, logistics, transportation, design, manufacturing, and life sciences, the number of combinations increases exponentially with the problem size, a phenomenon known as "combinatorial explosion." Consequently, it is not always possible to calculate an optimal solution. Furthermore, in many cases, even an approximate solution close to the optimal solution is difficult to obtain.

[0003] In order to solve problems in various fields and promote social innovation and scientific and technological progress, it is necessary to develop technologies that can accurately calculate solutions to combinatorial optimization problems. Summary of the Invention

[0004] Embodiments of the present invention provide a computing device, a computing method, and a program that can accurately calculate a solution to a combinatorial optimization problem.

[0005] The computing device involved in the embodiment solves a combinatorial optimization problem. The computing device includes an updating unit and an output unit. The updating unit updates the first variable and the second variable alternately in sequence per unit time from an initial moment to an end moment for each of a plurality of factors (elements) associated with the first variable and the second variable. The output unit outputs a solution to the combinatorial optimization problem based on the first variable of each of the plurality of factors at the end moment. The plurality of factors correspond to a plurality of discrete variables of the combinatorial optimization problem. The first variable and the second variable are each represented by a real number. In the per-unit-time update process, the updating unit updates the first variable for each of the plurality of elements based on the second variable. If the first variable is less than a predetermined first value, the first variable is changed to the first value and the second variable is changed to a predetermined third value. If the first variable is greater than a predetermined second value that is greater than the first value, the first variable is changed to the second value and the second variable is changed to the third value, and an acceleration value calculated by a predetermined operation is added to the second variable. The above-described calculation device enables accurate calculation of a solution to a combinatorial optimization problem. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Figure 1This is a diagram showing the bifurcation phenomenon of the simulated bifurcation algorithm.

[0007] Figure 2 It is a diagram showing the bifurcation phenomenon of the improved algorithm.

[0008] Figure 3 This is a graph showing the average value of the number of cuts when the maximum-cut problem is solved.

[0009] Figure 4 This is a graph showing the maximum number of cuts when the maximum cut problem is solved.

[0010] Figure 5 It is a graph showing the success probability when the maximum cut problem is solved.

[0011] Figure 6 This is a functional configuration diagram of the computing device involved in this embodiment.

[0012] Figure 7 This is a diagram showing a first example of the processing flow of the update unit.

[0013] Figure 8 This is a diagram showing a second example of the processing flow of the update unit.

[0014] Figure 9 This is the block structure diagram of the update unit.

[0015] Figure 10 It is a diagram of the structure of an information processing system.

[0016] Figure 11 This is a diagram of the management server's configuration.

[0017] Figure 12 It is a diagram showing data stored in the storage unit.

[0018] Figure 13 This is a diagram of the computing server configuration.

[0019] Figure 14 A diagram showing data stored in the memory.

[0020] Description of labels

[0021] 10 computing device; 12 input unit; 14 updating unit; 16 output unit; 100 information processing system; 101 management server; 102 network; 103, 103a, 103b, 103c computing servers; 104, 104a, 104b, 104c cables; 105 switch; 106 terminal device; 110 processor; 111 management unit; 112 conversion unit; 113 control unit; 114 storage unit; 115 communication circuit; 116 input circuit; 117 output circuit; 120 bus; 131 communication circuit; 132 shared memory; 133a, 133b, 133c, 133d processors; 134 storage; 135 host bus adapter. DETAILED DESCRIPTION

[0022] Hereinafter, embodiments will be described.

[0023] (Combinatorial optimization problem)

[0024] An example of a device used to solve the Ising problem is the Ising machine. The Ising machine calculates the energy of the ground state of the Ising model. To date, the Ising model has been primarily used as a model for ferromagnetic materials and phase transition phenomena. However, in recent years, its use as a model for solving combinatorial optimization problems has increased. Equation (1) represents the energy of the Ising model.

[0025]

[0026] s i 、s j Represents spin. Spin is a binary variable that takes any value between +1 and -1. i represents the i-th spin. s j represents the jth spin. i and j are arbitrary integers greater than 1 and less than N. N represents the number of spins and is an integer greater than 2. h i represents the local magnetic field acting on the i-th spin. J is a matrix representing the coupling coefficient of the force acting between two spins. J is a real symmetric matrix with zero diagonal components. i,j represents the element in row i and column j of J. In other words, J i,j is the coupling coefficient representing the force acting between the i-th spin and the j-th spin. Furthermore, the Ising model in equation (1) is a quadratic equation for spin. The Ising model can also be an extended model that includes terms with a third or higher degree of spin (an Ising model with multi-body interaction).

[0027] The Ising machine is represented by the energy E expressed by formula (1) IsingAs the objective function, calculate the energy E Ising The smallest possible solution. Energy E Ising The solution of the Ising model that becomes the minimum value (s1, s2, ..., s N ) is called the optimal solution. However, the solution of the Ising model may not be the optimal solution but the energy E Ising An approximate solution close to the minimum. In other words, the Ising problem can be a problem in which not only the optimal solution but also an approximate solution is calculated.

[0028] In addition, the combinatorial optimization problem with a quadratic function of a discrete variable (bit) that takes a value between 0 and 1 as the objective function is called the QUBO (Quadratic Unconstrained Binary Optimization) problem. i ) / 2 operation, the discrete variable (bit) is converted into s i In other words, the QUBO problem can be said to be equivalent to the Ising problem expressed by equation (1). Therefore, the 0-1 combinatorial optimization problem can be transformed into the Ising problem and the solution can be calculated by the Ising machine.

[0029] Ising machines are implemented in hardware using, for example, quantum annealers, coherent Ising machines, and quantum bifurcation machines. Quantum annealers use superconducting circuits to implement quantum annealing. Coherent Ising machines exploit the oscillation phenomenon of a network of optical parametric oscillators. Quantum bifurcation machines exploit the quantum mechanical bifurcation phenomenon in a network of parametric oscillators with the Kerr effect. These hardware-implemented Ising machines have the potential to significantly reduce computation time, but they also present challenges in large-scale and stable operation.

[0030] The Ising problem can also be solved using widely available digital computers. Compared to quantum annealers, coherent Ising machines, and quantum bifurcations, digital computers can be scaled up and used stably. Simulated annealing (SA) is an example of an algorithm used to solve the Ising problem using digital computers. However, because simulated annealing is a sequential update algorithm in which each variable is updated sequentially, it is difficult to achieve high-speed computation through parallelization.

[0031] As an algorithm for solving combinatorial optimization problems, a simulated bifurcation algorithm is proposed in the non-patent literature [Hayato Goto, Kosuke Tatsumura, Alexander R. Dixon, "Combinatorial optimization by simulating adiabatic bifurcations in nonlinear Hamiltonian systems", Science Advances, Vol. 5, 2019.4. 19]. The simulated bifurcation algorithm can use the Ising model to solve large-scale combinatorial optimization problems at high speed through a digital computer. The simulated bifurcation algorithm can also solve large-scale combinatorial optimization problems at high speed through electronic circuits such as CPU (Central Processing Unit), microprocessor, GPU (Graphics Processing Unit), FPGA (Field-Programmable Gate Array), ASIC (Application Specific Integrated Circuit), or their combination circuits.

[0032] (Simulated fork algorithm)

[0033] The simulated bifurcation algorithm uses two variables x corresponding to N elements respectively i and variable y i Sometimes the variable x is also i is called the first variable, and the variable y i It is called the second variable. In the simulated bifurcation algorithm, each of the N elements represents a virtual particle. The N elements correspond to the N spins of the Ising problem. Therefore, the N elements correspond to the N discrete variables (bits) of the combinatorial optimization problem. The variable x i and variable y i are continuous variables represented by real numbers. i The variable y represents the position of the i-th particle among N particles. i represents the momentum of the i-th particle. N represents the number of spins included in the Ising model and is an integer greater than or equal to 2. i represents an arbitrary integer greater than or equal to 1 and less than or equal to N, and represents an index identifying each of the N elements.

[0034] The simulated bifurcation algorithm is used for two variables x with N values ​​respectively. i and variable y i , numerically solve the following simultaneous ordinary differential equations (2).

[0035]

[0036] H is the Hamiltonian of the following formula (3).

[0037]

[0038] The coefficient D is a predetermined constant, equivalent to detuning. The coefficient p(t) corresponds to the pumping amplitude, and its value increases monotonically with the number of updates during the simulation of the bifurcation algorithm. t is a variable representing time. The initial value of the coefficient p(t) can also be set to 0. The coefficient K corresponds to the positive Kerr coefficient.

[0039] f i represents the external force, which is expressed by the following formula (4).

[0040]

[0041] z in formula (4) i The expression in the parentheses in formula (3) is replaced by the variable x i The formula obtained by partial differentiation is: The numbers in the brackets in formula (3) correspond to the energy E of the Ising model Ising .

[0042] c is a coefficient. For example, c can also be a constant determined in advance before performing the calculation. For example, c can also be set to a value close to the inverse of the largest eigenvalue of the J matrix. Alternatively, c can be, for example, 0.5D√(N / 2n). Here, n is the number of edges in the graph involved in the combinatorial optimization problem. In addition, α(t) is a coefficient that increases with p(t). For example, α(t) can also be √(p(t)).

[0043] The simulated bifurcation algorithm can also solve combinatorial optimization problems involving minimizing objective functions involving cubic or greater discrete variables. This is also known as the HOBO (Higher Order Binary Optimization) problem. When solving the HOBO problem, the simulated bifurcation algorithm uses the Ising model, expanded to higher orders.

[0044] The energy in the Ising model after expansion to a higher order is expressed by the following formula (5).

[0045]

[0046] Here, J (n) Represents an n-order tensor.(n) The h representing the local magnetic field in equation (1) is i The notation is generally represented by J, which represents the matrix of the coupling coefficient. For example, J (1) Equivalent to h i .J (n) When multiple subscripts have the same value, the value of the element becomes 0. Although equation (5) expresses up to the third degree, it can also be defined similarly for the fourth degree and above. Equation (5) corresponds to the energy of the Ising model including multi-body interaction.

[0047] When solving the HOBO problem using the simulated bifurcation algorithm, the Hamiltonian H in equation (3) is replaced by equation (6).

[0048]

[0049] In addition, when the simulated bifurcation algorithm is used to solve the HOBO problem, the external force f in formula (4) i is replaced by formula (7).

[0050]

[0051] z in formula (7) i The expression in the parentheses in formula (6) is replaced by the variable x i The formula obtained by partial differentiation is: Ising .

[0052] Furthermore, the simulated bifurcation algorithm is based on the variable x after increasing the value of p(t) from an initial value (eg, 0) to a predetermined value. i The sign of , calculate the spin s i The simulated fork algorithm is used, for example, in x i >0, sgn(x i )=1, at x i <0, sgn(x i )=-1, calculate the spin s i The value of .

[0053] (Simulate the operation of the fork algorithm)

[0054] When solving the QUBO problem, the simulated bifurcation algorithm uses the symplectic Euler method to solve the differential equations given by Equations (2), (3), and (4). When solving the HOBO problem, the simulated bifurcation algorithm uses the symplectic Euler method to solve the differential equations given by Equations (2), (6), and (7).

[0055] Here, when the symplectic Euler method is used, the differential equations given by Equations (2), (3), and (4) and the differential equations given by Equations (2), (6), and (7) are rewritten as discrete recursive equations as shown in Equation (8).

[0056]

[0057] t represents the time. Δt represents the time step (unit time, the time interval between each iteration).

[0058] In the case of executing the analog bifurcation algorithm, a digital computer or an electronic circuit such as an FPGA will use the algorithm of formula (8) to convert two variables x with N values. i and variable y i From the initial moment, the variable x is sequentially i and variable y i Furthermore, digital computers or electronic circuits such as FPGAs use symbolic functions to update the N variables x at the end time. i The value of is binarized and the value of N spins is output.

[0059] In addition, in order to express the corresponding relationship with the differential equation, the time t and the time step Δt are used to express the equation (8). However, when the symplectic Euler method is executed by an electronic circuit such as a digital computer or an FPGA, the algorithm for calculating the equation (8) may not include the time t and the time step Δt as explicit parameters. For example, when the time step Δt is set to 1, the algorithm for calculating the equation (8) may not include the time step Δt. For example, when the time t is not included as an explicit parameter, the algorithm for calculating the equation (8) will be x i (t+Δt) as x i The algorithm of equation (8) uses "t" in equation (8) as a parameter to determine the variable before the update, and "t+Δt" as a parameter to determine the variable after the update. The same applies to the improved algorithm of equation (8) described below.

[0060] (Improved algorithm)

[0061] The inventors invented an algorithm (improved algorithm) that improves the simulated bifurcation algorithm. The improved algorithm further performs the following processing when calculating the differential equation represented by equation (8) using the symplectic Euler method.

[0062] That is, the improved algorithm is in variable x i After the update, the variable x i If the variable x is less than the first value determined in advance, i Change to the first value and set the variable yi Change to the predetermined third value. In addition, the improved algorithm is in the variable x i After the update, the variable x i If the variable x is greater than the second value which is greater than the first value, i Change to the second value and set the variable y i Change to the 3rd value.

[0063] For example, the first value is -1, the second value is +1, and the third value is 0. In this case, the improved algorithm is used in the variable x. i After the update, the variable x i If the variable x is less than -1, i Change to -1 and set the variable y i Change to 0. In addition, the improved algorithm is in the variable x i After the update, the variable x i If it is greater than +1, the variable x i Change to +1 and set the variable y i Change to 0.

[0064] Furthermore, the improved algorithm is to change the variable x i and variable y i After updating, the variable y i The acceleration value calculated by a predetermined operation is added. For example, the acceleration value is the value of the variable y immediately before the previous moment. i (that is, the variable y before updating i ) multiplied by the product (rΔt) of the predetermined coefficient (r) and the unit time (Δt). The predetermined coefficient (r) is, for example, a predetermined constant. Alternatively, the predetermined coefficient may be a value determined based on a random number each time it is updated. When the first value is -1, the second value is +1, and the third value is 0, the predetermined coefficient is, for example, a value greater than 0 and less than 1.

[0065] In addition, “Kx 2 i (t+Δt)” is a variable that prevents the i The improved algorithm changes the variable x to i The value is limited to a range greater than the first value (e.g. -1) and less than the second value (e.g. +1). Therefore, in the calculation, the variable x i Therefore, the improved algorithm can calculate the “Kx 2 i The differential equation after deleting the term (t+Δt)”.

[0066] Therefore, the improved algorithm uses the following formula (9) instead of the algorithm of formula (8) to perform calculations.

[0067]

[0068] In the case of the QUBO problem, z in Equation (9) i (t + Δt) is represented by the following Equation (10).

[0069]

[0070] In the case of the HOBO problem, z in Equation (9) i (t + Δt) is represented by the following Equation (11).

[0071]

[0072] The improved algorithm of the above Equation (9) is the same as Equation (8) and is an algorithm for solving the Hamiltonian equation. The variable y i corresponds to the amount of motion. Therefore, by using the symplectic Euler method, the solution can be stably calculated even without using a small value as the time step Δt.

[0073] In addition, the combinatorial optimization problems that can be solved using the improved algorithm are not limited to the Ising problem, and general combinatorial optimization problems with binary variables can also be solved. For example, the improved algorithm can be applied to a combinatorial optimization problem with binary variables where the variables of the objective function take either a (the first value) or b (the second value) which is greater than a. Also, when calculating the solution of the objective function after a certain number of updates, a binary function f(x i ) with a range of a or b can be used instead of the sign function. The value taken by this function f(x i ) is determined based on the result of comparing the value of the variable x i with a threshold v (a < v < b). For example, if x i < v, then f(x i ) = a. Also, if v < x i , then f(x i ) = b. For example, when x i = v, it becomes f(x i ) = a or f(x i ) = b. The threshold v can be, for example, (a + b) / 2.

[0074] Figure 1 is a graph showing the bifurcation phenomenon of the variable x i when solving an optimization problem using the simulated bifurcation algorithm. When solving an optimization problem using the simulated bifurcation algorithm, as the parameters of the system change, a bifurcation phenomenon occurs where the system changes from a system with only one stable motion state to a system with two stable motion states. As Figure 1 shown, as the bifurcation phenomenon develops, the variable x iIt is concentrated around -1 or +1, but it also extends to areas less than -1 or areas greater than +1.

[0075] Figure 2 is the variable x that represents the case of using the improved algorithm to solve the optimization problem i When the improved algorithm is used to solve the optimization problem, as in the simulated bifurcation algorithm, as the system parameters change, a bifurcation phenomenon occurs, where the system changes from a system with only one stable motion state to a system with two stable motion states. However, the improved algorithm will i Returns -1, whichever is greater than +1 i +1 is returned, so the area with a value less than -1 and a value greater than +1 will not be expanded.

[0076] Figure 3 as well as Figure 4 This is a graph showing the results of the number of cuts versus the number of time steps when the maximum cut problem K2000 is solved 10,000 times using the improved algorithm. Figure 3 Indicates the average number of cuts. Figure 4 Indicates the maximum number of cuts. In addition, Figure 5 It represents the probability of obtaining the maximum number of cuts when the maximum cut problem K2000 is solved 10,000 times using the improved algorithm, that is, the success probability.

[0077] also, Figure 3 、 Figure 4 as well as Figure 5 It represents the result obtained by executing the improved algorithm with D set to 1, K set to 1, c set to 0.9√(1999), r set to 0.5, Δt set to 1.1, and linearly increasing p from 0 to 1. Figure 3 as well as Figure 4 The dotted line Cmax represents the maximum number of cuts known in K2000, which is 33337. Figure 3 as well as Figure 4 It can be seen that the improved algorithm is close to the maximum number of cuts and can accurately solve the optimization problem. In addition, the non-patent literature [H.Goto, K.Endo, M.Suzuki, Y.Sakai, T.Kanao, Y.Hamakawa, R, Hidaka, M.Yamasaki, K.Tatsumura, "High-performance combinatorial optimization based on classical mechanics", Science Advances, 2021.2] records other ways to improve the simulated bifurcation algorithm (bSB, dSB). Figure 3 、 Figure 4 as well as Figure 5 As a comparative example, the results of solving the maximum cut problem K2000 using bSB and dSB with the same parameters are also shown. It can be seen that the improved algorithm can also obtain the same or better results than bSB and dSB. In addition, as Figure 5 As shown, it can be seen that the improved algorithm can achieve a higher success probability compared with bSB and dSB.

[0078] (Functional Structure)

[0079] Figure 6 It is a diagram showing the functional structure of the calculation device 10 according to this embodiment.

[0080] The computing device 10 uses an improved algorithm to solve the optimization problem. The computing device 10 is implemented, for example, by an information processing device such as a computer, a computer system consisting of multiple computers or servers communicating with each other via a network, or a personal computer cluster (PC cluster) in which multiple computers work together to perform information processing. Furthermore, the computing device 10 is implemented by electronic circuits such as a CPU, microprocessor, GPU, FPGA, or ASIC, or a combination thereof.

[0081] The calculation device 10 includes an input unit 12 , an update unit 14 , and an output unit 16 as functional components.

[0082] The input unit 12 receives information (e.g., N, J, h) for defining the objective function of the combinatorial optimization problem and information (x, Δt, T, p(t), α(t)) required for executing the improvement algorithm from an external device and provides them to the update unit 14. The update unit 14 uses the improvement algorithm to update the first variable (x i ) and the second variable (y i ) is associated with each of the multiple elements, and the first variable (x i ) and the second variable (y i ) are updated alternately.

[0083] Then, the output unit 16 generates a first variable (x i ), outputs the solution of the combinatorial optimization problem. For example, the output unit 16 calculates the first variable (x i ) The value of the discrete variable obtained by binarizing the value of the discrete variable using a preset threshold. Then, the output unit 16 outputs the calculated values ​​of the plurality of discrete variables as a solution to the combinatorial optimization problem.

[0084] (Processing Flow)

[0085] Figure 7 1 is a diagram showing a first example of the processing flow of the update unit 14. The update unit 14 performs the following steps, for example: Figure 7 The process shown is executed.

[0086] First, in S101, the updating unit 14 sets parameters. Specifically, the updating unit 14 sets a matrix J containing N×N coupling coefficients and an array h containing N local magnetic field coefficients representing local magnetic fields. In addition, when solving the HOBO problem, the updating unit 14 sets an array containing N×N coupling coefficients instead of J and h. m The m-th tensor of the action coefficient is J (m) . In this case, (m) represents the degree of the variable of the objective function of the HOBO problem. Furthermore, the update unit 14 sets the coefficient D, the coefficient c, Δt representing the unit time, T representing the end time, the function p(t), and the function α(t). p(t) and α(t) are increasing functions that become 0 at t = initial time (for example, 0) and become 1 at t = end time (T). The update unit 14 sets J and h based on the information received from the input unit 12. The update unit 14 may set D, c, Δt, T, p(t), and α(t) based on the parameters received from the input unit 12, or may set predetermined parameters that cannot be changed.

[0087] Next, in S102, the updating unit 14 initializes the variables. Specifically, the updating unit 14 initializes the variable t representing the time to the initial time (for example, 0). Furthermore, the updating unit 14 initializes the N first variables (x1(t) to x N (t)) and N second variables (y1(t) to y N Each of (t)) is substituted with an initial value received from the user, a predetermined fixed value, or a random number.

[0088] Next, the updating unit 14 repeats the loop process between S103 and S118 until t is greater than T. In one loop process, the updating unit 14 updates the N second variables (y1(t+Δt) to y1(t+Δt)) at the target time (t+Δt). N (t+Δt)), calculate the N first variables (x1(t+Δt) to x N (t+Δt)). In addition, in one loop process, the updating unit 14 updates the N first variables (x1(t) to x2(t)) at the immediately previous time (t). N (t)) and the N second variables (y1(t) to y N (t)), calculate the N second variables (y1(t+Δt) to y N (t+Δt)).

[0089] The immediately preceding time (t) is a time that is earlier than the target time (t+Δt) by a unit time (Δt). That is, the updating unit 14 repeats the loop process between S103 and S118, and sequentially updates the N first variables (x1(t) to x1(t)) per unit time (Δt) from the initial time (t=0) to the end time (t=T). N (t)) and N second variables (y1(t)~y N (t))Update.

[0090] In S104, the updating unit 14 stores N second variables (y1(t) to y N (t)). The updating unit 14 updates the N second variables (y1(t) to y N (t)) is used to calculate the acceleration value in S115 described later.

[0091] Next, the updating unit 14 repeats the loop process between S105 and S109 by incrementing i from i=1 to i=N. i is an integer from 1 to N and is an index indicating the processing target among the N elements. Each of the N elements is associated with the first variable (x i (t)) and the second variable (y i (t)) In the loop process between S105 and S109, the updating unit 14 executes the process on the i-th element among the N elements as the target element.

[0092] In S106, the updating unit 14 updates the first variable (x1(t) to x2(t)) at the immediately previous time (t) of each of the N elements. N (t)) and the predetermined action coefficient for each pair of the target element and each of the N elements, calculate the updated value (z i (t)). In the case of the QUBO problem, the action coefficient is the coupling coefficient contained in J and the local magnetic field coefficient contained in h. In the case of the HOBO problem, the action coefficient is contained in J (n) .

[0093] In the case of the QUBO problem, the updating unit 14 calculates equation (12).

[0094]

[0095] In addition, in the case of the HOBO problem, the updating unit 14 calculates equation (13).

[0096]

[0097] Next, in S107, the updating unit 14 updates the update value (z i (t)) is multiplied by the coefficient (c) to calculate the external force (fi (t)). Specifically, the updating unit 14 calculates the formula (14).

[0098] f i (t)=-cz i (t)…(14)

[0099] Next, in S108, the updating unit 14 updates the second variable (y i (t)) plus the external force (f i (t)) and the first variable (x i The second variable (y) of the target element at the target time (t+Δt) is calculated by multiplying the value of the target element at the target time (t+Δt) by the unit time (Δt). i (t+Δt)). Specifically, the updating unit 14 calculates the equation (15).

[0100] y i (t+Δt)=y i (t)+[{-D+p(t)}x i (t)+f i (t)]Δt…(15)

[0101] The updating unit 14 executes the loop process between S105 and S109 N times, and updates the first variable (x1(t) to x2(t)) at the immediately preceding time (t) for each of the N elements. N (t)), the second variable (y i (t+Δt)) is updated. When the loop process between S105 and S109 is executed N times, the updating unit 14 advances the process to S110.

[0102] Next, the updating unit 14 repeats the loop process between S110 and S116 by successively incrementing i from i=1 to i=N. In the loop process between S110 and S116, the updating unit 14 processes the i-th element among the N elements as the target element.

[0103] In S111, the updating unit 14 updates the first variable (x i (t)) plus the second variable (y i The first variable (x) of the target time (t+Δt) of the target element is calculated by multiplying the predetermined constant (D) and the unit time (Δt). i (t+Δt)). Specifically, the updating unit 14 calculates equation (16).

[0104] xi (t+Δt)=x i (t)+Dy i (t+△t)△t…(16)

[0105] Next, in S112, the updating unit 14 determines the first variable (x i (t+Δt)) is greater than or equal to a predetermined first value and less than or equal to a predetermined second value. In this example, the first value is -1 and the second value is +1. For example, the second value is the first variable (x i For example, the first value is a value obtained by reversing the sign of the first value.

[0106] The updating unit 14 updates the first variable (x i If the first variable (x(t+Δt)) is equal to or greater than the first value and equal to or less than the second value (S112: Yes), the process proceeds to S115. i When (t+Δt)) is smaller than the first value or larger than the second value (S112: No), the process proceeds to S113.

[0107] In S113, the updating unit 14 updates the first variable (x i Specifically, the updating unit 14 updates the first variable (x i (t+Δt)) is less than the first value, the first variable (x i (t+Δt)) is changed to the first value. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is greater than the second value, the first variable (x i (t+Δt)) is changed to the second value. In this example, the updating unit 14 changes the first variable (x i (t+Δt)) is less than -1, the first variable (x i (t+Δt)) is changed to -1. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is greater than +1, the first variable (x i (t+Δt)) is changed to +1.

[0108] Following S113, in S114, the updating unit 14 updates the second variable (y iSpecifically, the updating unit 14 updates the second variable (y i (t+Δt)) is changed to a predetermined third value. The third value is, for example, a value greater than the first value and smaller than the second value. In this example, the third value is 0. After completing S114, the updating unit 14 advances the process to S115.

[0109] In S115, the updating unit 14 updates the second variable (y i (t+Δt)) plus the acceleration value calculated by a predetermined operation. For example, the acceleration value is the second variable (y i (t)) multiplied by the product (rΔt) of the predetermined coefficient (r) and the unit time (Δt). The predetermined coefficient (r) is a predetermined constant. For example, the predetermined coefficient (r) is a value greater than 0 and less than 1. In this case, the update unit 14 performs the operation shown in formula (17).

[0110] y i (t+Δt)=y i (t+△t)+{r△t×y i (t)}…(17)

[0111] Furthermore, the predetermined coefficient (r) may be any other value as long as it does not depend on the time (t). For example, the predetermined coefficient (r) may be a value based on a random number within the range of greater than 0 and less than 1. After completing S115, the update unit 14 proceeds to S116.

[0112] The updating unit 14 executes the following processing by executing the loop processing between S110 and S116 N times. That is, the updating unit 14 updates the second variable (y) based on the target time (t+Δt) of the target element for each of the N elements. i (t+Δt)), the first variable (x i (t+Δt)) is updated. Next, the updating unit 14 updates the first variable (x i (t+Δt)) is less than the first value, the first variable (x i (t+Δt)) is changed to the first value. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is greater than the second value, the first variable (x i(t+Δt)) is changed to the second value. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is less than the first value or greater than the second value, the second variable (y i (t+Δt)) is changed to the third value. Furthermore, the updating unit 14 updates the second variable (y) of the target time (t+Δt) of the target element for each of the N elements. i (t+Δt)) plus the second variable (y i The acceleration value obtained by multiplying the predetermined coefficient (r) and the unit time (Δt) by the product (rΔt).

[0113] When the loop process between S110 and S116 is executed N times, the updating unit 14 advances the process to S117 .

[0114] In S117, the updating unit 14 adds the unit time (Δt) to the immediately preceding time (t) to update the target time (t+Δt). In S118, the updating unit 14 repeats the processes from S104 to S117 until t exceeds the end time (T). If t exceeds the end time (T), the updating unit 14 terminates this process.

[0115] Then, the updating unit 14 updates each of the N elements based on the first variable (x i (T)) and calculates the corresponding spin value. For example, the updating unit 14 calculates the first variable (x i When the sign of (T) is negative, the corresponding spin is set to -1, and when the sign is positive, the corresponding spin is set to +1. Furthermore, the updating unit 14 outputs the calculated values ​​of the plurality of spins or the values ​​obtained by converting the calculated values ​​of the plurality of spins into discrete variables as a solution to the combinatorial optimization problem.

[0116] By executing Figure 7 According to the process of the flowchart shown in FIG. 1 , the updating unit 14 sequentially updates the first variable (x ) per unit time from the initial time (t=0) to the end time (t=T) for each of the N elements. i (t+Δt)) and the second variable (y i (t+Δt)) are updated alternately. In addition, by executing Figure 7 According to the process of the flowchart shown in FIG. 1 , the updating unit 14 calculates the second variable (y ) at the target time (t+Δt) for each of the N elements in the updating process per unit time. i(t+Δt)), calculate the first variable (x i (t+Δt)). Furthermore, by executing Figure 7 According to the process of the flowchart shown in FIG. 1 , the updating unit 14 updates the first variable (x ) at the target time (t+Δt) for each of the N elements in the updating process per unit time. i (t+Δt)) before updating, calculate the second variable (y i (t+Δt)), and the first variable (x i (t+Δt)) is updated, the second variable (y i (t+Δt)) plus the acceleration value.

[0117] Based on the above, the updating unit 14 uses the symplectic Euler method to perform calculations according to the improved algorithm, and can calculate the N first variables (x1(t) to x2(t)) at the end time (t=T). N (t)) and N second variables (y1(t)~y N (t)).

[0118] Figure 8 This is a diagram showing a second example of the processing flow of the updating unit 14. When the updating unit 14 solves the optimization problem using the improved algorithm, it may also replace Figure 7 According to the process shown Figure 8 The process shown in the figure is executed. Figure 8 The flowchart of the execution Figure 7 In the flowcharts shown in FIG, substantially the same processing steps are assigned the same step numbers.

[0119] First, in S101 and S102, the updating unit 14 executes Figure 7 Next, the update unit 14 performs the same process as in the first example shown in FIG. Figure 7 The loop processing between S103 and S118 is executed in the same manner as in the first example shown.

[0120] In S104, the updating unit 14 executes Figure 7 The same process as in the first example shown.

[0121] Next, the updating unit 14 repeats the loop process between S110 and S116 by successively incrementing i from i=1 to i=N. In the loop process between S110 and S116, the updating unit 14 processes the i-th element among the N elements as the target element.

[0122] In S111, the updating unit 14 updates the first variable (x i(t)) plus the second variable (y i The first variable (x) of the target element at the target time (t+Δt) is calculated by multiplying the predetermined constant (D) and the unit time (Δt). i Specifically, the updating unit 14 calculates the equation (18).

[0123] x i (t+Δt)=x i (t)+Dy i (t)Δt…(18)

[0124] Next, in S112, the updating unit 14 determines the first variable (x i (t+Δt)) is greater than or equal to a predetermined first value and less than or equal to a predetermined second value. The updating unit 14 updates the first variable (x i If the first variable (x(t+Δt)) is equal to or greater than the first value and equal to or less than the second value (S112: Yes), the process proceeds to S115. i When (t+Δt)) is smaller than the first value or larger than the second value (S112: No), the process proceeds to S113.

[0125] In S113, the updating unit 14 executes Figure 7 The same process as the first example shown in FIG. 1 is performed. Following S113, in S114, the updating unit 14 updates the second variable (y i Specifically, the updating unit 14 updates the second variable (y i (t)) is changed to the third value. After completing S114, the updating unit 14 advances the process to S115.

[0126] In S115, the updating unit 14 updates the second variable (y i (t)) plus the acceleration value calculated by a predetermined operation. For example, the acceleration value is the second variable (y') immediately before the constraint processing. i (t)) is multiplied by the product (rΔt) of the predetermined coefficient (r) and the unit time (Δt). The updating unit 14 stores in advance the second variable (y') at the time immediately before the constraint process in S104. i (t)). For example, the updating unit 14 performs the operation shown in equation (19).

[0127] y i(t) = y i (t)+{r△t×y′ i (t)}…(19)

[0128] After completing S115, the updating unit 14 advances the process to S116. The updating unit 14 executes the following process by executing the loop process between S110 and S116 N times.

[0129] That is, the updating unit 14 updates each of the N elements based on the second variable (y i (t)), the first variable (x i (t+Δt)) is updated. Next, the updating unit 14 updates the first variable (x i (t+Δt)) is less than the first value, the first variable (x i (t+Δt)) is changed to the first value. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is greater than the second value, the first variable (x i (t+Δt)) is changed to the second value. In addition, the updating unit 14 changes the first variable (x i (t+Δt)) is less than the first value or greater than the second value, the second variable (y i (t)) is changed to the third value. Furthermore, the updating unit 14 updates the second variable (y) at the time immediately before the target element (t) for each of the N elements. i (t)) plus the second variable (y) of the target element immediately before the constraint process i The acceleration value obtained by multiplying the predetermined coefficient (r) and the unit time (Δt) by the product (rΔt).

[0130] When the loop process between S110 and S116 is executed N times, the updating unit 14 advances the process to S105 .

[0131] Next, the updating unit 14 increments i by 1 from i=1 to i=N and repeats the loop process between S105 and S109 .

[0132] In S106, the updating unit 14 updates the first variable (x1(t+Δt) to x2(t+Δt)) based on the target time (t+Δt) of each of the N elements.N (t+Δt)) and the predetermined action coefficient for each pair of the target element and each of the N elements, and calculate the updated value (z i (t+Δt)).

[0133] In the case of the QUBO problem, the updating unit 14 calculates equation (20).

[0134]

[0135] In addition, in the case of the HOBO problem, the updating unit 14 calculates equation (21).

[0136]

[0137] Next, in S107, the updating unit 14 updates the update value (z i (t+Δt)) is multiplied by the coefficient (c) to calculate the external force (f i (t+Δt). Specifically, the updating unit 14 calculates equation (22).

[0138] f i (t+Δt)=-cz i (t+Δt)…(22)

[0139] Next, in S108, the updating unit 14 updates the second variable (y i (t)) plus the external force (f i (t+Δt)) and the first variable (x i The second variable (y) of the target element at the target time (t+Δt) is calculated by multiplying the value of the target element at the target time (t+Δt) by the unit time (Δt). i (t+Δt)). Specifically, the updating unit 14 calculates equation (23).

[0140] y i (t+Δt)=y i (t)+[(-D+p(t+Δt)}x i (t+Δt)+f i (t+Δt)]Δt…(23)

[0141] The updating unit 14 executes the loop process between S105 and S109 N times, and updates the first variable (x1(t+Δt) to x2(t+Δt)) based on the target time (t+Δt) for each of the N elements. N (t+Δt)), the second variable (y i (t+Δt)) is updated.

[0142] When the loop process between S105 and S109 is executed N times, the updating unit 14 advances the process to S117 .

[0143] In S117, the updating unit 14 adds the unit time (Δt) to the immediately preceding time (t) to update the target time (t+Δt). In S118, the updating unit 14 repeats the processes from S104 to S117 until t exceeds the end time (T). If t exceeds the end time (T), the updating unit 14 terminates this process.

[0144] Then, the updating unit 14 updates each of the N elements based on the first variable (x i (T)) and calculate the corresponding spin value.

[0145] By executing Figure 8 According to the process of the flowchart shown in FIG. 1 , the updating unit 14 sequentially updates the first variable (x ) per unit time from the initial time (t=0) to the end time (t=T) for each of the N elements. i (t+Δt)) and the second variable (y i (t+Δt)) are updated alternately. In addition, by executing Figure 8 In the process of the flowchart shown in FIG. 1 , the updating unit 14 calculates the first variable (x t) at the target time (t+Δt) for each of the N elements in the updating process per unit time. i (t+Δt)), calculate the second variable (y i (t+Δt)). Furthermore, by executing Figure 8 In the process of the flowchart shown in FIG. 1 , the updating unit 14 updates the first variable (x i (t+Δt)) and the second variable (y i (t+Δt)) before updating the second variable (y i (t)) plus the acceleration value.

[0146] Based on the above, the updating unit 14 uses the symplectic Euler method to perform calculations according to the improved algorithm, and can calculate the N first variables (x1(t) to x2(t)) at the end time (t=T). N (t)) and N second variables (y1(t)~y N (t)).

[0147] In addition, the update unit 14 performs the processing of S110 to S116 on each of the N elements. The update unit 14 can also cause M1 (M1 is an integer greater than 2 and less than N) processing circuits, processors, computers or servers and other arithmetic processing devices to perform these processes in parallel. For example, M1 is a divisor of N. In this case, each of the N elements corresponds to any one of the M1 arithmetic processing devices. Moreover, each of the M1 arithmetic processing devices performs the processing of S110 to S116 for the corresponding element in the N elements. By performing the processing in this way, the update unit 14 can cause multiple circuits such as FPGAs to perform these processes in a dispersed (distributed) manner and obtain the processing results at a high speed.

[0148] Furthermore, the update unit 14 also performs the processing of S105 to S109 for each of the N elements. The update unit 14 can also cause M2 processing circuits, processors, computers, or servers, etc., to perform these processes in parallel. For example, M2 is a divisor of N. In this case, each of the N elements corresponds to any one of the M2 processing devices. Moreover, each of the M2 processing devices performs the processing of S105 to S109 for the corresponding element among the N elements. By performing the processing in this way, the update unit 14 can cause multiple circuits such as FPGAs to perform these processes in a distributed manner and obtain processing results at a high speed.

[0149] (Calculation Circuit)

[0150] Figure 9 FIG. 1 is a diagram showing a block structure when the updating unit 14 is circuitized. When the updating unit 14 is circuitized, as an example, Figure 9 In addition, Figure 9 In the description of , the immediately previous time is represented as t1. In addition, the target time is represented as t2.

[0151] Figure 9 The updating unit 14 shown executes the improved algorithm shown in equations (9) and (10). The updating unit 14 includes an X memory 66 , a Y memory 67 , an action operation circuit 68 , an updating circuit 69 , and a control circuit 70 .

[0152] The X memory 66 stores N first variables (x i (t1)). As the time is updated, the N first variables (x i (t1)) is rewritten. That is, when calculating the N first variables (x i (t2)), the N first variables (x i(t2)) as the new N first variables (x i (t1)) and written into the X memory 66. The control circuit 70 first sets the N first variables x at the initial time before the operation. i Write to X memory 66.

[0153] The Y memory 67 stores N second variables (y i (t1)). As the time is updated, the N second variables (y i (t1)) is rewritten. That is, when calculating the N second variables (y i (t2)), the N second variables (y i (t2)) as the new N second variables (y i (t1)) and written into the Y memory 67. The control circuit 70 first sets the N second variables y at the initial time before the operation. i Write to Y memory 67.

[0154] The action calculation circuit 68 obtains N first variables (x j (t1)). Then, the action calculation circuit 68 calculates the update value (z i (t1)).

[0155] The updating circuit 69 obtains the updated value (z i (t1)). Furthermore, the updating circuit 69 obtains the first variable (x) at the immediately previous time (t1) from the X memory 66 for each of the N elements. i (t1)), the second variable (y immediately before the previous time (t1) is obtained from the Y memory 67. i (t1)). Then, the updating circuit 69 calculates the first variable (x i (t2)), and the first variable (x i At the same time, the updating circuit 69 calculates the second variable (y) at the target time (t2) for each of the N elements. i (t2)), and the second variable (y i (t1)) rewrite.

[0156] The control circuit 70 updates the target time (t2) every unit time (Δt), thereby causing the operation circuit 68 and the update circuit 69 to sequentially calculate the first variable (x i (t)) and the second variable (y i (t)).

[0157] Furthermore, the control circuit 70 generates an index (i) by incrementing from 1 to N, thereby causing the action operation circuit 68 and the update circuit 69 to calculate the first variable (x) at the target time (t2) corresponding to each of the N elements in the order of the index. i (t2)) and the second variable (y i (t2)). In addition, the action calculation circuit 68 and the update circuit 69 may calculate a plurality of first variables (x i (t2)) and multiple second variables (y i (t2)).

[0158] The action calculation circuit 68 includes a J memory 71 , an H memory 72 , a matrix calculation circuit 73 , an α function circuit 74 , and a first adding circuit 75 .

[0159] The J memory 71 stores an N×N matrix containing (N×N) coupling coefficients. i,j J represents the coupling coefficient of the i-th row and j-th column contained in the matrix. i,j The control circuit 70 writes a matrix generated in advance by a user or the like into the J memory 71 before performing calculations.

[0160] The H memory 72 stores an array containing N local magnetic field coefficients. i Indicates the i-th local magnetic field coefficient contained in the array. h i represents the local magnetic field acting on the i-th spin in the Ising model corresponding to the combinatorial optimization problem. The control circuit 70 writes an array pre-generated by the user or the like into the H memory 72 before the calculation.

[0161] The matrix operation circuit 73 obtains N first variables (x j (t1)) The matrix operation circuit 73 obtains N coupling coefficients J included in the target row from the J memory 71 for each of the N elements. i,j Furthermore, the matrix operation circuit 73 performs the N first variables (x j (t1)) and the N coupling coefficients J included in the target rowi,j The multiplication and accumulation operation.

[0162] The α function circuit 74 obtains the local magnetic field coefficient h of the object from the H memory 72 for each of the N elements. i The α function circuit 74 executes {-h i α(t1)}. α(t) is a pre-set function.

[0163] The first adding circuit 75 adds the product-and-accumulate operation result obtained by the matrix operation circuit 73 to the operation result obtained by the α function circuit 74 for each of the N elements. Through this operation, the first adding circuit 75 outputs the updated value (z) at the immediately preceding time (t1) expressed by equation (24) for each of the N elements. i (t1)).

[0164]

[0165] Update circuit 69 includes a first multiplication circuit 79, a P function circuit 80, a second multiplication circuit 81, a second addition circuit 82, a third multiplication circuit 83, a third addition circuit 84, a pre-constraint Y memory 85, a fourth multiplication circuit 86, a fourth addition circuit 87, a determination circuit 91, an X constraint circuit 92, a Y constraint circuit 93, an acceleration value calculation circuit 94, and an acceleration value addition circuit 95.

[0166] The first multiplication circuit 79 multiplies the update value (z i (t1)) is multiplied by -c as a coefficient. The P function circuit 80 performs the operation {-D + p(t1)} for each of the N elements. The second multiplication circuit 81 obtains the first variable (x) immediately before the previous time (t1) from the X memory 66 for each of the N elements. i (t1)). Then, the second multiplication circuit 81 multiplies the first variable (x i (t1)) is multiplied by the calculation result of the P function circuit 80.

[0167] The second adding circuit 82 adds, for each of the N elements, the calculation result of the first multiplying circuit 79 and the calculation result of the second multiplying circuit 81. The third multiplying circuit 83 multiplies the calculation result of the second adding circuit 82 by Δt, which is the unit time.

[0168] The third adding circuit 84 obtains the second variable (y) immediately before the previous time (t1) from the Y memory 67 for each of the N elements. i (t1)). The third adding circuit 84 adds the second variable (yi (t1)) is added to the calculation result of the third multiplication circuit 83. Through this calculation, the third addition circuit 84 outputs the second variable (y) at the target time (t2) expressed by equation (25) for each of the N elements. i (t2)).

[0169] y i (t2) = y i (t1)+[{-D+p(t1)}x(t1)-cz i (t1)]Δt…(25)

[0170] Then, the third adding circuit 84 adds the second variable (y) at the target time (t2) of each of the calculated N elements. i (t2)) is written into the pre-constraint Y memory 85. The pre-constraint Y memory 85 stores the N second variables (y) at the target time (t2) before being constrained by the Y constraint circuit 93. i (t2)).

[0171] The fourth multiplication circuit 86 obtains the second variable (y) before constraint at the target time (t2) from the before constraint Y memory 85 for each of the N elements. i (t2)). The fourth multiplication circuit 86 multiplies the second variable (y) before the constraint at the target time (t2) by N elements. i (t2)) multiplied by {DΔt}.

[0172] The fourth adding circuit 87 obtains the first variable (x t1) immediately before the previous time (t1) from the X memory 66 for each of the N elements. i (t1)). The fourth adding circuit 87 adds the first variable (x i (t1)) is added to the calculation result of the fourth multiplication circuit 86. Through this calculation, the fourth addition circuit 87 outputs the first variable (x) at the target time (t2) represented by the formula (26) for each of the N elements. i (t2)).

[0173] x i (t2) = x i (t1)+Dy i (t2)△t…(26)

[0174] The determination circuit 91 determines the first variable (x i(t2)) is greater than or equal to a predetermined first value and less than or equal to a predetermined second value. For example, the first value is -1. The second value is +1. The determination circuit 91 determines whether the first variable (x) at the target time (t2) is greater than or equal to a predetermined first value and less than or equal to a predetermined second value. For example, the first value is -1. The second value is +1. i When (t2)) is smaller than the first value or larger than the second value, an enable signal (EN) is given to the X constraint circuit 92 and the Y constraint circuit 93.

[0175] The X constraint circuit 92 receives the first variable (x) at the target time (t2) calculated by the fourth adding circuit 87 for each of the N elements. i (t2)). For each of the N elements, the X constraint circuit 92 sets the first variable (x) at the target time (t2) calculated by the fourth adding circuit 87 to the first variable (x) when no enable signal (EN) is received from the determination circuit 91. i (t2)) is written into the X memory 66 as it is.

[0176] When receiving the enable signal (EN) from the determination circuit 91, the X constraint circuit 92 adjusts the first variable (x) at the target time (t2) calculated by the fourth addition circuit 87 for each of the N elements. i (t2)) performs constraint processing, and the first variable (x i (t2)) is written into the X memory 66.

[0177] As a constraint process, the X constraint circuit 92 sets the first variable (x i If the first variable (x(t2)) at the target time (t2) is less than the first value (e.g., -1), the first variable (x(t2)) at the target time (t2) is i (t2)) is changed to the first value (eg -1). As a constraint process, the X constraint circuit 92 changes the first variable (x) at the target time (t2) to the first value (eg -1). i (t2)) is greater than the second value (e.g., +1), the first variable (x i (t2)) is changed to the second value (for example, +1).

[0178] The Y constraint circuit 93 obtains the second variable (y) at the target time (t2) from the pre-constraint Y memory 85 for each of the N elements. i (t2)). For each of the N elements, the Y constraint circuit 93 sets the second variable (y) of the target time (t2) obtained from the pre-constraint Y memory 85 to i (t2)) is output as is.

[0179] When receiving the enable signal (EN) from the determination circuit 91, the Y constraint circuit 93 constrains the second variable (y) at the target time (t2) obtained from the pre-constraint Y memory 85 for each of the N elements. i (t2)) performs constraint processing, and the second variable (y i (t2)) output.

[0180] Here, as a constraint process, the Y constraint circuit 93 sets the second variable (y i (t2)) is changed to a third value (for example, 0). As a constraint process, the Y constraint circuit 93 may also change the second variable (y i (t2)) is changed to a random value greater than or equal to the first value and less than or equal to the second value.

[0181] The acceleration value calculation circuit 94 obtains the second variable (y) at the immediately previous time (t1) from the Y memory 67 for each of the N elements. i (t1)). In addition, the acceleration value calculation circuit 94 receives a predetermined coefficient (r) from the control circuit 70 before the calculation. For example, the predetermined coefficient (r) is a value greater than 0 and less than 1. Then, the acceleration value calculation circuit 94 calculates the second variable (y) at the time immediately before the previous time (t1) for each of the N elements. i (t1)) is multiplied by the product (rΔt) of a predetermined coefficient (r) and the unit time (Δt) to calculate the acceleration value.

[0182] The acceleration value adding circuit 95 obtains the second variable (y) at the target time (t2) from the Y constraint circuit 93 for each of the N elements. i (t2)) In addition, the acceleration value adding circuit 95 obtains the acceleration value (rΔt×(y i (t1))). The acceleration value adding circuit 95 calculates the second variable (y) at the target time (t2) for each of the N elements. i (t2)) plus the acceleration value (rΔt×(y i (t1))). Furthermore, the acceleration value adding circuit 95 adds the acceleration value (rΔt×(y i The second variable (y) at the target time (t2) of (t1))) i (t2)) is written into Y memory 67.

[0183] Based on the above, the updating unit 14 can execute the improved algorithm of formula (9) to calculate the N first variables (x i (T)) and N second variables (y i (T)).

[0184] Furthermore, the updating unit 14 calculates the second variable (y i (t2)) and calculate the first variable (x i (t2)). Alternatively, the updating unit 14 may calculate the first variable (x i (t2)) and calculate the second variable (y i (t2)).

[0185] In this case, the pre-constraint Y memory 85 stores N second variables (y i (t1)). Furthermore, the fourth adding circuit 87 outputs the first variable (x) at the target time (t2) expressed by the equation (27) for each of the N elements. i (t2)).

[0186] x i (t2) = x i (t1)+Dy i (t1)Δt…(27)

[0187] The matrix operation circuit 73 obtains N first variables (x j (t2)). Then, the first adding circuit 75 outputs the updated value (z) of the target time (t2) expressed by equation (28) for each of the N elements. i (t2)).

[0188]

[0189] Furthermore, the first multiplication circuit 79 multiplies the update value (z i (t2)) is multiplied by -c. The P function circuit 80 performs the operation {-D + p(t2)} for each of the N elements. The second multiplication circuit 81 multiplies the first variable (x) immediately before the previous time (t2) by -c. i (t2)) is multiplied by the calculation result of the P function circuit 80.

[0190] Furthermore, the third adding circuit 84 outputs the second variable (y) at the target time (t2) expressed by equation (29) for each of the N elements. i (t2)).

[0191] y i (t2) = y i (t1)+[{-D+p(t2)}xi (t2)-cz i (t2)]△t…(29)

[0192] By performing such processing, the updating unit 14 can also execute the improved algorithm to calculate the N first variables (x i (T)) and N second variables (y i (T)).

[0193] Furthermore, the updating circuit 69 performs the following operations on each of the N elements: i (t1)) the first variable (x i (t1)) update X update process; the first variable (x i (t2)) is changed to the first or second value X constraint processing: the second variable (y i (t2)) is changed to the Y constraint processing of the third value; and the second variable (y i (t2)) plus the acceleration value (rΔt×(y i (t1))) acceleration value addition processing. Update circuit 69 can also execute these processes in parallel using M1 processing circuits. In this case, each of the N elements corresponds to one of the M1 processing circuits. Furthermore, each of the M1 processing circuits performs X update processing, X constraint processing, Y constraint processing, and acceleration value addition processing on the corresponding element among the N elements. By executing these processes in this way, update circuit 69 distributes these processes across multiple processing circuits, enabling high-speed processing results.

[0194] Furthermore, the action calculation circuit 68 calculates the update value (z i (t1)). The action operation circuit 68 can also make M2 processing circuits execute the update value (z in parallel) i (t1)) is calculated. In this case, each of the N elements corresponds to one of the M2 processing circuits. Furthermore, each of the M2 processing circuits executes an update value (z) for the corresponding element among the N elements. i (t1)) is calculated. When the action operation circuit 68 is parallelized, the parallelism of the matrix operation circuit 73, the parallelism of the α function circuit 74, and the parallelism of the first addition circuit 75 may be different, or only the matrix operation circuit 73 may be parallelized. By executing the processing in this way, the action operation circuit 68 causes the multiple processing circuits to execute the update value (z) in a distributed manner. i In particular, by parallelizing the matrix operation circuit 73, the action operation circuit 68 can efficiently execute a large amount of multiplication and addition processing associated with matrix operations.

[0195] (System Configuration)

[0196] Figure 10 1 is a diagram showing the configuration of the information processing system 100. The improved algorithm can be, for example, Figure 10 The information processing system 100 shown in FIG. 1 is thus capable of solving large-scale combinatorial optimization problems at high speed through parallel processing.

[0197] Information processing system 100 includes a management server 101, a network 102, multiple computing servers 103 (103a-103c) (information processing devices), multiple cables 104 (104a-104c), and a switch 105. Furthermore, terminal devices 106 are capable of communicating with information processing system 100. Management server 101, multiple computing servers 103 (103a-103c), and terminal devices 106 communicate data with each other via network 102. Network 102 is, for example, the Internet, which interconnects multiple computer networks. Network 102 may also be wired, wireless, or a combination thereof as a communication medium.

[0198] In addition, multiple computing servers 103 (103a~103c) are respectively connected to the switch 105 via cables 104 (104a~104c). Multiple cables 104 (104a~104c) and the switch 105 form the interconnection between the computing servers 103 and the computing servers 103. Multiple computing servers 103 (103a~103c) can also communicate data with each other via the interconnection. The switch 105 is, for example, an Infiniband switch. The cables 104a~104c are, for example, Infiniband cables. However, the switch 105 and the cable 104 may also be switches / cables of a wired LAN (local area network). There is no particular limitation on the communication standards and communication protocols used by the cables 104 and the switch 105. The terminal device 106 is, for example, a laptop computer, a desktop computer, a smartphone, a tablet computer, or a vehicle-mounted terminal device.

[0199] The process of solving the combinatorial optimization problem using the improved algorithm can be executed in parallel and distributedly. Therefore, each of the multiple computing servers 103 (103a-103c) and / or the processors of the computing servers 103 (103a-103c) can share and execute part of the computational processing steps in the process of solving the combinatorial optimization problem using the improved algorithm, or can execute the same computational processing for different variables in parallel. In this case, the management server 101, for example, converts the combinatorial optimization problem input by the user into a form that can be processed by each computing server 103 and causes each computing server 103 to execute it. In addition, the management server 101 obtains the computation results from each computing server 103 and converts the integrated computation results into a solution to the combinatorial optimization problem.

[0200] exist Figure 10 3 computing servers 103 (103a to 103c) are shown in FIG. However, the number of computing servers 103 included in the information processing system 100 is not limited to 3. For example, the information processing system 100 may include 1, 2, or 4 or more computing servers. In addition, the information processing system 100 may use a portion of the multiple computing servers 103 included to perform the solution process of the combinatorial optimization problem. The computing server 103 may be any type of information processing device. For example, the computing server 103 may be a server located in a data center or a desktop computer located in an office. In addition, the computing server 103 may also be a variety of computers located in different places. For example, the computing server 103 may be a general-purpose computer or a dedicated electronic circuit or a combination thereof.

[0201] Figure 11 This figure shows the configuration of the management server 101. The management server 101 is, for example, a computer including a central processing unit (CPU) and memory. The management server 101 includes a processor 110, a storage unit 114, a communication circuit 115, an input circuit 116, and an output circuit 117. The processor 110, the storage unit 114, the communication circuit 115, the input circuit 116, and the output circuit 117 are connected to each other via a bus 120. The processor 110 includes a management unit 111, a conversion unit 112, and a control unit 113 as its internal functional components.

[0202] The processor 110 is an electronic circuit that performs calculations and controls the management server 101. The processor 110 can be, for example, a CPU, a microprocessor, an ASIC, an FPGA, a PLD, or a combination thereof. The management unit 111 provides an interface for operating the management server 101 via the user's terminal device 106. The interface provided by the management unit 111 can be, for example, an API, a CLI, or a webpage. For example, users can use the management unit 111 to input information related to the combinatorial optimization problem and browse and / or download the calculated solution to the combinatorial optimization problem. The conversion unit 112 inputs parameters related to the combinatorial optimization problem and converts the input parameters into a format that can be processed by each computation server 103. The control unit 113 sends control instructions to each computation server 103. After the control unit 113 obtains the calculation results from each computation server 103, the conversion unit 112 integrates the multiple calculation results, converts them into a solution to the combinatorial optimization problem, and outputs the solution to the combinatorial optimization problem.

[0203] The storage unit 114 stores programs for the management server 101 and various data, including data required to execute the programs and data generated by the programs. Programs include both an operating system (OS) and application programs. The storage unit 114 can also be volatile memory, non-volatile memory, or a combination thereof. Examples of volatile memory include DRAM and SRAM. Non-volatile memory includes NAND flash memory, NOR flash memory, ReRAM, or MRAM. Furthermore, the storage unit 114 can also be a hard disk, optical disk, magnetic tape, or external storage device.

[0204] The communication circuit 115 transmits and receives data to and from each device connected to the network 102. For example, the communication circuit 115 is a NIC (Network Interface Card) for a wired LAN. However, the communication circuit 115 may also be another type of communication circuit, such as a wireless LAN. The input circuit 116 enables data input to the management server 101. The input circuit 116 includes, for example, a USB, PCI-Express, or the like as an external port. An operating device 118 is connected to the input circuit 116. The operating device 118 is a device used by a user to input information to the management server 101. The operating device 118 is, for example, a keyboard, a mouse, a touch panel, a voice recognition device, etc., but is not limited to these. The output circuit 117 enables data output from the management server 101. The output circuit 117 includes, for example, HDMI (registered trademark) or DisplayPort as an external port. For example, a display device 119 is connected to the output circuit 117. The display device 119 is, for example, an LCD (liquid crystal display), an organic EL (organic electroluminescence) display, or a projector, but is not limited to these.

[0205] The administrator can use the operating device 118 and the display device 119 to perform maintenance on the management server 101. Alternatively, the operating device 118 and the display device 119 may be embedded in the management server 101. Furthermore, the operating device 118 and the display device 119 may not be connected to the management server 101. For example, the administrator may use a terminal device capable of communicating with the network 102 to perform maintenance on the management server 101.

[0206] Figure 12 This diagram shows the data stored in the storage unit 114 of the management server 101. Storage unit 114 stores, for example, problem data 114A, calculation data 114B, management program 114C, conversion program 114D, and control program 114E. For example, problem data 114A includes data for a combinatorial optimization problem. For example, calculation data 114B includes calculation results collected from each calculation server 103. For example, management program 114C implements the functions of management unit 111. For example, conversion program 114D implements the functions of conversion unit 112. For example, control program 114E implements the functions of control unit 113.

[0207] Figure 13 103a. The other calculation servers 103 may have the same configuration as the calculation server 103a or may have a different configuration from the calculation server 103a.

[0208] The calculation server 103a includes, for example, a communication circuit 131, a shared memory 132, processors 133a to 133d, a storage 134, and a host bus adapter 135. The communication circuit 131, shared memory 132, processors 133a to 133d, a storage 134, and the host bus adapter 135 are interconnected via a bus 136.

[0209] The communication circuit 131 transmits and receives data to and from each device connected to the network 102. The communication circuit 131 is, for example, a NIC (Network Interface Card) for a wired LAN. However, the communication circuit 131 may also be another type of communication circuit, such as a wireless LAN. The shared memory 132 is a memory accessible from the processors 133a to 133d. The shared memory 132 is, for example, a volatile memory such as a DRAM or SRAM. The shared memory 132 may also include other types of memory, such as a non-volatile memory. The processors 133a to 133d share data via the shared memory 132. In addition, the shared memory 132 may not be composed of all the memories of the computing server 103a. For example, a portion of the memory of the computing server 103a may be a local memory that is accessible only from one of the processors 133a to 133d.

[0210] The processors 133a to 133d are electronic circuits that perform computational processing. The processors 133a to 133d may be, for example, any one of a CPU, a GPU, an FPGA, and an ASIC, or a combination thereof. In addition, the processors 133a to 133d may also be CPU cores or CPU threads. When the processors 133a to 133d are CPUs, the number of sockets provided by the computing server 103a is not particularly limited. In addition, the processors 133a to 133d may also be connected to other components of the computing server 103a via a bus such as PCI Express.

[0211] exist Figure 13 In the example of FIG, the calculation server 103a includes four processors 133a to 133d. However, the number of processors included in one calculation server 103a is not limited to four.

[0212] Storage 134 stores programs for computing server 103a and various data, including data required for program execution and data generated by the programs. Programs here include both operating systems and application programs. Storage 134 can also be volatile memory, non-volatile memory, or a combination thereof. Examples of volatile memory include DRAM or SRAM. Examples of non-volatile memory include NAND flash memory, NOR flash memory, ReRAM, or MRAM. Storage 134 can also include a hard disk, optical disk, magnetic tape, or external storage device.

[0213] The host bus adapter 135 enables data communication with other computing servers 103. The host bus adapter 135 is connected to the switch 105 via the cable 104a. For example, the host bus adapter 135 is a host channel adapter (HCA). The high-throughput interconnection formed by the host bus adapter 135, the cable 104a, and the switch 105 can increase the speed of parallel computing processing.

[0214] Figure 14This diagram shows the data stored in storage 134. Storage 134 stores, for example, calculation data 134A, calculation programs 134B, and control programs 134C. Calculation data 134A includes data or calculation results from the calculation process of calculation server 103a. At least a portion of calculation data 134A may be stored in different storage hierarchies, such as shared memory 132, processor cache, or processor registers. Calculation program 134B implements calculation processing in each processor 133 and saves data to shared memory 132 and storage 134. Control program 134C controls calculation server 103a based on instructions sent from control unit 113 of management server 101 and transmits calculation results from calculation server 103a to management server 101.

[0215] The calculation server 103 a executes a program for the processors 133 a to 133 d to solve the combinatorial optimization problem. The program causes the calculation server 103 a to function as the input unit 12 , the update unit 14 , and the output unit 16 .

[0216] This information processing system 100 can be used as a personal computer cluster. A personal computer cluster connects multiple computers to achieve computing performance that cannot be achieved by a single computer. By using, for example, the MPI (Message Passing Interface), information processing system 100 can perform parallel computing even when memory is distributed across multiple computing servers 103.

[0217] Furthermore, the information processing system 100 may also include multiple GPUs connected by a high-speed link. In this case, each of the multiple GPUs executes the same processing as the computing server 103 .

[0218] The present invention is not limited to the above-mentioned embodiments in their entirety. During the implementation stage, the constituent elements may be deformed and concretized within the scope of the gist thereof. In addition, various inventions can be formed by appropriately combining the multiple constituent elements disclosed in the above-mentioned embodiments. For example, several constituent elements may be deleted from all the constituent elements shown in the embodiments. Furthermore, constituent elements related to different embodiments may be appropriately combined.

[0219] (Technical Solution)

[0220] In addition, the above-mentioned implementation methods can be summarized into the following technical solutions.

[0221] Technical Solution 1

[0222] A computing device for solving combinatorial optimization problems, comprising:

[0223] an updating unit that alternately updates the first variable and the second variable in sequence per unit time from an initial time to an end time for each of a plurality of elements associated with the first variable and the second variable; and

[0224] an output unit that outputs a solution to the combinatorial optimization problem based on the first variable of each of the plurality of elements at the end time;

[0225] The multiple elements correspond to multiple discrete variables of the combinatorial optimization problem,

[0226] The first variable and the second variable are respectively represented by real numbers,

[0227] In the updating process per unit time, the updating unit updates each of the plurality of elements.

[0228] updating the first variable based on the second variable,

[0229] When the first variable is smaller than a predetermined first value, the first variable is changed to the first value, and the second variable is changed to a predetermined third value.

[0230] When the first variable is larger than a predetermined second value that is larger than the first value, the first variable is changed to the second value, and the second variable is changed to the third value.

[0231] An acceleration value calculated by a predetermined operation is added to the second variable.

[0232] Technical Solution 2

[0233] According to the computing device described in technical solution 1,

[0234] In the updating process per unit time, the updating unit updates each of the plurality of elements.

[0235] Before updating the first variable, update the second variable.

[0236] After the first variable is updated, the acceleration value is added to the second variable.

[0237] Technical Solution 3

[0238] According to the computing device described in technical solution 1,

[0239] In the updating process per unit time, the updating unit updates each of the plurality of elements.

[0240] After updating the first variable, update the second variable.

[0241] After the first variable is updated and before the second variable is updated, the acceleration value is added to the second variable.

[0242] Technical Solution 4

[0243] The computing device according to any one of technical solutions 1 to 3,

[0244] The output portion,

[0245] For each of the plurality of elements at the end time, a value of a discrete variable obtained by binarizing the first variable using a preset threshold is calculated;

[0246] The calculated values ​​of the plurality of discrete variables are output as a solution to the combinatorial optimization problem.

[0247] Technical Solution 5

[0248] The computing device according to any one of technical solutions 1 to 4,

[0249] The acceleration value is a value obtained by multiplying the corresponding second variable at the immediately previous time by the product of a predetermined coefficient and the unit time.

[0250] Technical Solution 6

[0251] According to the computing device described in technical solution 5,

[0252] The predetermined coefficient is a predetermined constant.

[0253] Technical Solution 7

[0254] According to the computing device described in technical solution 5,

[0255] The predetermined coefficient is a value determined based on a random number.

[0256] Technical Solution 8

[0257] The computing device according to any one of technical solutions 1 to 7,

[0258] The first value is -1, the second value is +1, and the third value is 0.

[0259] Technical Solution 9

[0260] The computing device according to any one of technical solutions 1 to 8,

[0261] Each of the plurality of elements corresponds to any one of the plurality of processing circuits,

[0262] Each of the multiple processing circuits performs, for a corresponding element among the multiple elements, processing of updating the first variable based on the second variable, processing of changing the first variable to the first value or the second value, processing of changing the second variable to the third value, and processing of adding the acceleration value to the second variable.

[0263] Technical Solution 10

[0264] A computing device according to any one of technical solutions 1 to 9,

[0265] In the update processing per unit time, the update unit calculates the first variable at the object time for each of the multiple elements by adding the value obtained by multiplying the second variable by a predetermined constant and the unit time to the first variable at the immediately preceding moment that is a unit time earlier than the object time.

[0266] Technical Solution 11

[0267] According to the computing device described in technical solution 10,

[0268] In the updating process per unit time, the updating unit updates each of the plurality of elements.

[0269] external force is calculated based on the first variable of each of the plurality of elements and a predetermined action coefficient for each pair of the target element and each of the plurality of elements;

[0270] The second variable at the target time is calculated by adding a value obtained by multiplying a value determined based on the external force and the first variable by the unit time to the second variable at the immediately previous time.

[0271] Technical Solution 12

[0272] According to the computing device described in technical solution 11,

[0273] The combinatorial optimization problem contains N discrete variables,

[0274] The updating unit calculates the first variable at the target time of the i-th element corresponding to the i-th discrete variable among the N discrete variables according to equation (101) or equation (102),

[0275] x i (t+Δt)=x i (t)+Dy i (t)Δt…(101)

[0276] x i (t+Δt)=x i(t)+Dy i (t+Δt)Δt…(102)

[0277] N is an integer greater than or equal to 2, i is an arbitrary integer from 1 to N, D is the constant, Δt is the unit time, t is the immediately preceding time, t+Δt is the target time, and x i (t) is the first variable at the immediately preceding moment of the i-th element, y i (t) is the second variable at the immediately previous time of the i-th element, x i (t+Δt) is the first variable at the target time of the i-th element, y i (t+Δt) is the second variable at the target time of the i-th element.

[0278] Technical Solution 13

[0279] According to the computing device described in technical solution 12,

[0280] The combinatorial optimization problem is a QUBO (Quadratic Unconstrained Binary Optimization) problem.

[0281] The updating unit calculates the second variable of the target time of the i-th element according to equation (103) or equation (104),

[0282] y i (t+Δt)=y i (t)+[{-D+p(t+Δt)}x i (t+Δt)+f i (t+Δt)]Δt…(103)

[0283] y i (t+Δt)=y i (t)+[{-D+p(t)}x i (t)+f i (t)]Δt…(104)

[0284] f i (t+Δt) is expressed by equation (105), f i (t) is expressed by formula (106),

[0285] f i (t+Δt)=-cz i (t+Δt)…(105)

[0286] f i (t)=-cz i(t)…(106)

[0287] z i (t+Δt) is expressed by equation (107), z i (t) is expressed by formula (108),

[0288]

[0289] j is any integer from 1 to N, h i is the i-th local magnetic field coefficient contained in a predetermined array containing N local magnetic field coefficients, J i,j is the coupling coefficient of the i-th row and j-th column contained in a predetermined matrix containing N×N coupling coefficients, c is the coefficient, x j (t) is the first variable at the immediately previous time of the j-th element corresponding to the j-th discrete variable among the N discrete variables, and x j (t+Δt) is the first variable of the object time of the j-th element, p(t) is a predetermined function with t as the variable, which increases as t increases, t is 0 at the initial moment, and t is 1 at the end moment, and α(t) is a predetermined function with t as the variable.

[0290] Technical Solution 14

[0291] A computational method is a computational method for solving a combinatorial optimization problem by an information processing device, performing:

[0292] an updating step of alternately updating the first variable and the second variable in sequence per unit time from an initial time to an end time for each of a plurality of elements associated with the first variable and the second variable by the information processing device; and

[0293] an output step in which the information processing device outputs a solution to the combinatorial optimization problem based on the first variable of each of the plurality of elements at the end time;

[0294] The multiple elements correspond to multiple discrete variables of the combinatorial optimization problem,

[0295] The first variable and the second variable are respectively represented by real numbers,

[0296] In the updating process per unit time in the updating step, the information processing device, for each of the plurality of elements,

[0297] updating the first variable based on the second variable,

[0298] When the first variable is smaller than a predetermined first value, the first variable is changed to the first value, and the second variable is changed to a predetermined third value.

[0299] When the first variable is larger than a predetermined second value that is larger than the first value, the first variable is changed to the second value, and the second variable is changed to the third value.

[0300] An acceleration value calculated by a predetermined operation is added to the second variable.

[0301] Technical Solution 15

[0302] A program for causing an information processing device to function as a computing device for solving a combinatorial optimization problem.

[0303] The information processing device is made to function as an updating unit and an output unit,

[0304] The updating unit updates the first variable and the second variable alternately in sequence per unit time from an initial time to an end time for each of a plurality of elements associated with the first variable and the second variable.

[0305] The output unit outputs a solution to the combinatorial optimization problem based on the first variable of each of the plurality of elements at the end time.

[0306] The multiple elements correspond to multiple discrete variables of the combinatorial optimization problem,

[0307] The first variable and the second variable are respectively represented by real numbers,

[0308] In the updating process per unit time, the updating unit updates each of the plurality of elements.

[0309] updating the first variable based on the second variable,

[0310] When the first variable is smaller than a predetermined first value, the first variable is changed to the first value, and the second variable is changed to a predetermined third value.

[0311] When the first variable is larger than a predetermined second value that is larger than the first value, the first variable is changed to the second value, and the second variable is changed to the third value.

[0312] An acceleration value calculated by a predetermined operation is added to the second variable.

Claims

1. A computing device for solving combinatorial optimization problems, comprising: An arithmetic circuit comprising: a first memory storing a plurality of elements associated with a first variable; a second memory storing a plurality of elements associated with a second variable; and an updating circuit for alternately updating the first variable and the second variable in sequence per unit time from an initial time to an end time for each of the plurality of elements associated with the first variable and the second variable; and an output circuit that outputs a solution to the combinatorial optimization problem based on the first variable of each of the plurality of elements at the end time, The multiple elements correspond to multiple discrete variables of the combinatorial optimization problem, The first variable and the second variable are respectively represented by real numbers, In the updating process per unit time, the arithmetic circuit performs, for each of the plurality of elements, outputting the first variable from the first memory to the first adding circuit of the updating circuit to update the first variable based on the second variable, The second variable is output from the second memory to a second adding circuit and a first multiplying circuit of the updating circuit, the second adding circuit updates the second variable based on the first variable, and the first multiplying circuit calculates an acceleration value through a predetermined operation. When the first variable is less than a predetermined first value, a first enable signal is generated by a determination circuit of the update circuit. In response to the first enable signal, the first variable is changed to the first value and the second variable is changed to a predetermined third value. When the first variable is greater than a predetermined second value greater than the first value, the determination circuit generates a second enable signal, and in response to the second enable signal, changes the first variable to the second value and the second variable to the third value. The third adding circuit of the updating circuit adds the acceleration value to the second variable. The output circuit, For each of the plurality of elements at the end time, a value of a discrete variable obtained by binarizing the first variable using a preset threshold is calculated; The calculated values ​​of the plurality of discrete variables are output as a solution to the combinatorial optimization problem, and the acceleration value is a value obtained by multiplying the corresponding second variable at the immediately previous time by the product of a predetermined coefficient and the unit time.

2. The computing device according to claim 1, In the updating process per unit time, the updating circuit updates each of the plurality of elements. Before updating the first variable, update the second variable. After the first variable is updated, the acceleration value is added to the second variable.

3. The computing device according to claim 1, In the updating process per unit time, the updating circuit updates each of the plurality of elements. After updating the first variable, update the second variable. After the first variable is updated and before the second variable is updated, the acceleration value is added to the second variable.

4. The computing device according to any one of claims 1 to 3, Each of the plurality of elements corresponds to any one of the plurality of processing circuits, Each of the multiple processing circuits performs, for a corresponding element among the multiple elements, processing of updating the first variable based on the second variable, processing of changing the first variable to the first value or the second value, processing of changing the second variable to the third value, and processing of adding the acceleration value to the second variable.

5. The computing device according to any one of claims 1 to 3, In the update processing per unit time, the update circuit calculates the first variable at the object time for each of the multiple elements by adding the value obtained by multiplying the second variable by a predetermined constant and the unit time to the first variable at the immediately preceding moment that is a unit time earlier than the object time.

6. The computing device according to claim 5, In the updating process per unit time, the updating circuit updates each of the plurality of elements. external force is calculated based on the first variable of each of the plurality of elements and a predetermined action coefficient for each pair of the target element and each of the plurality of elements; The second variable at the target time is calculated by adding a value obtained by multiplying a value determined based on the external force and the first variable by the unit time to the second variable at the immediately previous time.

7. A computational method for solving a combinatorial optimization problem using an information processing device, the information processing device comprising an arithmetic circuit and an output circuit, the arithmetic circuit comprising a first memory, a second memory, and an update circuit, the computational method performing: a first storing step of storing a plurality of elements associated with a first variable in the first memory; a second storing step of storing a plurality of elements associated with a second variable in the second memory; an updating step of alternately updating the first variable and the second variable in sequence per unit time from an initial time to an end time for each of a plurality of elements associated with the first variable and the second variable by the updating circuit connected to the first memory and the second memory; as well as an output step of outputting a solution to the combinatorial optimization problem based on the first variable of each of the plurality of elements at the end time by the output circuit connected to the operation circuit; The multiple elements correspond to multiple discrete variables of the combinatorial optimization problem, The first variable and the second variable are respectively represented by real numbers, In the updating process per unit time in the updating step, the arithmetic circuit performs, for each of the plurality of elements, outputting the first variable from the first memory to the first adding circuit of the updating circuit to update the first variable based on the second variable, The second variable is output from the second memory to a second adding circuit and a first multiplying circuit of the updating circuit, the second adding circuit updates the second variable based on the first variable, and the first multiplying circuit calculates an acceleration value through a predetermined operation. When the first variable is less than a predetermined first value, a first enable signal is generated by a determination circuit of the update circuit. In response to the first enable signal, the first variable is changed to the first value and the second variable is changed to a predetermined third value. When the first variable is greater than a predetermined second value greater than the first value, the determination circuit generates a second enable signal, and in response to the second enable signal, changes the first variable to the second value and the second variable to the third value. The third adding circuit of the updating circuit adds the acceleration value to the second variable. The calculation method also performs: For each of the plurality of elements at the end time, the output circuit calculates a value of a discrete variable obtained by binarizing the first variable using a preset threshold value, outputting the calculated values ​​of the plurality of discrete variables as a solution to the combinatorial optimization problem through the output circuit, The acceleration value is a value obtained by multiplying the corresponding second variable at the immediately previous time by the product of a predetermined coefficient and the unit time.

8. A computer program product comprising a computer program, which implements the steps of the computing method according to claim 7 when the computer program is executed by a processor.

Citation Information

Patent Citations

  • Optimization device and optimization method

    CN112100799A