Information processing device, information processing system, information processing method, storage medium

Through parallel processing of information processing devices and systems, using simulated branch algorithms and pseudo-random number initialization technology, the problem of low resolution efficiency of combination optimization problems is solved, and the ability to efficiently solve combination optimization problems in practical time is realized. .

CN113646783BActive Publication Date: 2025-01-14KK TOSHIBA +1
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202080025394.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-03-28
Filing Date
2020-03-27
Publication Date
2025-01-14
Estimated Expiration
2040-03-27

AI Technical Summary

Technical Problem

The prior art is difficult to calculate effective solutions to the combination optimization problem in practical time, especially when facing the combination explosion problem, it is difficult to obtain the optimal or approximately optimal solution.

Method used

Using an information processing device and a system, the solution to the combination optimization problem is calculated by repeatedly updating the first vector and the second vector, and initializing the second vector using pseudo-random numbers, combined with a simulated branch algorithm for parallelization and decentralization processing.

Benefits of technology

A larger solution space can be searched within a limited computing time, which improves the probability of obtaining the optimal or approximate optimal solution, and realizes efficient solution to the combined optimization problem.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113646783B_ABST
    Figure CN113646783B_ABST
Patent Text Reader

Abstract

The present invention provides an information processing device, an information processing system, an information processing method, a storage medium, and a program for calculating a solution to a combinatorial optimization problem within a practical time. The information processing device as an embodiment of the present invention comprises: a storage unit configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element; and a processing circuit for updating the first vector by weighting the corresponding second variable and adding it to the first variable, weighting the first variable monotonically increasing according to the number of updates by a first coefficient and adding it to the corresponding second variable, calculating a problem item using a plurality of the first variables, updating the second vector by adding the problem item to the second variable, after repeatedly updating the first vector and the second vector, initializing the second variable of the second vector by a pseudo-random number, and repeating the updating of the first vector and the second vector again.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to an information processing device, an information processing system, an information processing method, a storage medium, and a program. Background Art

[0002] The combinatorial optimization problem is a problem of selecting the combination that best suits the purpose from among multiple combinations. Mathematically, the combinatorial optimization problem is reduced to the problem of maximizing a function with multiple discrete variables called the "objective function" or the problem of minimizing the function. The combinatorial optimization problem is a universal problem in various fields such as finance, logistics, transportation, design, manufacturing, and life sciences. However, due to the so-called "combinatorial explosion" in which the number of combinations increases at the order of an exponential function of the problem volume, it is not always possible to find the optimal solution. In addition, there are many cases where it is difficult to even obtain an approximate solution close to the optimal solution.

[0003] In order to solve problems in various fields and promote social innovation and scientific and technological progress, it is required to develop technologies that can calculate solutions to combinatorial optimization problems in a practical time.

[0004] Prior art literature

[0005] Patent Literature

[0006] Patent Document 1: Japanese Patent Application Publication No. 2017-73106

[0007] Non-patent literature

[0008] Non-patent literature 1: H. Goto, K. Tatsumura, ARDixon, Sci. Adv. 5, eaav2372 (2019).

[0009] Non-patent document 2: H. Goto, Sci. Rep. 6, 21686 (2016).

[0010] Non-Patent Literature 3: Tsuchiya, Nishiyama, and Tsujida: Approximate solution to combinatorial optimization problems using branching characteristics URL: http: / / www.ynl.tu-tokyo.ac.jp / project / RobotBrainCREST / publications / pdf / tsuchiya / 4_01.pdf

[0011] Non-Patent Literature 4: Tsuchiya, Nishiyama, and Tsujita: Analysis of the Deterministic Annealing Algorithm URL: http: / / www.ynl.tu-tokyo.ac.jp / project / RobotBrainCREST / publications / pdf / tsuchiya / 4_02.pdf Summary of the invention

[0012] Technical problem to be solved by the invention

[0013] Embodiments of the present invention provide an information processing device, an information processing system, an information processing method, a storage medium, and a program for calculating a solution to a combinatorial optimization problem within a practical time.

[0014] Means for solving technical problems

[0015] As an embodiment of the present invention, an information processing device is configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. The information processing device comprises: a storage unit configured to store the first variable and the second variable; and a processing circuit configured to update the first vector by weighting the corresponding second variable and adding the weighted second variable to the first variable, weighting the first variable according to a first coefficient that monotonically increases or decreases according to the number of updates and adding the weighted second variable to the corresponding second variable, using a plurality of the first variables to calculate a problem item, updating the second vector by adding the problem item to the second variable, after repeatedly updating the first vector and the second vector, initializing the second variable of the second vector by a pseudo-random number, and repeating the updating of the first vector and the second vector again. BRIEF DESCRIPTION OF THE DRAWINGS

[0016] Figure 1 It is a diagram showing a configuration example of an information processing system.

[0017] Figure 2 This is a block diagram showing a configuration example of a management server.

[0018] Figure 3 This is a diagram showing an example of data stored in the storage unit of the management server.

[0019] Figure 4 This is a block diagram showing a configuration example of a calculation server.

[0020] Figure 5 This is a diagram showing an example of data stored in the memory of the calculation server.

[0021] Figure 6 This is a flowchart showing an example of processing when a solution of a simulation branching algorithm is calculated by time advancement.

[0022] Figure 7 This is a flowchart showing an example of an algorithm of Modification 1.

[0023] Figure 8 This is a flowchart showing an example of an algorithm of Modification Example 2.

[0024] Fig. 9 It means in Figure 7 and Figure 8 Flowchart of a first example of the processing performed in step S114 of FIG.

[0025] Fig.10 It means in Figure 7 and Figure 8 Flowchart of a second example of the processing performed in step S114 of FIG.

[0026] Fig.11 is a table showing an example of a coupling coefficient matrix.

[0027] Fig.12 is a table showing examples of local magnetic field vectors.

[0028] Fig.13 This is a table showing examples of maximum absolute values ​​of random numbers.

[0029] Fig.14 is a table showing examples of the first vector.

[0030] Fig.15 is a table showing examples of the second vector.

[0031] Fig.16 is a table showing examples of solution vectors and values ​​of the Hamiltonian.

[0032] Fig.17 This is a flowchart showing an example of an algorithm of Modification 3.

[0033] Fig.18 This is a flowchart showing an example of an algorithm of Modification 3.

[0034] Fig.19 This is a flowchart showing an example of an algorithm of Modification 4.

[0035] Fig. 20 This is a table showing examples of coefficients.

[0036] Fig.21 This is a flowchart showing an example of an algorithm of Modification 5.

[0037] Fig. 22 This is a flowchart showing an example of an algorithm of Modification 5.

[0038] Fig.23 Yes means through Figure 6 An example graph of the results of a case where the algorithm was calculated.

[0039] Fig.24 Yes means through Figure 7 An example graph of the results of a case where the algorithm was calculated.

[0040] Fig.25 Yes means through Fig.17 and Fig.18 An example graph of the results of a case where the algorithm was calculated.

[0041] Fig.26 Yes means through Fig.21 and Fig. 22 An example graph of the results of a case where the algorithm was calculated.

[0042] Fig. 27 This is a diagram schematically showing an example of a multi-processor configuration.

[0043] Fig.28 This is a diagram schematically showing an example of a configuration using a GPU.

[0044] Fig.29 is a flow chart showing an example of the overall processing performed to solve a combinatorial optimization problem. DETAILED DESCRIPTION

[0045] Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. In the accompanying drawings, the same components are denoted by the same reference numerals, and description thereof will be appropriately omitted.

[0046] Figure 1 It is a block diagram showing a configuration example of the information processing system 100 . Figure 1 The information processing system 100 includes a management server 1, a network 2, computing servers (information processing devices) 3a to 3c, cables 4a to 4c, a switch 5, and a storage device 7. Figure 1 , a client terminal 6 capable of communicating with the information processing system 100 is shown. The management server 1, the computing servers 3a to 3c, the client terminal 6, and the storage device 7 can communicate data with each other via the network 2. For example, the computing servers 3a to 3c can store data in the storage device 7, or read data from the storage device 7. The network 2 is, for example, the Internet in which a plurality of computer networks are interconnected. The network 2 can use wired, wireless, or a combination thereof as a communication medium. In addition, as an example of a communication protocol used in the network 2, there is TCP / IP, but the type of communication protocol is not particularly limited.

[0047] In addition, the computing servers 3a~3c are connected to the switch 5 via cables 4a~4c, respectively. The cables 4a~4c and the switch 5 form an interconnection between the computing servers. The computing servers 3a~3c can also communicate data with each other via the interconnection. The switch 5 is, for example, an Infiniband (infinite bandwidth) switch. The cables 4a~4c are, for example, Infiniband cables. However, a wired LAN switch / cable can also be used instead of an Infiniband switch / cable. There is no particular limitation on the communication standard and communication protocol used in the cables 4a~4c and the switch 5. Examples of the client terminal 6 include a notebook PC, a desktop PC, a smartphone, a tablet computer, a car terminal, etc.

[0048] In solving the combinatorial optimization problem, the processing can be parallelized and / or decentralized. Therefore, the computing servers 3a~3c and / or the processors of the computing servers 3a~3c can share the steps of executing a part of the computing processing, and can also perform the same computing processing in parallel for different variables. The management server 1, for example, transforms the combinatorial optimization problem input by the user into a form that can be processed by each computing server, and controls the computing server. In addition, the management server 1 obtains the calculation results from each computing server and transforms the aggregated calculation results into a solution to the combinatorial optimization problem. In this way, the user can obtain the solution to the combinatorial optimization problem. It is assumed that the solution to the combinatorial optimization problem includes an optimal solution and an approximate solution close to the optimal solution.

[0049] exist Figure 1 Three computing servers are shown in the figure. However, the number of computing servers included in the information processing system is not limited. In addition, there is no special limitation on the number of computing servers used in solving the combinatorial optimization problem. For example, the computing server included in the information processing system may be one. In addition, any of the multiple computing servers included in the information processing system can be used to solve the combinatorial optimization problem. In addition, the information processing system may include hundreds of computing servers. The computing server can be a server located in a data center or a desktop PC located in an office. In addition, the computing server can also be multiple types of computers located in different locations. There is no special limitation on the type of information processing device used as a computing server. For example, the computing server can be a general-purpose computer, a dedicated electronic circuit, or a combination thereof.

[0050] Figure 2 It is a block diagram showing a configuration example of the management server 1 . Figure 2The management server 1 is, for example, a computer including a central processing unit (CPU) and a memory. The management server 1 includes a processor 10, a storage unit 14, a communication circuit 15, an input circuit 16, and an output circuit 17. The processor 10, the storage unit 14, the communication circuit 15, the input circuit 16, and the output circuit 17 are connected to each other via a bus 20. The processor 10 includes a management unit 11, a conversion unit 12, and a control unit 13 as internal components.

[0051] The processor 10 is an electronic circuit that performs calculations and controls the management server 1. The processor 10 is an example of a processing circuit. As the processor 10, for example, a CPU, a microprocessor, an ASIC, an FPGA, a PLD or a combination thereof can be used. The management unit 11 provides an interface for operating the management server 1 via the user's client terminal 6. Examples of interfaces provided by the management unit 11 include API, CLI, web pages, etc. For example, a user can input information about a combinatorial optimization problem, or browse and / or download a calculated solution to a combinatorial optimization problem via the management unit 11. The conversion unit 12 converts the combinatorial optimization problem into a form that can be processed by each computing server. The control unit 13 sends a control instruction to each computing server. After the control unit 13 obtains the calculation results from each computing server, the conversion unit 12 aggregates the multiple calculation results and converts them into a solution to the combinatorial optimization problem. In addition, the control unit 13 can also specify the processing content to be performed by each computing server or the processor in each server.

[0052] The storage unit 14 stores various data including the program of the management server 1, the data required for the execution of the program, and the data generated by the program. Here, it is assumed that the program includes both the OS and the application. The storage unit 14 may also be a volatile memory, a non-volatile memory, or a combination thereof. Examples of volatile memories include DRAM, SRAM, etc. Examples of non-volatile memories include NAND flash memory, NOR flash memory, ReR AM, or MRAM. In addition, a hard disk, an optical disk, a magnetic tape, or an external storage device may also be used as the storage unit 14.

[0053] The communication circuit 15 transmits and receives data to and from each device connected to the network 2. The communication circuit 15 is, for example, a NIC (Network Interface Card) of a wired LAN. However, the communication circuit 15 may also be another type of communication circuit such as a wireless LAN. The input circuit 16 implements data input to the management server 1. It is assumed that the input circuit 16 has, for example, a USB, PCI-Express, etc. as an external port. Figure 2In the example, the operating device 18 is connected to the input circuit 16. The operating device 18 is a device for inputting information to the management server 1. The operating device 18 is, for example, a keyboard, a mouse, a touch panel, a voice recognition device, etc., but is not limited thereto. The output circuit 17 realizes data output from the management server 1. It is assumed that the output circuit 17 has HDMI, DisplayPort, etc. as an external port. Figure 2 In the example of , the display device 19 is connected to the output circuit 17. Examples of the display device 19 include an LCD (Liquid Crystal Display), an organic EL (Organic Electroluminescence) display, or a projector, but are not limited thereto.

[0054] The administrator of the management server 1 can use the operating device 18 and the display device 19 to perform maintenance on the management server 1. In addition, the operating device 18 and the display device 19 may be incorporated into the management server 1. In addition, the operating device 18 and the display device 19 may not necessarily be connected to the management server 1. For example, the administrator may perform maintenance on the management server 1 using an information terminal that can communicate with the network 2.

[0055] Figure 3 FIG. 2 shows an example of data stored in the storage unit 14 of the management server 1. Figure 3 In the storage unit 14, problem data 14A, calculation data 14B, management program 14C, transformation program 14D, and control program 14E are stored. For example, problem data 14A includes data of a combinatorial optimization problem. For example, calculation data 14B includes calculation results collected from each calculation server. For example, management program 14C is a program that implements the functions of the management unit 11 described above. For example, transformation program 14D is a program that implements the functions of the transformation unit 12 described above. For example, control program 14E is a program that implements the functions of the control unit 13 described above.

[0056] Figure 4 This is a module that shows a configuration example of a calculation server. Figure 4 The calculation server is, for example, an information processing device that performs calculations of the first vector and the second vector alone or in sharing with other calculation servers.

[0057] Figure 4 The configuration of the calculation server 3a is shown as an example. The other calculation servers may have the same configuration as that of the calculation server 3a, or may have a configuration different from that of the calculation server 3a.

[0058] The calculation server 3a includes, for example, a communication circuit 31, a shared memory 32, processors 33A to 33D, a memory 34, and a host bus adapter 35. The communication circuit 31, the shared memory 32, the processors 33A to 33D, the memory 34, and the host bus adapter 35 are connected to each other via a bus 36.

[0059] The communication circuit 31 sends and receives data to and from each device connected to the network 2. The communication circuit 31 is, for example, a NIC (Network Interface Card) of a wired LAN. However, the communication circuit 31 may also be other types of communication circuits such as a wireless LAN. The shared memory 32 is a memory accessible from the processors 33A to 33D. As an example of the shared memory 32, a volatile memory such as a DRAM and an SRAM may be cited. However, as the shared memory 32, other types of memories such as a non-volatile memory may also be used. The shared memory 32 may also be configured to store the elements of the first vector and the elements of the second vector, for example. The processors 33A to 33D may share data via the shared memory 32. In addition, the entire memory of the computing server 3a may not necessarily be configured as a shared memory. For example, a portion of the memory of the computing server 3a may also be configured as a local memory that can be accessed only from a certain processor. In addition, the shared memory 32 and the memory 34 described later are examples of the storage unit of the information processing device.

[0060] Processors 33A to 33D are electronic circuits that perform computational processing. The processor may be, for example, any one of a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), an FPGA (Field-Programmable Gate Array), or an ASIC (Application Specific Integrated Circuit), or a combination thereof. In addition, the processor may also be a CPU core or a CPU thread. When the processor is a CPU, there is no particular restriction on the number of slots that the computing server 3a has. In addition, the processor may also be connected to other components of the computing server 3a via a bus such as PCI express.

[0061] exist Figure 4 In the example, the computing server has four processors. However, the number of processors in one computing server may be different. For example, the number and / or type of processors installed in the computing server may be different. Here, the processor is an example of a processing circuit of an information processing device. An information processing device may also have multiple processing circuits.

[0062] The information processing device is configured to repeatedly update the first variable x i (i=1, 2, ..., N) as the first vector and the second variable y corresponding to the first variablei (i=1, 2, ..., N) are the elements of the second vector. The storage unit of the information processing device may be configured to store the first variable and the second variable.

[0063] For example, the processing circuit of the information processing device is configured to update the first vector by weighting the corresponding second variable and adding it to the first variable, weight the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and add it to the corresponding second variable, use multiple first variables to calculate the problem item, update the second vector by adding the problem item to the second variable, after repeating the update of the first vector and the second vector, initialize the second variable of the second vector by a pseudo-random number, and repeat the update of the first vector and the second vector again. The problem item can also be calculated based on the Ising model. In addition, the problem item can also include multi-body interaction. The details of the first coefficient, the problem item, the Ising model and the multi-body interaction are described later.

[0064] In an information processing device, for example, the processing content (task) can be allocated in units of processors. However, the unit of computing resources for allocating the processing content is not limited. For example, the processing content can be allocated in units of computers, or in units of processes or CPU threads operating on a processor.

[0065] Below, refer again Figure 4 , the components of the computing server are explained.

[0066] The memory 34 stores various data including the program of the computing server 3a, the data required for the execution of the program, and the data generated by the program. Here, it is assumed that the program includes both the OS and the application. The memory 34 may be configured to store the first vector and the second vector, for example. The memory 34 may also be a volatile memory, a non-volatile memory, or a combination thereof. Examples of volatile memories include DRAM or SRAM. Examples of non-volatile memories include NAND flash memory, NOR flash memory, ReRAM, or MRAM. In addition, a hard disk, an optical disk, a magnetic tape, or an external storage device may also be used as the memory 34.

[0067] The host bus adapter 35 implements data communication between computing servers. The host bus adapter 35 is connected to the switch 5 via the cable 4a. The host bus adapter 35 is, for example, an HCA (Host Channel Adaptor). By using the host bus adapter 35, the cable 4a, and the switch 5 to form an interconnection that can achieve high throughput, the speed of parallel computing processing can be increased.

[0068] Figure 5An example of data stored in the memory of a computing server. Figure 5 The memory 34 of the management server 1 stores calculation data 34A, calculation program 34B, and control program 34C. The calculation data 34A includes data or calculation results in the process of calculation of the calculation server 3a. In addition, at least a part of the calculation data 34A can also be stored in different storage levels such as the shared memory 32, the processor cache, or the processor register. The calculation program 34B is a program that implements the calculation processing in each processor and the storage processing of data in the shared memory 32 and the memory 34 based on a prescribed algorithm. The control program 34C is a program that controls the calculation server 3a based on the instructions sent from the control unit 13 of the management server 1 and sends the calculation results of the calculation server 3a to the management server 1.

[0069] Next, the technology associated with solving the combinatorial optimization problem is described. As an example of an information processing device used to solve the combinatorial optimization problem, an Ising machine can be cited. An Ising machine refers to an information processing device that calculates the energy of the basic state of the Ising model. Previously, the Ising model was mainly used as a model of ferromagnetic bodies and phase transition phenomena. However, in recent years, the use of the Ising model as a model for solving combinatorial optimization problems has increased. The following formula (1) represents the energy of the Ising model.

[0070] [Formula 1]

[0071]

[0072] Here, s i 、s j is the spin, which is a binary variable that can take on either value +1 or -1. N is the number of spins. i is the local magnetic field acting on each spin. J is the matrix of coupling coefficients between spins. The matrix J is a real symmetric matrix with zero diagonal components. Therefore, J ij represents the element of row i and column j of matrix J. The Ising model of equation (1) is a quadratic equation for spin, but as described later, an extended Ising model (Ising model with multi-body interaction) including a term of degree 3 or higher for spin may also be used.

[0073] If the Ising model of formula (1) is used, the energy E Ising As the objective function, calculate the energy E Ising The solution of the Ising model is the vector of spins (s1, s2, ..., s N ) in the form of . Let this vector be called the solution vector. In particular, the energy E Ising is the vector of minimum values ​​(s1, s2, ..., sN ) is called the optimal solution. However, the solution of the Ising model calculated does not have to be a strict optimal solution. In the following, the Ising model will be used to calculate the energy E Ising The problem of finding an approximate solution that is as small as possible (i.e., an approximate solution whose value of the objective function is as close as possible to the optimal value) is called the Ising problem.

[0074] Since the spin s of formula (1) i is a binary variable, so by using the formula (1+s i ) / 2, it is easy to transform the discrete variables (bits) used in the combinatorial optimization problem. Therefore, by transforming the combinatorial optimization problem into the Ising problem and making the Ising machine perform the calculation, the solution to the combinatorial optimization problem can be found. The problem of finding a solution that minimizes a quadratic objective function with discrete variables (bits) that take a certain value of 0 or 1 as variables is called the QUBO (Quadratic Unconstrained Binary Optimization) problem. The Ising problem represented in formula (1) can be said to be equivalent to the QUBO problem.

[0075] For example, quantum annealing machines, coherent Ising machines, or quantum branching machines have been proposed as hardware installations of the Ising machine. The quantum annealing machine uses a superconducting circuit to implement quantum annealing. The coherent Ising machine uses the oscillation phenomenon of a network formed by an optical parametric oscillator. The quantum branching machine uses the branching phenomenon of quantum mechanics in a network of parametric oscillators with the Kerr effect. These hardware installations have the potential to significantly shorten the computing time, but on the other hand, there are technical problems that make it difficult to achieve large-scale and stable operation.

[0076] Therefore, it is also possible to use a widely used digital computer to solve the Ising problem. Compared with the hardware installation using the above-mentioned physical phenomenon, digital computers are easy to achieve large-scale and stable operation. As an example of an algorithm for solving the Ising problem with a digital computer, simulated annealing (SA) can be cited. Technology for performing simulated annealing at a higher speed is being developed. However, since conventional simulated annealing is a sequential update algorithm in which each variable is updated sequentially, it is difficult to achieve high-speed computational processing due to parallelization.

[0077] In view of the above technical problems, a simulation branching algorithm is proposed that can solve large-scale combinatorial optimization problems at high speed through parallel calculations in a digital computer. Hereinafter, an information processing device, an information processing system, an information processing method, a storage medium and a program that use the simulation branching algorithm to solve combinatorial optimization problems are described.

[0078] First, an overview of the simulation branching algorithm is described.

[0079] In the simulation branching algorithm, for two variables x with N i ,y i (i=1, 2, ..., N), numerically solve the following simultaneous ordinary differential equations (2). N variables x i Corresponding to the spin s of the Ising model i On the other hand, N variables y i They are equivalent to the amount of exercise respectively. Let the variable x i ,y i are all continuous variables. i The vector with (i=1, 2, ..., N) as its elements is called the first vector. i A vector whose elements are (i=1, 2, ..., N) is called a second vector.

[0080] [Formula 2]

[0081]

[0082] Here, H is the Hamiltonian of the following equation (3).

[0083] [Formula 3]

[0084]

[0085] In (2), instead of the Hamiltonian H in equation (3), the term G(x1, x2, ... x N ) of the Hamiltonian H′. It will contain not only the Hamiltonian H but also the term G(x1, x2, ... x N ) is called the extended Hamiltonian and is distinguished from the original Hamiltonian H.

[0086] [Formula 4]

[0087]

[0088] Below, the function G(x1, x2, ...x N ) is a correction term. Here, the function G(x1, x2, ...x N ) can be derived from the constraints of the combinatorial optimization problem. Among them, the function G(x1, x2, ...x N ) is not limited in the derivation method and type. In addition, in equation (4), the function G(x1, x2, ... x N ). However, the function G(x1, x2, …x N ) can also be incorporated into the extended Hamiltonian in a different way.

[0089] Referring to the Hamiltonian of equation (3) and the extended Hamiltonian of equation (4), each term becomes either the element xi of the first vector or the element yi of the second vector. It is also possible to use the element x of the first vector as shown in the following equation (5): i The extended Hamiltonian of V is the term U and the term yi of the second vector.

[0090] [Formula 5]

[0091] H'=U(x1,…,xx)+V(y1,…,y N ) (5)

[0092] In the time-advancing calculation of the analog branching algorithm, the values ​​of variables xi, yi (i=1, 2, ..., N) are repeatedly updated. Then, by updating the variable x when a specified condition is met, i By transforming, we can find the spin s of the Ising model i (i=1, 2, ..., N) The following description of the process assumes that the calculation is performed by time marching. However, the calculation of the analog branching algorithm may be performed by a method other than time marching.

[0093] In (2) and (3), coefficient D corresponds to detuning. Coefficient p(t) corresponds to the first coefficient mentioned above, also known as pumping amplitude. In the calculation of time advancement, the value of coefficient p(t) can be monotonically increased according to the number of updates. The initial value of coefficient p(t) can be set to 0.

[0094] In addition, the following description is made by taking the case where the first coefficient p(t) is a positive value and the value of the first coefficient p(t) increases according to the number of updates as an example. However, the sign of the algorithm shown below can also be reversed, and a negative first coefficient p(t) is used. In this case, the value of the first coefficient p(t) decreases monotonically according to the number of updates. However, in any case, the absolute value of the first coefficient p(t) increases monotonically according to the number of updates.

[0095] The coefficient K is equivalent to a positive Kerr coefficient. As the coefficient c, a constant coefficient may be used. For example, the value of the coefficient c may be determined before performing the calculation based on the analog branching algorithm. For example, the coefficient c may be set to be close to J. (2) The value of the reciprocal of the largest eigenvalue of a matrix. For example, you can use Here, n is the number of edges of the graph involved in the combinatorial optimization problem. In addition, a(t) is a coefficient that increases with p(t) during the calculation of time advancement. For example, as a(t), you can use In addition, the vector hi of the local magnetic field in (3) and (4) can be omitted.

[0096] For example, when the value of the coefficient p(t) exceeds the specified value, in the first vector, if the variables x i Transformed to +1, the variable x that is negative i Transformed to -1, we can get i is a solution vector of the elements. This solution vector is equivalent to the solution of the Ising problem. In addition, the above transformation can also be performed based on the number of updates of the first vector and the second vector to determine whether the solution vector is obtained.

[0097] When performing calculations using the simulated branching algorithm, the above (2) is converted into a discrete recursive equation using the symplectic Euler method and solved. The following (6) shows an example of the simulated branching algorithm after the recursive equation is converted.

[0098] [Formula 6]

[0099]

[0100] Here, t is the time and Δt is the time step (time scale width). In addition, in (6), the time t and the time step Δt are used to express the corresponding relationship with the differential equation. However, when the algorithm is actually installed in software or hardware, it is not necessary to include the time t and the time step Δt as explicit parameters. For example, if the time step Δt is set to 1, the time step Δt can be removed from the algorithm during installation. When the time t is not included as an explicit parameter when installing the algorithm, just replace x in (6). i (t+Δt) is interpreted as x i That is, "t" in the above (6) represents the value of the variable before the update, and "t+Δt" represents the value of the variable after the update.

[0101] The term in the third paragraph of (6) is derived from the Ising energy. The form of this term is determined by the problem to be solved, so it is called a problem term.

[0102] When calculating the time progress of the simulated branching algorithm, based on the variable x after increasing the value of p(t) from an initial value (for example, 0) to a predetermined value, i The sign of the spin s can be found i For example, if you use x i >0 is sgn(x i )=+1, at x i <0 is sgn(xi )=-1, then when the value of p(t) increases to a specified value, by changing the variable x i By transforming the sign function, the spin s can be obtained i As a symbolic function, for example, we can use i ≠0 is sgn(x i )=x i / |x i |、When x i = 0 is sgn(x i )=+1 or -1. Regarding finding the solution to the combinatorial optimization problem (for example, the spin s of the Ising model i ) is not particularly limited. For example, the solution (solution vector) of the combinatorial optimization problem may be obtained when the number of updates of the first vector and the second vector, the value of the first coefficient p, or the value of the objective function is greater than a threshold.

[0103] Figure 6 The flowchart of shows an example of processing when the solution of the simulation branching algorithm is calculated by time advancement. Figure 6 The processing will be described.

[0104] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i (Step S101). Next, the computing server initializes the coefficients p(t) and a(t) (Step S102). For example, in step S102, the values ​​of the coefficients p and a can be set to 0, but the initial values ​​of the coefficients p and a are not limited. Next, the computing server initializes the first variable x i and the second variable y i Initialization (step S103). Here, the first variable x i is the element of the first vector. In addition, the second variable y i is an element of the second vector. In step S103, the computing server may also replace x with 0, for example. i and i Initialization. However, it does not limit x i and i As described later, variables may be initialized at a different timing. In addition, at least one variable may be initialized multiple times.

[0105] Next, the server calculates the element y based on the second vector i To update the corresponding first vector element x i (Step S104). For example, the computing server converts the corresponding second vector element y into iweighted and combined with the first vector element x i For example, in step S104, the variable x can be updated by adding i Add Δt×D×y i The computing server then updates the element y of the second vector i (Steps S105 and S106). For example, in step S105, the variable y can be i Add Δt×[(pDK×x i × i )×x i In step S106, the variable y can be further i Add -Δt×c×h i ×a-Δt×c×ΣJ ij × j .

[0106] Next, the computing server updates the values ​​of coefficients p and a (step S107). For example, a certain value (Δp) can be added to coefficient p, and coefficient a can be set to the positive square root of the updated coefficient p. However, as described later, this is only one example of a method for updating the values ​​of coefficients p and a. Next, the computing server determines whether the number of updates of the first vector and the second vector is less than a threshold value (step S108). When the number of updates is less than the threshold value (step S108: yes), the computing server executes the processing of steps S104 to S107 again. When the number of updates is greater than the threshold value (step S108: no), based on the element x of the first vector i Find the spin s of the elements of the solution vector i (Step S109). In step S109, for example, in the first vector, the variables x and i Transformed to +1, the variable x is negative i Transform it to -1 and get the solution vector.

[0107] In addition, in the determination of step S108, when the number of updates is less than the threshold value (yes in step S108), the value of the Hamiltonian may be calculated based on the first vector, and the first vector and the value of the Hamiltonian may be stored. Thus, the user can select the approximate solution closest to the optimal solution through multiple first vectors.

[0108] Alternatively, you can Figure 6At least one of the processes shown in the flowchart of is executed in parallel. For example, the processes of steps S104 to S106 may be executed in parallel to update at least a portion of the N elements of the first vector and the second vector in parallel. For example, the processes may be parallelized using multiple computing servers. The processes may also be parallelized using multiple processors. However, the installation used to achieve the parallelization of the processes and the method of the parallelization of the processes are not limited.

[0109] The variable x represented in the above steps S105 to S106 is i and i The execution order of the update processing of is just an example. Therefore, the variable x can also be executed in a different order. i and i For example, you can also execute the variable x i Update process and variable y i The order of the update processing of the variables is changed. In addition, the order of the sub-processes included in the update processing of each variable is not limited. For example, for the variable y i The execution order of the addition process can also be the same as Figure 6 The execution order and timing of the processing that is used as a prerequisite for executing the update processing of each variable are not particularly limited. For example, the calculation processing of the problem item can be combined with the processing including the variable x. i Other processing including the update processing of the variable x is executed in parallel. i and i The order and timing in which the update processing, the sub-processing included in the update processing of each variable, and the calculation processing of the question item are executed are not limited, and the same applies to the processing of each flowchart shown later.

[0110] [Changes in variable initialization processing]

[0111] The first vector obtained in the calculation process of the optimization problem does not necessarily correspond to the optimal solution or an approximate solution close to it (called a practical solution). Figure 6 The first vector obtained after processing the flowchart may also be a local solution different from the practical solution. In addition, depending on the shape of the potential formed by the extended Hamiltonian, the first vector may be obtained from the middle of the calculation process (for example, Figure 6 In order to obtain a practical solution within a limited computing time, it is preferred to use an algorithm that can search a large range of the solution space.

[0112] exist Figure 6 In the flowchart, in the first variable x i and the second variable y iBefore the start of the loop processing involved in the update, the first variable x is executed i and the second variable y i However, it is not limited to the initialization of the first variable x i and the second variable y i For example, when the simulation branch algorithm is interpreted as a physical model for calculating the motion state of N particles, the first variable x i Equivalent to the position of each particle, the second variable y i is equivalent to the amount of motion of each particle. Therefore, taking the physical model as an example, for the second variable y i The initialization process is equivalent to changing the motion state of the corresponding particle. For example, when increasing the execution of the second variable y i When the number of initialization processes is increased, the frequency of changing the motion state of the corresponding particle can be increased. In addition, if a pseudo-random number is used for the second variable y i Initialization can randomly change the motion state of the corresponding particle. In each state, the first variable x i Based on the second variable y i The value of y is updated, so if the second variable y is increased i The number of initializations is then calculated for the first variable x in the process i The behavior of also changes. Thus, it is possible to prevent the first vector from being attached to the vicinity of the local solution during the calculation process, and it is possible to search a larger area of ​​the solution space. Since multiple local solutions can be searched, it is possible to increase the probability of obtaining the optimal solution or an approximate solution close to the optimal solution through the calculation process.

[0113] In addition, when the pseudo random numbers are used to initialize the first variable xi and the second variable yi, the type of random numbers used is not limited. For example, the variables may be initialized using uniform random numbers or normal random numbers.

[0114] That is, the pseudo-random number generated by the processing circuit of the information processing device may be a normal random number. In addition, the pseudo-random number generated by the processing circuit of the information processing device may be a uniform random number.

[0115] Figure 7 The flowchart of FIG. 1 shows an example of the algorithm of Modification Example 1. Figure 7 Here, the first variable x i are the elements of the first vector, and the second variable y i are the elements of the second vector.

[0116] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector hi , and determine the maximum absolute value y0 of the pseudo-random number (step S110). For example, when y0=0.1 is set, a pseudo-random number of (-0.1, +0.1) is generated. However, the setting value of y0 can also be different from this. For example, when you want to increase the second variable y i The first variable x after initialization i In the case of a change in the second variable y, the setting value of y0 can be increased. i The first variable x after initialization i In the case of a change in the amount of y0, the set value of y0 may be reduced. In addition, a pseudo-random number seed s0 may be determined at the timing of step S110. The pseudo-random number seed s0 may be a value determined automatically or a value specified by the user.

[0117] Next, the computing server converts the first variable x i Initialization (step S111). For example, x i Initialize with a pseudo-random number. In addition, x i Initialize with 0, for x i There is no limitation on the initialization method. Then, the computing server initializes the coefficients p(t), a(t), and τ (step S112). In addition, the variable t may also be initialized in step S112. For example, in step S112, the values ​​of p, a, τ, and t may be set to 0, but the initial values ​​of p, a, τ, and t are not limited.

[0118] Next, the computing server generates a pseudo-random number for the second variable y i Initialization is performed (step S113). In addition, in order to perform the determination process of step S116 described later, the computing server may also increment the counter variable τ in step S113. Thus, the number of times the second variable yi is initialized can be counted. In addition, when the counter variable t is used in the determination of step S115 described later, the counter variable t may also be initialized in step S113. For example, the value of t may be set to 0.

[0119] Then, the computing server performs the time advancement computing process to update the first variable x i , the second variable y i , coefficient p and coefficient a (step S114). For example, the computing server can perform the same Figure 6 The processing of steps S104 to S107 is equivalent to that of step S104 to S107. When the variable t is used, for example, Δt may be added to t.

[0120] Next, the computing server determines whether the number of updates of the first vector and the second vector is less than the first threshold value (step S115). If the number of updates is less than the first threshold value (yes in step S115), the computing server executes the processing of step S114 again. If the number of updates is greater than the first threshold value (no in step S115), the computing server determines whether the second variable y i Is the number of initializations less than the second threshold value (step S116). In this case, the value of the counter variable τ can be compared with the second threshold value in step S116.

[0121] In the second variable y i When the number of initializations of is less than the second threshold value (Yes in step S116), the computing server executes the processing after step S113 again. That is, the computing server generates a pseudo-random number for the second variable y. i After initialization (step S113), the time advancement calculation process is executed (step S114). i When the number of initializations of is greater than the second threshold value (No in step S116), the computing server sets the first variable x i Transformed into spin s i , based on the matrix J ij , vector h i and spins i The value of the Hamiltonian is calculated (step S117). For example, in step S117, the value of the energy function can be calculated based on (1).

[0122] In addition, the computing server may also save the first vector in the storage area after executing each iteration in the loop process (for example, at the timing of step S115 or step S116). Similarly, the computing server may also save the second vector in the storage area after executing each iteration in the loop process (for example, at the timing of step S115 or step S116). In this case, in step S117, the computing server can use multiple combinations of the first vector and the corresponding second vector to calculate the value of the extended Hamiltonian. Thus, the computing server can select the first vector that is closest to the optimal solution based on the value of the extended Hamiltonian. Then, the computing server can transform the selected first vector into a spin s i The vector of (solution vector).

[0123] Then, the computing server outputs the spin s i The vector and the value of the objective function (step S118). For example, the calculation server can display the spin s on the screen of the client terminal 6. i The computing server can also store the spin s in an external storage device or cloud storage. iThe vector and the value of the Hamiltonian.

[0124] Steps S117 and S118 may also be executed by an information processing device other than the computing server. For example, the management server 1 may also execute the processing of steps S117 and S118. In addition, the content of the processing executed at the timing of steps S117 and S118 may also be different from that of the management server 1. Figure 7 For example, instead of calculating the value of the energy function of (1), the value of the Hamiltonian of (3) or (4) can be calculated. Furthermore, based on the value of the Hamiltonian, the first vector closest to the optimal solution can be selected. The spin s is not included in the parameters of the Hamiltonian. i In the case of , the process of transforming the first vector into the solution vector can also be skipped.

[0125] By calculating the value of the objective function or the extended Hamiltonian, the proximity of the first vector to the optimal solution can be evaluated. For example, when using the definitions of (1), (3), and (4), the smaller the value of the Hamiltonian, the closer the first vector is to the optimal solution. Therefore, the calculation process of the value of the objective function or the extended Hamiltonian can be called the solution evaluation process. Figure 7 In the flowchart of , the evaluation process of the solution is executed in step S117, but the evaluation process of the solution may be executed at a timing different from this. For example, the evaluation process of the solution may be executed after each iteration in the loop process is executed (for example, at the timing of step S115 or step S116). In addition, in the evaluation process of the solution, not only the first vector but also the value of the objective function or the extended Hamiltonian corresponding thereto may be stored in the storage area.

[0126] Figure 8 The flowchart of FIG. 1 shows an example of the algorithm of Modification Example 2. Figure 8 In the flowchart, the determination in step S116 is positive (the second variable y i The processing performed when the number of initialization times is less than the second threshold value is the same as Figure 7 The flowchart is different. Figure 8 In the flowchart, in the second variable y i When the number of initialization times is less than the second threshold value (step S116 is), not only the second variable y is executed i In addition to the initialization process (step S113), the coefficients p(t) and a(t) are also initialized (step S112). Figure 8 The processing performed in the flowchart is Figure 7 The flowchart is the same as

[0127] Fig. 9 The flowchart is shown in Figure 7 and Figure 8The first example of the process performed in step S114 of Fig. 9 In the flowchart, according to the first variable x i Update processing (step S1141), the second variable y i The processing equivalent to the advancement of time is performed in the order of update processing (step S1142), update processing of t, p and a (step S1143).

[0128] on the other hand, Fig.10 The flowchart is shown in Figure 7 and Figure 8 A second example of the process performed in step S114 of Fig.10 In the flowchart, according to the second variable y i Update processing (step S1142), the first variable x i The update process of x (step S1141), the update process of t, p and a (step S1143) are performed in the order of time advancement. i , you can also update the second variable y first i The execution order of the update process of each variable and the sub-processes within the update process of each variable is not limited.

[0129] Fig. 9 and Fig.10 The time-advanced calculation process shown is only an example. Therefore, the time-advanced calculation process can also be used in conjunction with Fig. 9 and Fig.10 The treatment shown is different.

[0130] Next, examples of data used in processing executed by the information processing device or the information processing system are shown.

[0131] Fig.11 The table shows the matrix J in (1) to (4) and (6). ij Table of examples. Fig.12 The table shows the vector h in (1) to (4) and (6). i Table of examples. Fig.13 An example of the maximum absolute value y0 of the random number is shown. Fig.14 Shows the use of Fig.13 On the other hand, Fig.15 Indicates the use Fig.13 An example of the second vector obtained when y0 is used. Fig.16 Indicated in Figure 7 or Figure 8 An example of the solution vector and the value of the Hamiltonian obtained in step S117.

[0132] By executing the above Figure 7 to Figure 10 The algorithm shown can search a wider range of the solution space regardless of the number of local solutions. Therefore, practical solutions can be obtained within a limited computing time. In addition, larger-scale combinatorial optimization problems can be solved in a shorter period of time.

[0133] [When the Hamiltonian is calculated multiple times and compared]

[0134] Figures 7 to 10 The flowchart is only an example of processing that can be performed by the information processing device and the information processing system. Therefore, the information processing device and the information processing system can also find a solution to the combinatorial optimization problem through processing different from this. The following describes an example of processing in which the Hamiltonian is calculated multiple times and compared.

[0135] Fig.17 and Fig.18 The flowchart of FIG. 1 shows an example of the algorithm of Modification Example 3. Fig.17 and Fig.18 Here, the first variable x i are the elements of the first vector, and the second variable y i are the elements of the second vector.

[0136] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i , determine the maximum absolute value y0 of the pseudo-random number (step S121). For example, when y0=0.1 is set, a pseudo-random number of (-0.1, +0.1) is generated. However, the setting value of y0 can also be different from this. For example, if you want to increase the second variable y i The first variable x after initialization i In the case of a change in the second variable y, the setting value of y0 can be increased. i The first variable x after initialization i In the case of a change in the amount of y0, the set value of y0 can be reduced. In addition, the pseudo-random number seed s0 can also be determined at the timing of step S121. The pseudo-random number seed s0 can be a value determined automatically or a value specified by the user.

[0137] Next, the computing server converts the first variable x i Initialization (step S122). For example, x i Initialize with a pseudo-random number. In addition, x i Initialize with 0, for x iThere is no limitation on the initialization method. Then, the computing server initializes the coefficients p(t), a(t) and τ (step S123). In addition, the variable t may also be initialized in step S123. For example, the values ​​of p, a, τ and t may be set to 0 in step S123, but the initial values ​​of p, a, τ and t are not limited.

[0138] Next, the computing server generates a pseudo-random number for the second variable y i Initialization is performed (step S124). In addition, in order to perform the determination process of step S130 described later, the calculation server may also increment the counter variable τ in step S124. In this way, the second variable y i The number of initializations is counted. In addition, when the counter variable t is used in the determination of step S126 described later, the counter variable t may be initialized in step S124. For example, the value of t may be set to 0.

[0139] Then, the computing server performs the time advancement computing process to update the first variable x i , the second variable y i , coefficient p and coefficient a (step S125). For example, the computing server can perform the same Figure 6 In addition, the calculation server may also perform the same processing as in step S125. Fig. 9 or Fig.10 When the variable t is used, for example, Δt may be added to t.

[0140] Next, the computing server determines whether the number of updates of the first vector and the second vector is less than the first threshold value (step S126). If the number of updates is less than the first threshold value (yes in step S126), the computing server executes the processing of step S125 again. If the number of updates is greater than the first threshold value (no in step S126), the computing server sets the first variable x to i Transformed into spin s i , based on matrix Jij and vector h i and spins i , calculate the value of Hamiltonian (step S127). For example, the value of Hamiltonian can be calculated based on (1).

[0141] Then, the computing server refers to the storage area 60 to determine whether the value of the Hamiltonian calculated in the previous step is the minimum value so far (step S128). If the value of the Hamiltonian calculated in the previous step is the minimum value so far (yes in step S128), the computing server compares the calculated value of the Hamiltonian and the spin s at this time. iThe vector (solution vector) is saved in the storage area 60 (step S129). In step S129, the computing server may save the first vector in the storage area 60. As the storage area 60, a storage area of ​​the shared memory 32 or the memory 34 can be used. In addition, as the storage area 60, a storage device external to the computing server or a storage area of ​​a cloud storage may also be used. However, the location of the storage area 60 is not limited. In addition, when the storage area 60 is sufficiently large, the computing server may skip the determination of step S128 and execute the processing of step S129. After executing the processing of step S129, the computing server proceeds to the processing of step S130.

[0142] When the value of the Hamiltonian calculated in step S127 is not the minimum value so far (No in step S128 ), the calculation server skips the process of step S129 and proceeds to the process of step S130 .

[0143] In step S130, the computing server determines the second variable y i In step S130, the value of the counter variable τ may also be compared with the second threshold value. i When the number of initializations of is less than the second threshold value (Yes in step S130), the computing server executes the processing after step S124 again. That is, the computing server generates a pseudo-random number for the second variable y. i After initialization (step S124), time advancement calculation processing is executed (step S125).

[0144] In the second variable y i When the number of initializations is greater than the threshold value (No in step S130), the calculation server refers to the storage area 60 and outputs the spin s i The vector and the value of the Hamiltonian (step S131). In step S131, the solution vector closest to the optimal solution among the solution vectors obtained through the past iteration can be output. In addition, when the first vector is stored in the storage area 60 in step S139, the computing server can also transform the first vector into a solution vector in step S161. For example, the computing server can display the spin s on the screen of the client terminal 6. i In addition, the computing server can also transmit the spin s to other information processing devices. i The vector and the value of the Hamiltonian.

[0145] By executing Fig.17 and Fig.18 The processing can automatically select the first vector closest to the optimal solution based on the value of the Hamiltonian, and obtain the spin s based on the first vectori Thus, a larger range of the solution space can be searched, and a practical solution can be obtained within a limited computing time.

[0146] exist Fig.17 and Fig.18 In the flowchart of , the energy function of (1) is used as the Hamiltonian. However, other forms of Hamiltonian such as the Hamiltonian of (3) or the extended Hamiltonian of (4) can also be used. Therefore, when the parameter of the Hamiltonian is the first variable x i and the second variable y i In the case of , the process of transforming the first vector into the solution vector can also be skipped.

[0147] As described above, the processing circuit of the information processing device can also be configured to calculate the value of the Hamiltonian based on the first vector after repeatedly updating the first vector and the second vector, and after storing the first vector and the value of the Hamiltonian in the storage unit, repeat the updating of the first vector and the second vector again.

[0148] In addition, the processing circuit of the information processing device can also be configured to, after repeatedly updating the first vector and the second vector, transform the first variable as a positive value into the first value, and transform the first variable as a negative value into a second value smaller than the first value, thereby calculating the solution vector according to the first vector, calculating the value of the Hamiltonian (objective function) based on the solution vector, and after saving the solution vector and the value of the Hamiltonian (objective function) in the storage unit, repeating the updating of the first vector and the second vector.

[0149] [Adjustment of the maximum absolute value of pseudo-random numbers]

[0150] In the above, the second variable y i The example of initialization by pseudo-random numbers is described. The information processing device and the information processing system can also change the properties of the pseudo-random numbers used in the iteration of the loop processing. For example, in the iteration of the earlier stage, the maximum absolute value of the generated pseudo-random numbers can be set to a relatively large value. Thus, the second variable y i The first variable x after initialization i and the second variable y i The change of becomes larger, and a wide range of the solution space can be searched. This can increase the probability of finding the optimal solution from multiple local solutions. On the other hand, in the state of the later stage, the maximum absolute value of the generated pseudo-random number can be set to a relatively small value. This can suppress the second variable y i The first variable x after initialization i and the second variable y iTherefore, when the first vector reaches the vicinity of the optimal solution through multiple update processes, the first vector can be made close to the optimal solution, thereby improving the accuracy of the calculation.

[0151] Hereinafter, an example of processing in which the maximum absolute value of the pseudo-random numbers used in accordance with the state of the loop processing is changed will be described.

[0152] Fig.19 The flowchart of FIG. 1 shows an example of the algorithm of Modification Example 4. Fig.19 Here, the first variable x i are the elements of the first vector, and the second variable y i are the elements of the second vector.

[0153] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i , determine the coefficient y0 used in the generation of the pseudo-random number (step S141). For example, when the maximum absolute value of the pseudo-random number is set to 0.1, a pseudo-random number of (-0.1, +0.1) is generated. For example, it can be set to y0 = 0.1. However, the setting value of y0 may also be different from this. In addition, the seed s0 of the pseudo-random number may also be determined at the timing of step S141. The pseudo-random number seed s0 may be either an automatically determined value or a user-specified value.

[0154] Next, the computing server converts the first variable x i Initialization (step S142). For example, x i Initialize with a pseudo-random number. In addition, x i Initialize with 0, for x i There is no limitation on the initialization method. Then, the computing server initializes the coefficients p(t), a(t) and τ (step S143). In addition, the variable t may also be initialized in step S143. For example, the values ​​of p, a, τ and t may be set to 0 in step S143, but the initial values ​​of p, a, τ and t are not limited.

[0155] Next, the computing server increments the counter variable τ and generates a pseudo-random number with the maximum absolute value y0+dy×τ for the second variable y i Initialization is performed (step S144). As dy, a negative value can be used. For example, Fig. 20 As shown, it can also be set to dy = -0.01. The counter variable τ is used to calculate the second variable y iThe maximum absolute value of the pseudo-random number is given by y0+dy×τ (dy<0), so when τ is incremented in each iteration of the loop process, the maximum absolute value of the pseudo-random number can be monotonically decreased. This allows high-precision calculations.

[0156] Then, the computing server performs the time advancement computing process to update the first variable x i , the second variable y i , coefficient p and coefficient a (step S145). For example, the computing server can perform the same Figure 6 In addition, the calculation server may also perform the same processing as in step S145. Fig. 9 or Fig.10 When the variable t is used, for example, Δt may be added to t.

[0157] Next, the computing server determines whether the number of updates of the first vector and the second vector is less than the first threshold value (step S146). If the number of updates is less than the first threshold value (yes in step S146), the computing server performs the processing of step S145 again. If the number of updates is greater than the first threshold value (no in step S146), the computing server determines whether the second variable y i Whether the number of initialization times is less than the second threshold (step S147).

[0158] In the second variable y i When the number of initializations of is less than the second threshold value (Yes in step S147), the computing server executes the processing after step S144 again. That is, the computing server generates a pseudo-random number with the maximum absolute value y0+dy×τ for the second variable y. i After initialization (step S144), time advancement calculation processing is executed (step S145).

[0159] In the second variable y i When the number of initializations of is greater than the second threshold value (No in step S147), the computing server sets the first variable x i Transformed into spin s i , and based on the matrix J ij , vector h i and spins i The value of the Hamiltonian can be calculated (step S148). For example, in step S148, the value of the Hamiltonian can be calculated based on (1). Then, the calculation server outputs the spin s i The vector and the value of the Hamiltonian (step S149). For example, the computing server may display the spin s on the screen of the client terminal 6. iIn addition, the computing server can also transmit the spin s to other information processing devices. i Furthermore, the computing server can also save the spin s in an external storage device or cloud storage. i The vector and the value of the Hamiltonian.

[0160] in addition, Fig.19 The maximum absolute value of the pseudo-random number used in is y0+dy×τ (dy<0) which is just an example. Therefore, the maximum absolute value of the pseudo-random number can also be defined by a different formula.

[0161] As described later Fig.21 and Fig. 22 As shown in the flowchart of , the information processing device and the information processing system can also (1) adjust the maximum absolute value of the pseudo-random number, and then (2) calculate the Hamiltonian multiple times and compare the values ​​of the Hamiltonian.

[0162] Fig.21 and Fig. 22 The flowchart of FIG. 1 shows an example of the algorithm of Modification Example 5. Fig.21 and Fig. 22 The processing is described below. Here, it is assumed that the first variable x i are the elements of the first vector, and the second variable y i are the elements of the second vector.

[0163] First, the computing server obtains the matrix J corresponding to the problem from the management server 1 ij and vector h i , determine the coefficient y0 used in the generation of the pseudo-random number (step S151). For example, when the maximum absolute value of the pseudo-random number is set to 0.1, a pseudo-random number of (-0.1, +0.1) is generated. For example, it can be set to y0 = 0.1. However, the setting value of y0 may also be different from this. In addition, the seed s0 of the pseudo-random number may also be determined at the timing of step S151. The pseudo-random number seed s0 may be either an automatically determined value or a user-specified value.

[0164] Next, the computing server converts the first variable x i Initialization (step S152). For example, x i Initialize with a pseudo-random number. In addition, x i Initialize with 0, for x iThere is no limitation on the initialization method. Then, the computing server initializes the coefficients p(t), a(t) and τ (step S153). In addition, the variable t may also be initialized in step S153. For example, the values ​​of p, a, τ and t may be set to 0 in step S153, but the initial values ​​of p, a, τ and t are not limited.

[0165] Next, the computing server increments the counter variable τ and initializes the second variable yi by a pseudo-random number with the maximum absolute value y0+dy×τ (step S154). A negative value can be used as dy. For example, Fig. 20 As shown, it can also be set to dy = -0.01. The counter variable τ is used to calculate the second variable y i The maximum absolute value of the pseudo-random number is given by y0+dy×τ (dy<0), so when τ is incremented in each iteration of the loop process, the maximum absolute value of the pseudo-random number can be monotonically decreased. This can improve the calculation accuracy.

[0166] Then, the computing server performs the time advancement computing process to update the first variable x i , the second variable y i , coefficient p and coefficient a (step S155). For example, the computing server can perform the same Figure 6 In addition, the calculation server may also perform the same processing as in step S155. Fig. 9 or Fig.10 When the variable t is used, for example, Δt may be added to t.

[0167] Next, the computing server determines whether the number of updates of the first vector and the second vector is less than the first threshold value (step S156). If the number of updates is less than the first threshold value (yes in step S156), the computing server executes the processing of step S155 again. If the number of updates is greater than the first threshold value (no in step S156), the computing server increases the first variable x by 1. i Transformed into spin s i , and based on the matrix J ij , vector h i and spins i The value of the Hamiltonian can be calculated (step S157). For example, the value of the Hamiltonian can be calculated based on (1).

[0168] Then, the computing server refers to the storage area 60 to determine whether the value of the Hamiltonian calculated in the previous step is the minimum value so far (step S158). If the value of the Hamiltonian calculated in the previous step is the minimum value so far (yes in step S158), the computing server calculates the value of the Hamiltonian and the spin s at this time. i The vector (solution vector) is saved in the storage area 60 (step S159). The computing server may also save the first vector in the storage area 60 in step S159. As the storage area 60, a storage area of ​​the shared memory 32 or the memory 34 can be used. In addition, as the storage area 60, a storage device external to the computing server or a storage area of ​​a cloud storage may also be used. However, the location of the storage area 60 is not limited. In addition, when the storage area 60 is sufficiently large, the computing server may also skip the determination of step S158 and execute the processing of step S159. After executing the processing of step S159, the computing server proceeds to the processing of step S160.

[0169] When the value of the Hamiltonian calculated in step S157 is not the minimum value so far (No in step S158 ), the calculation server skips the process of step S159 and proceeds to the process of step S160 .

[0170] In step S160, the computing server determines the second variable y i In step S160, the value of the counter variable τ may also be compared with the second threshold value. i When the number of initializations of is less than the second threshold value (Yes in step S160), the computing server executes the processing after step S154 again. That is, the computing server generates a pseudo-random number with the maximum absolute value y0+dy×τ for the second variable y. i After initialization (step S154), time advancement calculation processing is executed (step S155).

[0171] In the second variable y i When the number of initializations is greater than the threshold value (No in step S160), the computing server refers to the storage area 60 and outputs the spin s i The vector and the value of the Hamiltonian (step S161). In step S161, the solution vector closest to the optimal solution among the solution vectors obtained through the previous iteration can be output. In addition, when the first vector is saved in the storage area 60 in step S159, the computing server can also transform the first vector into a solution vector in step S161. For example, the computing server can display the spin s on the screen of the client terminal 6. iIn addition, the computing server can also transmit the spin s to other information processing devices. i The vector and the value of the Hamiltonian.

[0172] By executing Fig.21 and Fig. 22 The processing can automatically select the first vector closest to the optimal solution based on the value of the Hamiltonian, and obtain the spin s based on the first vector i vector (solution vector). Thus, a wider range of the solution space can be searched, and a practical solution can be obtained within a limited computing time. In addition, the accuracy of the calculation can also be improved by adjusting the maximum absolute value of the pseudo-random number.

[0173] exist Fig.21 and Fig. 22 In the flowchart of , the energy function of (1) is used as the Hamiltonian. However, other forms of Hamiltonian such as the Hamiltonian of (3) or the extended Hamiltonian of (4) can also be used. Therefore, when the parameter of the Hamiltonian is the first variable x i and the second variable y i In the case of , the process of transforming the first vector into the solution vector can also be skipped.

[0174] As described above, the processing circuit of the information processing device may also be configured to change the maximum absolute value of the pseudo-random number according to the number of times the second variable of the second vector is initialized. In addition, the processing circuit of the information processing device may also be configured to monotonically decrease the maximum absolute value of the pseudo-random number according to the number of times the second variable of the second vector is initialized.

[0175] Here, the process of changing the maximum absolute value of a pseudo-random number by iteration in a loop process is used as an example for explanation. However, the properties of pseudo-random numbers generated by methods different from this may also be changed. For example, the type of algorithm used in the generation of pseudo-random numbers may also be changed by iteration. In addition, the value of the seed used in the generation of pseudo-random numbers may also be changed by iteration.

[0176] Fig.23 The curve diagram shows that Figure 6 Examples of results of cases where the algorithm performs calculations. Fig.23 The horizontal axis represents the normalized first variable x i On the other hand, Fig.23 The vertical axis (the height of the bar graph) represents the first variable x after calculation i The frequency of taking values ​​of the respective ranges. Fig.23 In , the curve drawn with a solid line corresponds to the value of the Hamiltonian. Fig.23 In the curve graph, the maximum peak of the curve corresponds to the optimal solution. Fig.23 In the example, the dashed line represents the first variable x, which is equivalent to the optimal solution. i The value of Fig.23 In the example, “nor malized x i The area near ” = 1 corresponds to the optimal solution.

[0177] exist Fig.23 In the example, after calculating the first variable x i The frequency of the value of becoming a range that does not include the optimal solution (the range that does not include the dotted line) is high. Therefore, the probability of obtaining the optimal solution in the calculation process is not sufficiently high. In such a case, in order to obtain a practical solution, the calculation process needs to be repeated many times. In solving the combinatorial optimization problem, it is expected to obtain a practical solution with less calculation time.

[0178] Fig.24 The curve diagram shows that Figure 7 The algorithm is used to calculate the results of the following examples. Fig.24 In , the curve drawn with a solid line also corresponds to the value of the Hamiltonian, and the maximum peak of the curve corresponds to the optimal solution. Fig.24 In the example, the dashed line also represents the first variable x, which is equivalent to the optimal solution. i The value of .

[0179] exist Fig.24 In the example, after calculating the first variable x i The frequency of the value of entering the range containing the optimal solution (the range containing the dotted line) is higher than the frequency of entering other ranges. Fig.23 Compared with the example, the probability of obtaining the optimal solution in the calculation process is high. Fig.23 The examples are used to obtain practical solutions to combinatorial optimization problems with short computation time.

[0180] Fig.25 The curve diagram shows that Fig.17 and Fig.18 The algorithm is used to calculate the results of the following examples. Fig.25 In the same way, the curve drawn with a solid line corresponds to the value of the Hamiltonian, and the maximum peak of the curve corresponds to the optimal solution. Fig.25 In the same way, the dashed line represents the first variable x, which is equivalent to the optimal solution. i The value of .

[0181] exist Fig.25 In the example, after calculating the first variable x i The frequency of the value of entering the range containing the optimal solution (the range containing the dotted line) is higher than the frequency of entering other ranges. Fig.23 Compared with the example, the optimal solution can be obtained with a high probability. Fig.23 The examples are used to obtain practical solutions to combinatorial optimization problems with short computation time.

[0182] Fig.26 The curve diagram shows that Fig.21 and Fig. 22 The algorithm is used to calculate the results of the following examples. Fig.26 In the same way, the curve drawn with a solid line corresponds to the value of the Hamiltonian, and the maximum peak of the curve corresponds to the optimal solution. Fig.26 In the same way, the dashed line represents the first variable x, which is equivalent to the optimal solution. i The value of .

[0183] exist Fig.26 In the example, after calculating the first variable x i The frequency of the value of entering the range containing the optimal solution (the range containing the dotted line) is significantly higher than the frequency of entering other ranges. Figure 23 to Figure 25 Compared with the example, the optimal solution can be obtained with a higher probability. Fig.26 In the example, it is possible to Figure 23 to Figure 26 In this example, practical solutions to combinatorial optimization problems are obtained with minimal computational time.

[0184] In the information processing device and the information processing system of the present embodiment, the second variable y is repeatedly calculated by using pseudo random numbers. i By initializing, it is possible to search for solutions in a larger area of ​​the solution space regardless of the number of local solutions. As a result, the probability of obtaining an optimal solution or an approximate solution close to the optimal solution can be increased. In addition, by calculating the value of the Hamiltonian within the loop processing, when an optimal solution or an approximate solution close to the optimal solution is reached in the middle of the calculation process, it can be detected without omission. As a result, it is possible to provide users with an information processing device or an information processing system that calculates solutions to combinatorial optimization problems in a practical time.

[0185] Examples of an information processing system, an information processing method, a storage medium, and a program are shown below.

[0186] The information processing system may also be configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. The information processing system may include a storage device and an information processing device. The storage device is configured to store the first variable and the second variable. The information processing device updates the first vector by weighting the corresponding second variable and adding it to the first variable. In addition, the information processing device weights the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adds it to the corresponding second variable, uses multiple first variables to calculate the problem item, and adds the problem item to the second variable to update the second vector. Furthermore, after repeating the update of the first vector and the second vector, the information processing device initializes the second variable of the second vector by a pseudo-random number, and repeats the update of the first vector and the second vector again.

[0187] The information processing method may also repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. Here, the information processing method may also include: a step of updating the first vector by weighting the corresponding second variable and adding it to the first variable; and a step of updating the second vector by weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding it to the corresponding second variable, using multiple first variables to calculate the problem item, and adding the problem item to the second variable. In addition, the information processing method may also initialize the second variable of the second vector by a pseudo-random number after repeatedly updating the first vector and the second vector, and repeat the updating of the first vector and the second vector again.

[0188] The program may also cause the computer to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element. Here, the program may also include: a step of updating the first vector by weighting the corresponding second variable and adding it to the first variable; and a step of weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding it to the corresponding second variable, using multiple first variables to calculate the problem item, and adding the problem item to the second variable to update the second vector. In addition, the program may also initialize the second variable of the second vector by a pseudo-random number after repeatedly updating the first vector and the second vector in the computer, and repeat the process of updating the first vector and the second vector again. In addition, a non-transitory computer-readable storage medium may store the above program.

[0189] [Calculations including multi-body interaction terms]

[0190] By using the simulated branching algorithm, it is also possible to solve combinatorial optimization problems with objective functions of degree 3 or higher. The problem of solving the combination of variables that minimizes the objective function of degree 3 or higher with binary variables is called the HOBO (Higher Order Binary Optimization) problem. When dealing with the HOBO problem, the following formula (7) can be used as the energy formula in the Ising model extended to higher orders.

[0191] [Formula 7]

[0192]

[0193] Here, J (n) is an n-order tensor that makes the local magnetic field h of equation (1) i is generalized to the matrix J of coupling coefficients. For example, the tensor J (1) Equivalent to the local magnetic field h i A vector of n-order tensor J (n) In , when multiple subscripts have the same value, the value of the element is 0. In formula (7), the third-order terms are expressed, but the higher-order terms can also be defined in the same way as formula (7). Formula (7) is equivalent to the energy of the Ising model including multi-body interaction.

[0194] In addition, both QUBO and HOBO can be said to be a type of unconstrained polynomial binary optimization (PUBO). That is, in PUBO, a combinatorial optimization problem with a quadratic objective function is QUBO. In addition, in PUBO, a combinatorial optimization problem with a tertiary objective function is HOBO.

[0195] When solving the HOBO problem using the analog branching algorithm, it is sufficient to replace the Hamiltonian H of the above-mentioned equation (3) with the Hamiltonian H of the following equation (8).

[0196] [Formula 8]

[0197]

[0198] In addition, based on equation (8), a plurality of first variables shown in the following equation (9) are used to derive the question item.

[0199] [Formula 9]

[0200]

[0201] (9) Question item z i Take the second equation of (8) with respect to a variable xi (The first vector element) is partially differentiated. The variable x of the partial differentiation is i The variable x is different depending on the index i. i The index i of is equivalent to the index specifying the element of the first vector and the element of the second vector.

[0202] When performing calculations including terms of multi-body interaction, the above-mentioned recursive formula (6) is replaced with the following recursive formula (10).

[0203] [Formula 10]

[0204]

[0205] (10) is equivalent to the formula obtained by further generalizing the recursive formula of (6).

[0206] The questions described above are merely examples of questions that can be used by the information processing device of this embodiment, and therefore, the form of the question used in the calculation may be different from these.

[0207] [Algorithm Variations]

[0208] Here, a modification example of the analog branching algorithm is described. For example, various modifications may be made to the above-mentioned analog branching algorithm for the purpose of reducing errors or shortening calculation time.

[0209] For example, in order to reduce the calculation error, additional processing can also be performed when the first variable is updated. i When the absolute value of becomes greater than 1 due to the update, the first variable x i The value of sgn(x i ). That is, after being updated to become x i >1, variable x i The value of is set to 1. In addition, when x is updated i <-1, variable x i The value of is set to -1. Thus, the variable x can be used i With higher precision, the spin i By including this process, the algorithm is similar to i = ±1. More generally, the operation circuit may be configured to set a first variable having a value smaller than the second value to the second value and to set a first variable having a value larger than the first value to the first value.

[0210] Then, when x is updated i >1, it can also be used for variable x i The corresponding variable yi Multiply by the coefficient rf. For example, if the coefficient rf of -1 < r ≤ 0 is used, the above-mentioned wall becomes a wall with a reflection coefficient rf. In particular, when the coefficient rf of rf = 0 is used, the algorithm becomes equivalent to the physical model in which there are walls where completely inelastic collisions occur at positions of x i = ±1. More generally, the arithmetic circuit can also be configured to update the second variable corresponding to the first variable whose value is smaller than the first value or the second variable corresponding to the first variable whose value is larger than the second value to the value obtained by multiplying the original second variable by the second coefficient. For example, the arithmetic circuit can also be configured to update the second variable corresponding to the first variable whose value is smaller than -1 or the second variable corresponding to the first variable whose value is larger than 1 to the value obtained by multiplying the original second variable by the second coefficient. Here, the second coefficient corresponds to the above-mentioned coefficient rf.

[0211] In addition, when x i > 1 is obtained by the update, the arithmetic circuit can also i set the value of the variable y i corresponding to the variable x to a pseudo-random number. For example, a random number in the range of [-0.1, 0.1] can be used. That is, the arithmetic circuit can also be configured to set the value of the second variable corresponding to the first variable whose value is smaller than the second value or the value of the second variable corresponding to the first variable whose value is larger than the first value to a pseudo-random number.

[0212] If the update process is performed in such a way as to suppress |x i | > 1 as described above, then even if the non-linear terms K × x i 2 in (6) and (10) are removed, the value of x i will not diverge. Therefore, the algorithm represented by the following (11) can be used.

[0213] [Equation 11]

[0214]

[0215] In the algorithm of (1), in the problem term, instead of using a discrete variable, a continuous variable x is used. Therefore, an error may occur with the discrete variable used in the original combinatorial optimization problem. To reduce this error, as in the following (12), in the calculation of the problem term, the value sgn(x) obtained by transforming the continuous variable x with the sign function can be used instead of the continuous variable x.

[0216] [Equation 12]

[0217]

[0218] In (12), sgn(x) corresponds to the spin s.

[0219] In (12), the coefficient α of the term containing the first-order tensor in the problem term can also be set to a constant (for example, α = 1). In the algorithm of (12), since the product of the spins appearing in the problem term must take a value of -1 or 1, when dealing with the HOMO problem with a high-order objective function, it is possible to prevent the occurrence of errors caused by product operations. As in the algorithm of (12) above, the data calculated by the computing server can also include the variable s i (i=1, 2, ..., N) is the spin vector of the element (s1, s2, ..., s N ). By transforming the elements of each first vector using a sign function, a spin vector can be obtained.

[0220] [Example of parallelizing variable update processing]

[0221] Hereinafter, an example of parallelization of the update process of variables during calculation of the simulation branching algorithm will be described.

[0222] First, we will explain an example of implementing a simulation branching algorithm on a PC cluster. A PC cluster is a system that connects multiple computers to achieve computing performance that cannot be achieved with a single computer. For example, Figure 1 The information processing system 100 shown in FIG. 1 includes a plurality of computing servers and processors and can be used as a PC cluster. For example, in a PC cluster, by using MPI (Message Passing Interface), even a configuration in which memories are distributed among a plurality of computing servers such as the information processing system 100 can perform parallel computing. For example, the control program 14E of the management server 1, the computing program 34B of each computing server, and the control program 34C can be installed using MPI.

[0223] When the number of processors used by the PC cluster is Q, each processor can be made to perform the first vector (x1, x2, ..., x N ) contains the variable x i Similarly, each processor can perform the calculation of the second vector (y1, y2, ..., y N ) contains the variable y i That is, processor #j (j=1, 2, ..., Q) performs the calculation of the variables {x m |m=(j-1)L+1, (j-1)L+2,…,jL} and {y m |m=(j-1)L+1,(j-1)L+2,…,jL}. In addition, it is assumed that {y mThe tensor J represented by the following (13) is required for the calculation of |m=(j-1)L+1,(j-1)L+2,…,jL} (n) It is stored in a storage area (eg, register, cache, memory, etc.) accessible to processor #j.

[0224] [Formula 13]

[0225]

[0226] Here, the case where each processor calculates the variables of the constant number of the first vector and the second vector is described. However, the number of elements (variables) of the first vector and the second vector as the calculation object may be different depending on the processor. For example, in the case where there is a performance difference depending on the processor installed in the calculation server, the number of variables as the calculation object may be determined according to the performance of the processor.

[0227] In order to change the variable y i The value of the first vector (x1, x2, ..., x N ) is the value of all components of . The conversion to binary variables can be performed by using the sign function sgn(), for example. Therefore, the Allgather function can be used to make Q processors share the first vector (x1, x2, ..., x N )'s values ​​of all components. N ), although it is necessary to share values ​​between processors, the second vector (y1, y2, ..., y N ) and tensor J (n) , it is not necessary to share values ​​between processors. Sharing of data between processors can be achieved, for example, by using inter-processor communication or storing data in a shared memory.

[0228] Processor #j computes the problem item {z m |m=(j-1)L+1,(j-1)L+2,…,jL}. Then, processor #j calculates the value of the problem item {{z m |m=(j-1)L+1,(j-1)L+2,…,jL}, and change the variable {y m |m=(j-1)L+1,(j-1)L+2,…,jL} is updated.

[0229] As shown in the above equations, in the vector of the problem item (z1, z2, ..., z N ), the calculation of the tensor J(n) and the vector (x1, x2, ..., x N) is the most computationally intensive process in the above algorithm and may become a bottleneck in improving the calculation speed. Therefore, in the installation of a PC cluster, the sum-of-products operation can be distributed to Q = N / L processors and executed in parallel, thereby shortening the calculation time.

[0230] Fig. 27 An example of a multi-processor structure is schematically shown. Fig. 27 For example, the multiple computing nodes correspond to multiple computing servers of the information processing system 100. Fig. 27 The high-speed link is equivalent to, for example, the interconnection between computing servers formed by the cables 4 a - 4 c and the switch 5 of the information processing system 100 . Fig. 27 The shared memory in is equivalent to shared memory 32. Fig. 27 The processors of are, for example, equivalent to the processors 33A to 33D of each computing server. Fig. 27 Although multiple computing nodes are shown in FIG. 1 , this does not prevent the use of a single computing node structure.

[0231] exist Fig. 27 The data configured in each component and the data transmitted between the components are shown in FIG. In each processor, the variable x is calculated. i ,y i In addition, the variable x is transferred between the processor and the shared memory. i In the shared memory of each computing node, for example, the first vector (x1, x2, ..., x N ), the second vector (y1, y2, ..., y N ) of L variables and tensor J (n) Then, in the high-speed link connecting the computing nodes, for example, the first vector (x1, x2, ..., x N ). When using the Allgather function, in order to update the variable y with each processor i , we need the first vector (x1, x2, ..., x N ) all elements.

[0232] in addition, Fig. 27 The arrangement and transfer of data shown are merely examples, and there are no particular limitations on the method of arranging data, the method of transferring data, and the method of implementing parallelization in the PC cluster.

[0233] Alternatively, a GPU (Graphics Processing Unit) may be used to perform calculations of the analog branching algorithm.

[0234] Fig.28 An example of a configuration using a GPU is schematically shown. Fig.28 FIG. 4 shows multiple GPUs connected to each other via high-speed links. Each GPU is equipped with multiple cores that can access shared memory. Fig.28 In the structural example, multiple GPUs are connected via high-speed links to form a GPU cluster. Figure 1 In the case of each computing server, the high-speed link corresponds to the interconnection between the computing servers formed by the cables 4a to 4c and the switch 5. Fig.28 In the structural example, multiple GPUs are used, but when only one GPU is used, parallel calculations can also be performed. Fig.28 Each GPU can perform Fig.16 That is, the processor (processing circuit) of the information processing device (computing server) can be the core of the graphics processing unit (GPU).

[0235] In the GPU, the variable x i and i And the tensor J (n) is defined as a device variable. The GPU can calculate the variables y in parallel through the matrix-vector product function. i The tensor J required in the update (n) With the first vector (x1, x2, ..., x N ). In addition, by repeatedly performing the matrix-vector product operation, the tensor-vector product can be obtained. In addition, for the first vector (x1, x2, ..., x N ) and the second vector (y1, y2, ..., y N ) can enable each thread to execute the i-th element (x i ,y i ) to realize parallel processing.

[0236] The information processing device may include a plurality of processing circuits. In this case, each processing circuit may be configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

[0237] Furthermore, the information processing system may include a plurality of information processing devices. In this case, each processing circuit may be configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

[0238] [Holistic approach for solving combinatorial optimization problems]

[0239] The following describes the overall process performed to solve a combinatorial optimization problem using a simulated branching algorithm.

[0240] Fig.29The flowchart of FIG. 1 shows an example of the overall processing performed to solve a combinatorial optimization problem. Fig.29 The processing will be described.

[0241] First, the combinatorial optimization problem is formulated (step S201). Then, the formulated combinatorial optimization problem is transformed into an Ising problem (in the form of an Ising model) (step S202). Next, the solution to the Ising problem is calculated by an Ising machine (information processing device) (step S203). Then, the calculated solution is verified (step S204). For example, in step S204, it is confirmed whether the constraint conditions are satisfied. In addition, in step S204, it is also possible to refer to the value of the objective function to confirm whether the obtained solution is an optimal solution or an approximate solution close to the optimal solution.

[0242] Then, it is determined whether to perform recalculation based on at least one of the verification result or the number of calculations in step S204 (step S205). When it is determined that recalculation is to be performed (yes in step S205), the processing of steps S203 and S204 is performed again. On the other hand, when it is determined that recalculation is not to be performed (no in step S205), a solution is selected (step S206). For example, in step S206, the selection can be made based on at least one of the sufficiency of the constraints or the value of the objective function. In addition, if multiple solutions are not calculated, the processing of step S206 can also be skipped. Finally, the selected solution is transformed into a solution to the combinatorial optimization problem, and the solution to the combinatorial optimization problem is output (step S207).

[0243] By using the information processing device, information processing system, information processing method, storage medium and program described above, the solution of the combinatorial optimization problem can be calculated in a practical time. Thus, the solution of the combinatorial optimization problem becomes easier, which can promote social innovation and scientific and technological progress.

[0244] In addition, the present invention is not limited to the above-mentioned embodiments, and the constituent elements can be deformed and concretized in the implementation stage without departing from the scope of its main purpose. In addition, various inventions can be formed by appropriate combinations of multiple constituent elements disclosed in the above-mentioned embodiments. For example, several constituent elements can also be deleted from all the constituent elements shown in the embodiments. Furthermore, the constituent elements in different embodiments can also be appropriately combined.

[0245] Description of Reference Numerals

[0246] 1 Management Server

[0247] 2 Network

[0248] 3a, 3b, 3c computing servers

[0249] 4a, 4b, 4c cables

[0250] 5 Switch

[0251] 6 Client Terminal

[0252] 10 Processor

[0253] 11 Management Department

[0254] 12 Transformation Unit

[0255] 13. Control Unit

[0256] 14 Storage

[0257] 14A Question Data

[0258] 14B Calculation Data

[0259] 14C Management Program

[0260] 14D Transformation Procedure

[0261] 14E, 34C control program

[0262] 15, 31 Communication circuit

[0263] 16 Input Circuit

[0264] 17 Output Circuit

[0265] 18 Operating device

[0266] 19 Display device

[0267] 20 Bus

[0268] 32 Shared Memory

[0269] 33A, 33B, 33C, 33D processors

[0270] 34 Memory

[0271] 34A Calculation data

[0272] 34B Calculation Procedure

[0273] 35 Host Bus Adapter

Claims

1. An information processing device configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing device comprising: a storage unit configured to store the first variable and the second variable; and The processing circuit is configured to perform the following processing: updating the first vector by weighting the corresponding second variable and adding it to the first variable; Weighting the first variables with a first coefficient that monotonically increases or decreases according to the number of updates and adding the coefficients to the corresponding second variables, calculating a problem term using a plurality of the first variables, and updating the second vector by adding the problem term to the second variables; and After repeatedly updating the first vector and the second vector, the second variable of the second vector is initialized by a pseudo-random number, and the first vector and the second vector are repeatedly updated again. The information processing device includes a plurality of the processing circuits. Each of the processing circuits is configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

2. The information processing device according to claim 1, wherein: The processing circuit is configured to change the maximum absolute value of the pseudo-random number according to the number of times the initialization of the second variable of the second vector is performed.

3. The information processing device according to claim 1, wherein: The processing circuit is configured to monotonically decrease the maximum absolute value of the pseudo-random number according to the number of times the initialization of the second variable of the second vector is performed.

4. The information processing device according to any one of claims 1 to 3, wherein: The processing circuit is configured to calculate a value of an objective function based on the first vector after repeatedly updating the first vector and the second vector, and to repeat updating the first vector and the second vector again after storing the first vector and the value of the objective function in the storage unit.

5. The information processing device according to any one of claims 1 to 3, wherein: The processing circuit is configured to, after repeatedly updating the first vector and the second vector, transform the first variable as a positive value into a first value, and transform the first variable as a negative value into a second value smaller than the first value, thereby calculating a solution vector according to the first vector, calculating the value of the objective function based on the solution vector, and after saving the solution vector and the value of the objective function in the storage unit, repeatedly updating the first vector and the second vector.

6. The information processing device according to any one of claims 1 to 3, wherein: The pseudo-random number generated by the processing circuit is a normal random number.

7. The information processing device according to any one of claims 1 to 3, wherein: The pseudo-random number generated by the processing circuit is a uniform random number.

8. The information processing device according to any one of claims 1 to 3, wherein: The problem term calculated by the processing circuit is based on an Ising model.

9. The information processing device according to claim 8, wherein: The problem terms calculated by the processing circuit include multi-body interactions.

10. An information processing system configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing system comprising: a storage device configured to store the first variable and the second variable; and The information processing device is configured to perform the following processing: updating the first vector by weighting the corresponding second variable and adding it to the first variable; Weighting the first variables with a first coefficient that monotonically increases or decreases according to the number of updates and adding the coefficients to the corresponding second variables, calculating a problem term using a plurality of the first variables, and updating the second vector by adding the problem term to the second variables; and After repeatedly updating the first vector and the second vector, the second variable of the second vector is initialized by a pseudo-random number, and the first vector and the second vector are repeatedly updated again. The information processing system comprises a plurality of the information processing devices. Each of the information processing devices is configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

11. An information processing method, using a storage unit and a plurality of processing circuits to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element, the information processing method comprising the following steps: A step of updating the first vector by weighting the corresponding second variable and adding it to the first variable; and The steps of weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding the first coefficient to the corresponding second variable, calculating a problem term using a plurality of the first variables, and updating the second vector by adding the problem term to the second variable, After repeatedly updating the first vector and the second vector, the second variable of the second vector is initialized by a pseudo-random number, and the updating of the first vector and the second vector is repeated again. Each of the processing circuits is configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

12. A non-transitory computer-readable storage medium storing a program for causing a computer having a storage unit and a plurality of processing circuits and configured to repeatedly update a first vector having a first variable as an element and a second vector having a second variable corresponding to the first variable as an element to execute the following steps using the storage unit and the plurality of processing circuits: A step of updating the first vector by weighting the corresponding second variable and adding it to the first variable; and The steps of weighting the first variable with a first coefficient that monotonically increases or decreases according to the number of updates and adding the first coefficient to the corresponding second variable, calculating a problem term using a plurality of the first variables, and updating the second vector by adding the problem term to the second variable, The program causes the computer to perform the following processing: after repeatedly updating the first vector and the second vector, the second variable of the second vector is initialized by a pseudo-random number, and the first vector and the second vector are repeatedly updated again. Each of the processing circuits is configured to update at least a portion of the first vector and at least a portion of the second vector in parallel.

Citation Information

Patent Citations

  • Quantum calculation device and method

    JP2017073106A

  • Apparatus and method for performing SIMD multiply-accumulate operations

    CN102197369A

  • Multi-objective decision engine parameter optimization method based on multi-objective quantum ant colony algorithm

    CN103324978A