Update the local field matrix of the system

JP7643149B2Active Publication Date: 2025-03-11FUJITSU LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2021064945
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-04-15
Filing Date
2021-04-06
Publication Date
2025-03-11
Estimated Expiration
2041-04-06

Smart Images

  • Figure 0007643149000038
    Figure 0007643149000038
  • Figure 0007643149000039
    Figure 0007643149000039
  • Figure 0007643149000040
    Figure 0007643149000040
Patent Text Reader

Abstract

To provide an algorithm for solving an optimization problem in polynomial time.SOLUTION: A method includes the steps of: acquiring a first matrix associated with an optimization problem associated with a system; acquiring a second matrix associated with the optimization problem; acquiring a local field matrix that indicates interactions between variables of the system as influenced by respective weights of the variables; updating the local field matrix in response to a state change of one or more variables of the systems during a period for solving the optimization problem; updating an energy value of the system on the basis of the updated local field matrix; and determining a solution of the optimization problem on the basis of the energy value.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The embodiments discussed herein relate to updating the local field matrices of the system. [Background technology]

[0002] Combinatorial optimization problems are often classified as NP problems (Nondeterministic Polynomial time Problems), such as NP-hard or NP-complete problems. There are no known algorithms for solving such problems in polynomial time. Such combinatorial optimization problems may appear in many applications, such as minimizing the number of vias in a layout design, maximizing the profit from a stock investment, airline route routing, and wireless sensor networks.

[0003] The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced. Summary of the Invention

[0004] According to an aspect of an embodiment, the operations may include obtaining a first matrix associated with an optimization problem associated with a system and obtaining a second matrix associated with the optimization problem. The first matrix and the second matrix may be associated with corresponding weights given to respective variables of the system, where the corresponding weights may be associated with relationships between the respective variables and one or more other variables. The operations may include obtaining a local field matrix indicative of interactions between the variables of the system as affected by the respective weights of the variables. The interactions may be associated with changes in state of the variables during solving the optimization problem. In response to changes in state of one or more variables of the system during solving the optimization problem, the operations may include updating the local field matrix. Updating the local field matrix may include performing one or more arithmetic operations on a first portion of the first matrix and a second portion of the second matrix corresponding to a third portion of the local field matrix corresponding to the one or more variables. The operations may include updating an energy value of the system based on the updated local field matrix and determining a solution to the optimization problem based on the energy value.

[0005] The object and advantages of the embodiments will be realized and achieved at least by the elements, features, and combinations particularly pointed out in the claims.

[0006] Both the foregoing general description and the following detailed description are provided by way of example and explanation, and are not limitations of the invention as claimed. [Brief description of the drawings]

[0007] Exemplary embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:

[0008] [Figure 1A] FIG. 1 depicts an exemplary environment configured to solve an optimization problem.

[0009] [Figure 1B] 1 illustrates an example technique relating to updating a local field matrix.

[0010] [Figure 1C] 1 illustrates another example technique relating to updating a local field matrix.

[0011] [Figure 1D] 1 illustrates another example technique relating to updating a local field matrix.

[0012] [Figure 1E] 1 illustrates another example technique relating to updating a local field matrix.

[0013] [Figure 1F] 1 illustrates another example technique relating to updating a local field matrix.

[0014] [Diagram 2] 1 illustrates a block diagram of an example computing system configured to perform replica exchange processing.

[0015] [Diagram 3] 1 shows a flowchart of an exemplary method for solving an optimization problem. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0016] Combinatorial optimization problems may include a class of optimization problems that are used to determine the maximum or minimum of an energy or cost function of a system. For example, combinatorial optimization problems may be used to minimize the number of vias in a circuit layout design, to maximize stock returns, to optimize airline routing and scheduling, for the configuration of wireless sensor networks, among others.

[0017] In some examples, an Ising Model may be used to solve the optimization problem. In particular, the Ising energy of the Ising Model may be a representation of the entire state space of a particular system corresponding to a particular optimization problem. A minimization technique to determine a minimum value of the energy or a maximization technique to determine a maximum value of the energy may be used to solve the optimization problem. For example, the state of the particular system corresponding to the determined minimum or maximum energy may be used as a solution to the particular optimization problem. References to determining a minimum or maximum energy are not limited to determining an absolute minimum or maximum energy of the system. Rather, references to determining a minimum or maximum energy may include performing a minimization or maximization operation on the energy of the system, and the output of such an operation is used as a solution to the corresponding optimization problem.

[0018] As described below, a local field matrix may be used to indicate the amount of change in the energy of a particular system when the state of the variables of the particular system changes. The local field matrix includes values ​​based on the interaction of the variables of a particular system as affected by the weights of the variables with respect to a change in state of one or more of the variables. As discussed in detail below, in accordance with one or more embodiments of the present disclosure, certain techniques may be used to determine and update the local field matrix and / or the energy of the system during the solution of the corresponding optimization problem in a manner that reduces memory and / or processing requirements. For example, as described above, the local field matrix may be based on weights corresponding to the variables of a particular system. Furthermore, the energy may be based on the weights. As described in detail below, the local field matrix and / or the energy may be updated during the solution of the optimization problem by determining values ​​of the associated weights during the solution of the optimization problem. The determination of the weights may thus be suitably performed in real time, rather than storing a weight matrix including the values ​​of the weights and then accessing the weights for updating the local field matrix and / or the energy.

[0019] Because the weight matrix can be a very large matrix, the ability to avoid storing the weight matrix can provide significant memory savings. Instead, as described below, very small matrices can be stored and their corresponding values ​​can be used to determine the weight values. In this way, the amount of memory used in solving the optimization problem can be reduced. Additionally or alternatively, in some embodiments, the reduced storage requirements can allow all of the storage to be performed on a single processing chip (e.g., via the chip's cache). This can improve the processing speed of solving the optimization problem by reducing or avoiding calls to memory that may be stored off-chip. Thus, a computing system used in solving an optimization problem can be improved by reducing the memory requirements of the system for solving the optimization problem.

[0020] Embodiments of the present disclosure will now be described with reference to the accompanying drawings.

[0021] 1A illustrates an example environment 100 configured to solve an optimization problem, arranged in accordance with at least one embodiment described in this disclosure. The environment 100 may include an energy determination engine 102 (energy engine 102) configured to update and output system updates 104 for a system 106. In these or other embodiments, the environment 100 may include a local field matrix engine 108 (LFM engine 104) configured to update a local field matrix 110 (LFM 110) based on the system updates 104.

[0022] The system 106 may include any suitable representation of an optimization problem that may be solved. For example, in some embodiments, the system 106 may include a state vector X that may include a set of variables, each of which may represent a characteristic related to the optimization problem. The state vector X may thus represent different states of the system 106. For example, a first state vector X1 may represent a first state of the system 106, with each of the variables having a first value. A second state vector X2 may represent a second state of the system 106, with each of the variables having a second value. In these or other embodiments, the difference between state vectors X1 and X2 may be anywhere from only one corresponding variable in both X1 and X2 having a different value to every variable in X1 and X2 having a different value.

[0023] By way of example, system 106 may be a neural network that may include any suitable number of nodes (also referred to as "neurons"). In these or other embodiments, a state vector X of system 106 may represent a state of each of the neurons of the neural network. For example, each neuron may be a bit that may have a value of "0" or "1", and the state vector X may have a "1" value or a "0" value for each neuron of the neural network. In these or other embodiments, the neural network may be configured to solve one or more different types of optimization problems in any suitable manner.

[0024] In some embodiments, the neural network of the system 106 may be configured as a Boltzmann machine. In these or other embodiments, the Boltzmann machine may be configured as a clustered Boltzmann machine (CBM) where neurons of the Boltzmann machine may be grouped into clusters. The clusters may be formed such that there are no connections between neurons in the same cluster (e.g., weights between neurons in a cluster may be "0"). In these or other embodiments, the CBM may be configured to have an at-most-n constraint where "n" neurons in any given cluster are active (e.g., have a value of "1"). For example, the CBM may have an exactly-1 (1-hot encoding) constraint where exactly one of the neurons in a cluster must be active at any time, and the remaining neurons in the cluster must be inactive (have a bit value of "0"). Exemplary clustering that may be used is row clustering and / or column clustering on the rows and columns of the state matrix X. In these or other embodiments, clusters may be combined to form cross clusters. For example, a row cluster may be combined with a column cluster to form a cross cluster. Such a cross cluster configuration with an exactly-1 constraint may constrain the state matrix X such that only one neuron is active in each row and each column of the state matrix X.

[0025] In some embodiments, the state matrix X may be reduced in size using clustering. For example, in a given cluster (a particular row) with an exactly-1 constraint, only one neuron may be active, so rather than storing values ​​indicating the state of all neurons in the cluster, a single index value may instead be stored indicating which neurons in the cluster are active. In such an example, the state matrix X may be represented by a state vector X.

[0026] Additionally or alternatively, the system 106 may include an Ising model that is mapped to an optimization problem to represent the Ising energy of the optimization problem corresponding to the system 106. For example, the Ising energy of a system having variables with binary states may be represented by the following equation (1):

number

[0027] The energy engine 102 may include code and routines configured to enable a computing system to perform one or more of the operations described together. Additionally or alternatively, the energy engine 102 may be implemented using hardware including any number of processors, microprocessors (e.g., performing or controlling the execution of one or more operations), field-programmable gate arrays (FPGAs), or application-specific integrated circuits (ASICs), or any suitable combination of two or more thereof.

[0028] Alternatively or additionally, the energy engine 102 may be implemented using a combination of hardware and software. In this disclosure, operations described as being performed by the energy engine 102 may include operations that the energy engine 102 may instruct a corresponding system to perform.

[0029] In some embodiments, the energy engine 102 may be configured to randomly (e.g., by a stochastic process) generate proposed changes to one or more variables of the state vector X. For example, in some embodiments, in a CBM with exactly-1 constraints, the proposed changes may include changing an inactive neuron to active, and, as a result, changing an active neuron to inactive. Thus, two changes (e.g., a bit flip) may occur for any given cluster. Additionally or alternatively, in a cross-cluster configuration with exactly-1 constraints, such as a combined row cluster and combined column cluster configuration, the proposed changes may include four bit flips, since changing the state of a neuron in a particular row also affects the column to which the changed neuron belongs.

[0030] In some embodiments, the decision as to whether to accept a particular change for a particular cluster may be based on any suitable probability function. In these or other embodiments, the probability function may be based on a change in system energy that may be caused by the particular change. In some embodiments, the change in system energy may be determined using the LFM 110.

[0031] The LFM 110 may represent the interactions between the variables of the system 106 as affected by the weights of the variables on the change in state of the variables. For example, the values ​​of the variables of the system 106 of the LFM 110 may be expressed in equation (2) as follows:

number

[0032] In equation (2), h i (x) is the local field value of the i-th variable of the local field matrix H, and the i-th variable of the local field matrix H corresponds to the i-th variable of the corresponding state matrix X. j is the j-th variable of the state vector X and can be 0 or 1. ijis the connection weight between the i-th variable and the j-th variable of X. i is the bias associated with the i-th

[0033] As mentioned above, in some embodiments, the change in system energy for the proposed change may be based on the LFM 110. For example, the change in system energy for a non-cross-clustered CBM (e.g., for a row cluster of the CBM) may be determined in equation (3) as follows:

number

[0034] In equation (3), k is the corresponding state vector X RC represents a given row of the state matrix X when indexed by h k,j and h k,i corresponds to the neuron involved in the proposed change. In equation (3), h k,j x k,j Activate and x k,i Neuron x, which is inactive before the proposed swap that may cause k,j are the local field matrix values ​​corresponding to h k,i is the number of neurons x that are active k,i are the local field matrix values ​​corresponding to

[0035] In another example, the change in system energy for a cross-clustered CBM (eg, for a row / column cross-clustered CBM) may be determined in equation (4) as follows:

number

[0036] In equation (4), k and k' are the corresponding state vectors X XC When indexed by, l and l′ denote the rows of the state matrix X, respectively. XC represents the indices of active neurons in rows k and k' in hk,l , h k’,l’ , h k,l’ , and h k’,l corresponds to a neuron involved in the proposed changes as above. k,l,k’,l’ and w k,l’,k’,l corresponds to a weight that may correspond to the neuron in question for which the proposed change is made. As described in more detail below, in some embodiments, the energy engine 102 may use w k,l,k’,l’ and w k,l’,k’,l may be configured to determine the value of based on the first matrix 112 and the second matrix 114, for example, using one or more of equations (13) and (14) described below.

[0037] As discussed above, the probability of accepting a proposed change to one or more variables may be based on the change in system energy that may occur in response to the proposed change. For example, the probability of accepting a proposed change for a system of non-cross-clustered CBMs (e.g., for row clusters of the CBM) where the change in energy is determined based on equation (3) above may be determined in equation (5) as follows:

number

[0038] In equation (5), ΔE RC (X RC , k) may be the energy change determined from equation (3) and t may be a scaling factor that may be used to influence whether or not to make a change. For example, t may be the "temperature" used as a scaling factor when performing a simulated or digital annealing process such as replica exchange (also called "parallel tempering").

[0039] In another example, the acceptance probability of a proposed change in a cross-clustered CBM system (e.g., for row / column cross-clusters of a CBM) where the change in energy is determined based on equation (4) above may be determined in equation (6) as follows:

number

[0040] In equation (6), ΔE RC (X XC , k, k′) may be the energy change determined from equation (4), and t may be a scaling factor as described above with respect to equation (5).

[0041] The energy engine 102 may output system updates 104. The system updates 104 may include updates to the system 106 that may occur in response to accepting one or more proposed changes.

[0042] In some embodiments, the energy engine 102 may be included in or be part of a simulated annealing system (e.g., a digital annealing system or a quantum annealing system). In these or other embodiments, the energy engine 102 may be configured to perform a Markov Chain Monte Carlo (MCMC) process on the system 106. For example, the energy engine 102 may be configured to perform a replica exchange to find a state vector Xmin that may minimize the energy of the system 106. In another example, the energy engine 102 may be configured to perform a replica exchange to find a state vector Xmax that may maximize the energy of the system 106. The replica exchange may include running M copies of the system 106 simultaneously, but with different scaling factors that affect whether changes occur to the system while the copies of the system 106 are running. Thus, in some embodiments, the energy engine 102 may perform the update operations described above on multiple replicas of the system 106 at different temperature levels.

[0043] The LFM engine 108 may be configured to update the LFM 110 based on updates to the system 106, which may be reflected in the system updates 104. Additionally or alternatively, the LFM engine 108 may be configured to initially generate the LFM 110 based on the system 106 by initializing a solution to a corresponding optimization problem.

[0044] As shown by equation (2) above, the value of the LFM 110 may be based on the value of the state matrix X and the connection weights between the variables of the system 106. The connection weights of the system 106 may correspond to a first matrix 112 and a second matrix 114.

[0045] The first matrix 112 and the second matrix 114 may each be a matrix that may represent a feature of a corresponding optimization problem that may generate weights between variables of the system 106. For example, in a Quadratic Assignment Problem (QAP), the first matrix 112 may be a corresponding flow matrix and the second matrix may be a corresponding distance matrix. The first matrix 112 and the second matrix 114 may correspond to any other suitable matrices for any other applicable problem that may be used in a similar manner as the flow and distance matrices of the QAP.

[0046] The LFM engine 108 may be configured to use the first matrix 112 and the second matrix 114 to determine weight values ​​that may be used to update the LFM 110. In some embodiments, the LFM engine 108 may make this determination on-the-fly and dynamically each time a new system update 104 occurs. The LFM engine 108 may be configured to use the first matrix 112 and the second matrix 114 to obtain the weights in this dynamic manner on-the-fly, instead of accessing a stored weight matrix that includes all of the weights already stored.

[0047] In some embodiments, the transpose of the first matrix 112 and the second matrix 114 may be used to obtain the weights. For example, in examples where the first matrix 112 and / or the second matrix 114 are asymmetric, the transpose of the first matrix 112 and the second matrix 114 may be used to determine the weights, as described in more detail below. In these or other embodiments, in examples where the first matrix 112 and the second matrix 114 are symmetric, the transpose of these matrices may not be used or necessary.

[0048] Using the first matrix 112 and the second matrix 114 instead of a weighting matrix may improve storage and / or performance characteristics of the environment 100. For example, the number of elements in the weighting matrix is ​​typically orders of magnitude greater than the number of elements in the first matrix 112 and the second matrix 114. For example, a weighting matrix may have n 4 elements, and the first matrix 112 and the second matrix 114 each have n 2 elements, so that their combination is 2n 2 elements. Thus, using the first matrix 112 and the second matrix 114 to determine the weights rather than storing a weight matrix may result in significant memory savings. For example, the first matrix 112 and the second matrix 114 may be stored in a computer-readable storage media ("CRM 116") and may occupy much less storage space (e.g., 99% less) than a weight matrix that may be used to track the weight values.

[0049] In instances where the transposes of the first matrix 112 and the second matrix 114 may be used and stored, the memory savings may still be substantial. For example, the total number of elements stored in such a scenario may be 4n 2 which may still be n depending on the size of n. 4 can be significantly smaller.

[0050] In some embodiments, the memory savings may allow the LFM engine 108 and the CRM 116 to reside on the same chip. This may improve processing speed by reducing the fetch time for data stored in the CRM 116 for the first matrix 112 and the second matrix 114. Thus, in some embodiments, the LFM engine 108 and the CRM 116 storing the first matrix 112 and the second matrix 114 may reside on the same chip. Additionally or alternatively, the LFM engine 108 and the CRM 116 storing the first matrix 112 and the second matrix 114 may reside on different chips.

[0051] Further, in examples where the LFM engine 108 is implemented as software instructions, the LFM engine 108 may be stored on the same CRM 116 as the first matrix 112 and the second matrix 114. Additionally or alternatively, in examples where the LFM engine 108 is implemented as software instructions, the LFM engine 108 may be stored on a different CRM 116 than the first matrix 112 and the second matrix 114.

[0052] In some embodiments, the LFM 1 10 may be stored on the same CRM 116 as the first matrix 112 and the second matrix 114. In these or other embodiments, the combined LFM 110, first matrix 112, and second matrix 114 may still occupy a much smaller amount of memory space than the weight matrix.

[0053] Additionally or alternatively, LFM 1 10 may be stored on a different CRM 116 than the first matrix 112 and the second matrix 114. In these or other embodiments, the LFM 110, the first matrix 112, the second matrix 114, the LFM engine 108, and the energy engine 102 may be stored together or separately on any suitable configuration of one or more CRMs.

[0054] As described above, the LFM engine 108 may be configured to update the LFM 110 using the first matrix 112 and the second matrix 114 to determine weights corresponding to variables updated in the system update 104. In these or other embodiments, the determined weights may be used to update the LFM 110.

[0055] For example, the first matrix 112 and the second matrix 114 may be symmetric flow matrix "F" and distance matrix "D", respectively. Additionally, the system 106 may include a row / column cross-clustered Boltzmann machine, and the system updates 104 may include changes to a particular row "r" and a particular column "c" of the system 106. In such an example, the sub-weight matrix "w r,c " are the rows "F" and "D" of matrices "F" and "D" corresponding to a particular row "r" and a particular column "c" of the system 106 according to equation (7) as follows: r,* " and "D c,* " may be determined by determining the tensor product of

number

[0056] Based on equations (2) and (7), the LFM engine 108 generates a system update 104 ("h") according to equation (8) below: i,* ") may be modified.

number

[0057] In equation (8),

number

[0058] In some embodiments, the LFM engine 108 may be configured to perform individual multiplication operations, which in turn update the corresponding four variables of the LFM 110 problem. For example, FIG. 1B illustrates the multiplication of neurons (also referred to as "bits" in algorithm 150) x k,l and x k’,l’ is inactive, and neuron x k’,l and x k,l’ 1 illustrates an exemplary algorithm 150 that may be used to sequentially update the LFM 110 in an example where x is active. k,l and x k’,l’ , and x k’,l and x k,l’ , in order to update elements of the LFM 110 that correspond to the algorithm 150. The algorithm 150 may be implemented using any suitable implementation in software and / or hardware.

[0059] 1B also illustrates an exemplary hardware implementation 152 of the LFM engine 108 configured to implement the algorithm 150. In the implementation 152, all elements may be stored on the same chip. The implementation 152 may be an exemplary implementation of the computing system 202 of FIG. 2 in some embodiments, or may include one or more elements thereof. Additionally or alternatively, the implementation 152 may use a graphics processing unit (GPU) and / or a field programmable gate array (FPGA) to perform one or more of the processing functions in some embodiments.

[0060] Further, LFM 110 may be represented by "H", and first matrix 112 and second matrix 114 may be represented by "F" and "D", respectively. Additionally, in the illustrated example, "H", "F", and "D" may be stored in on-chip memory 154 of implementation 152. The "F" matrix may be a "DIM x DIM" matrix, and Dim-To-1 MUX 156 of implementation 152 may be configured to select the relevant portion of "F" when performing the operations of algorithm 150. Furthermore, implementation 152 may select the current fruit 150. The algorithm 150 may include an arithmetic element 158 ​​configured to perform the associated multiplication and addition operations of the algorithm 150 on each of the individual elements of "F" and "D" associated with the operations in the row.

[0061] For example, arithmetic element 158 ​​may perform the following operations of lines “1” and “2” of algorithm 150, in order:

number

number

number

number

[0062] Additionally or alternatively, the LFM engine 108 may be configured to simultaneously perform two or more of the update operations in equation (8) for the four variables of interest. For example, FIG. 1C illustrates the update of x k,l and x k’,l’is inactive, and neuron x k’,l and x k,l’ 1 shows another example algorithm 160 that may be used to update the LFM 110 regarding which x k,l and x k’,l’ Based on the deactivation of x k,l and x k’,l’ The algorithm 160 is also configured to substantially simultaneously update the elements of the LFM 110 corresponding to x k’,l and x k,l’ Based on the activation of x k’,l and x k,l’ and 150. In this manner, algorithm 160 may be approximately twice as fast as algorithm 150. Algorithm 160 may be implemented using any suitable implementation in software and / or hardware.

[0063] 1C also illustrates an exemplary hardware implementation 162 of the LFM engine 108 configured to implement the algorithm 160. In the implementation 162, all elements may be stored on the same chip. The implementation 162 may be an exemplary implementation of the computing system 202 of FIG. 2 in some embodiments, or may include one or more elements thereof. Additionally or alternatively, the implementation 162 may use a graphics processing unit (GPU) and / or a field programmable gate array (FPGA) to perform one or more of the processing functions in some embodiments.

[0064] Further, LFM 110 may be represented by "H", and first matrix 112 and second matrix 114 may be represented by "F" and "D", respectively. Additionally, in the illustrated example, "H", "F", and "D" may be stored in on-chip memory 164 of implementation 162. The "F" matrix may be a "DIM x DIM" matrix, and Dim-To-1 MUX 166 of implementation 162 may be configured to select the relevant portion of "F" when performing the operations of algorithm 160.

[0065] Further, implementation 162 may include arithmetic element 168a configured to perform the multiplication and addition operations of rows "1" and "2" of algorithm 160 on corresponding elements of "F" and "D." Additionally or alternatively, implementation 162 may include arithmetic element 168b configured to perform the associated multiplication and addition operations of rows "3" and "4" of algorithm 160 on corresponding elements of "F" and "D." In these or other embodiments, implementation 162 may include a shift register 165 configured to transmit the appropriate value of "F" to arithmetic element 168a at the appropriate time.

[0066] As another example, FIG. 1D illustrates a method for updating x as part of a system update 104 for a row / column cross-clustered Boltzmann machine. k,l and x k’,l’ is inactive, and neuron x k’,l and x k,l’ 1 shows another example algorithm 170 that may be used to update the LFM 110 regarding which x k,l and x k’,l’ , and x k’,l and x k,l’ to substantially the same. In this manner, algorithm 170 may be approximately twice as fast as algorithm 160 and approximately four times faster than algorithm 150. Algorithm 170 may be implemented using any suitable implementation in software and / or hardware.

[0067] 1D also illustrates an exemplary hardware implementation 172 of LFM engine 108 configured to implement algorithm 170. In implementation 172, all elements may be stored on the same chip. Implementation 172 may be an exemplary implementation of computing system 202 of FIG. 2 in some embodiments, or may include one or more elements thereof. Additionally or alternatively, implementation 172 may use a graphics processing unit (GPU) and / or a field programmable gate array (FPGA) to perform one or more of the processing functions in some embodiments.

[0068] Further, LFM 110 may be represented by "H", and first matrix 112 and second matrix 114 may be represented by "F" and "D", respectively. Additionally, in the illustrated example, "H", "F", and "D" may be stored in on-chip memory 174 of implementation 172. The "F" matrix may be a "DIM x DIM" matrix, and Dim-To-1 MUX 176 of implementation 172 may be configured to select the relevant portion of "F" when performing the operations of algorithm 170.

[0069] Further, implementation 172 may include arithmetic element 178a, arithmetic element 178b, arithmetic element 178c, and arithmetic element 178d. Arithmetic element 178a may be configured to perform the following multiplication and addition operations of line “2” of algorithm 170 on corresponding elements of “F” and “D”:

number

number

number

number

[0070] In these or other embodiments, implementation 172 may include shift register 175a configured to transmit appropriate values ​​of "F" to arithmetic elements 178b and 178d at the appropriate times. In these or other embodiments, implementation 172 may include shift register 175b configured to transmit appropriate values ​​of "D" to arithmetic elements 178a and 178b at the appropriate times.

[0071] As another example, in some embodiments, equation (8) may be simplified such that the LFM engine 108 may simultaneously update four elements of the target LFM 110 according to equation (9) below:

number

[0072] FIG. 1E shows the x k,l and x k’,l’ is inactive, and neuron x k’,l and x k,l’ 1 shows another example algorithm 180 that may be used to update the LFM 110 based on equation (9) with respect to which x is active. The algorithm 180 k,l and x k’,l’ , and x k’,l and x k,l’to substantially the same. In this manner, algorithm 180 may be approximately twice as fast as algorithm 160 and approximately four times faster than algorithm 150. Algorithm 180 may be implemented using any suitable implementation in software and / or hardware.

[0073] For example, Figure 1E also illustrates an example hardware implementation 182 of LFM engine 108 configured to implement algorithm 180. In implementation 182, all elements may be stored on the same chip. Implementation 182 may be an example implementation of computing system 202 of Figure 2 in some embodiments, or may include one or more elements thereof. Additionally or alternatively, implementation 182 may use a graphics processing unit (GPU) and / or a field programmable gate array (FPGA) to perform one or more of the processing functions in some embodiments.

[0074] Further, the LFM 110 may be represented by "H", and the first matrix 112 and the second matrix 114 may be represented by "F" and "D", respectively. Additionally, in the illustrated example, "H", "F", and "D" may be stored in an on-chip memory 184 of the implementation 182. Further, in the implementation 182, "F" and "D" may be stored twice to help improve the execution speed of the algorithm 180. The "F" and "D" matrices may each be "DIM x DIM" matrices. The Dim-To-1 MUXes 186a and 186b of the implementation 182 may be configured to select the relevant portions of "F" and "D" when performing the operations of the algorithm 180.

[0075] Additionally, the implementation 182 includes arithmetic elements 188a, calculation The arithmetic element 188a may include a formula element 188b, and an arithmetic element 188c. diff The algorithm may be configured to perform the following addition operations in line “3” of algorithm 180 on the corresponding elements of “F” to obtain “F”.

number

number

number

number

[0076] 1F also illustrates an example hardware implementation 192 of the LFM engine 108 configured to implement the algorithm 180. In the implementation 192, all elements may be stored on the same chip. The implementation 192 may be an example implementation of the computing system 202 of FIG. 2 in some embodiments, or may include one or more elements thereof. Additionally or alternatively, the implementation 192 may use a graphics processing unit (GPU) and / or a field programmable gate array (FPGA) to perform one or more of the processing functions in some embodiments.

[0077] Further, the LFM 110 may be represented by "H", and the first matrix 112 and the second matrix 114 may be represented by "F" and "D", respectively. Additionally, in the illustrated example, "H", "F", and "D" may be stored in an on-chip memory 194 of the implementation 192. The "F" matrix may be a "DIM x DIM" matrix. A Dim-To-1 MUX 196 of the implementation 182 may be configured to select a relevant portion of "F" when performing the operations of the algorithm 180.

[0078] Additionally, the implementation 182 includes arithmetic elements 198a, calculation The algorithm 180 may include a multiplication element 198b, an arithmetic element 198c, and an arithmetic element 198d. The arithmetic element 198a may be configured to perform the following addition operation of line “3” of the algorithm 180 on the corresponding elements of “F”:

number

number

number

[0079] In these or other embodiments, implementation 192 may include a shift register 195a configured to transmit an appropriate value of "F" to arithmetic element 198a at the appropriate time. In these or other embodiments, implementation 192 may include a shift register 195b configured to transmit an appropriate value of "D" to arithmetic element 198b at the appropriate time.

[0080] 1A , in some embodiments, the first matrix 112 and / or the second matrix 114 may be asymmetric. In these or other embodiments, one or more pre-processing operations may be performed on the asymmetric matrix to make it symmetric. Additionally or alternatively, in some such examples (e.g., examples where pre-processing is not performed or the asymmetric matrix cannot be made symmetric), the determination of weights for updating the LFM 110 may be based on the transposed first matrix 112 and / or the transposed second matrix 114.

[0081] For example, the first matrix 112 and the second matrix 114 may be asymmetric flow matrix "F" and distance matrix "D", respectively. In such an example, the sub-weight matrix "w r,c " is the row "F" of the matrices "F" and "D" as described above. r,* " and "D c,* ” to obtain the transpose matrix “F” of matrices “F” and “D”, respectively. T " and "D T tensor product of

number

number

[0082] Based on equations (2) and (10a), system update 104 ("h i,* ") corresponding to the LFM110 part ("h i,* ") may be modified in such asymmetric cases according to equation (11a) below:

number

[0083] Additionally or alternatively, system update 104 ("h") may be performed based on equations (2) and (10a). i,* ") corresponding parts of LFM110

number

number

[0084] In some embodiments, one or more variables may be generated to accommodate additional operations that may be performed on the asymmetric matrix for the algorithms and / or hardware implementations described above with respect to FIGS. 1B-1F. For example, the transposed "F" and "D" matrices may also be stored in on-chip memory. Furthermore, one or more arithmetic elements, MUXes, and / or registers may be used to accommodate additional operations that may be performed. Additionally or alternatively, one or more operations in Equation (11) may be performed sequentially. In these or other embodiments, two or more of the one or more operations in Equation (11) may be performed together. Additionally or alternatively, the operations in Equation (11) may all be performed substantially simultaneously.

[0085] For example, in some embodiments, equation (11a) may be simplified such that the LFM engine 108 may simultaneously update four elements of the target LFM 110 according to the following equation (12a):

number

[0086] Additionally or alternatively, equation (11b) may be simplified according to equation (12b) below:

number

[0087] The updated LFM 110 may be used by the energy engine 102, in some embodiments, to generate a new system update 104 as described above. For example, the energy engine 102 may update the energy values ​​of the system 106 with the updated value of the LFM 110 based on equation (3) or equation (4) above. In these or other embodiments, the energy engine 102 may be configured to determine the value of the following equation based on the first matrix 112 and the second matrix 114:

number

[0088] For example, in an example where the first matrix 112 and the second matrix 114 are symmetric “F” and “D” matrices, the energy engine 102 may

number

number

[0089] As another example, in an embodiment where the first matrix 112 and the second matrix 114 are asymmetric “F” and “D” matrices, the energy engine 102 may

number

number

[0090] The energy engine 102 may then use the updated energy values ​​to determine whether to accept the proposed changes to the system 106 using equation (5) or equation (6) above. The LFM engine 108 may then update the LFM 110, again based on the new system updates 104, as described above. In some embodiments, such operations may be performed iteratively until a solution to the optimization problem associated with the system 106 is obtained. For example, the operations may be performed until the state of the system 106 is associated with a maximum or minimum Ising energy.

[0091] Modifications, additions, or omissions may be made to FIGS. 1A-1F without departing from the scope of the present disclosure. For example, the algorithms and implementations described with respect to FIGS. 1B-1F are merely examples and not limitations. Furthermore, although illustrated and described as being separate from one another, the energy engine 102 and the LFM engine 108 may be combined in some embodiments. Additionally or alternatively, the operations described as being performed by the energy engine 102 and / or the LFM engine 108 may be performed by any applicable implementation, which may not be exactly the same as those described herein. Furthermore, the environment 100 may include more or fewer elements than illustrated and described in this disclosure. Furthermore, the particular configuration, association, or inclusion of elements in a particular device or system may vary depending on the particular implementation.

[0092] 2 illustrates a block diagram of an example computing system 202 configured to perform one or more operations described herein, in accordance with at least one embodiment of the present disclosure. For example, the computing system 202 may be configured to implement or direct one or more operations associated with the energy engine 102 and / or the LFM 108 of FIG. 1A in some embodiments. In some embodiments, the computing system 202 may be included in or be part of an annealing system. The computing system 202 may include a processor 250, a memory 252, and a data storage device 254. The processor 250, the memory 252, and the data storage device 254 may be communicatively coupled.

[0093] In general, the processor 250 may include any suitable special purpose or general purpose computer, computing entity, or processing device, including various computer hardware or software modules, and may be configured to execute instructions stored on any suitable computer-readable storage medium. For example, the processor 250 may include a microprocessor, a microcontroller, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a graphics processing unit (GPU), or any other digital or analog circuitry configured to interpret and / or execute program instructions and / or process data. Although shown as a single processor in FIG. 2, the processor 250 may include any number of processors that are individually or collectively configured to perform or direct the execution of any number of operations described in this disclosure. Additionally, one or more of the processors may reside on one or more different electronic devices, such as different servers.

[0094] In some embodiments, the processor 250 may be configured to interpret and / or execute program instructions and / or process data stored in the memory 252, the data storage device 254, or the memory 252 and the data storage device 254. In some embodiments, the processor 250 may fetch the program instructions from the data storage device 254 and load the program instructions into the memory 252. After the program instructions are loaded into the memory 252, the processor 250 may execute the program instructions. For example, in some embodiments, the energy engine 102 and / or the LFM engine 108 of FIG. 1A may be software modules that may be program instructions that may be loaded into the memory 252 and executed by the processor 250.

[0095] Memory 252 and data storage 254 may include computer-readable storage media that carry or have stored computer-executable instructions or data structures. Such computer-readable storage media may include any commercially available non-transitory media that can be accessed by a general purpose or special purpose computer, such as processor 250. By way of example, and not limitation, such computer-readable storage media may include tangible or non-transitory computer-readable media including random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), compact disk read-only memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage, flash memory devices (e.g., solid-state memory devices), or any other non-transitory storage medium that can be used to carry or store specific program code in the form of computer-executable instructions or data structures and that can be accessed by a general purpose or special purpose computer. In these and other embodiments, the term “non-transitory” as described in this disclosure should be considered to exclude only those types of transitory media that are not within the scope of patentable subject matter under Federal Circuit decision of In re Nuijten, 500 F.3d 1346 (Fed. Cir. 2007).

[0096] Combinations of the above may also be included within the scope of computer-readable storage media.Computer-executable instructions may include, for example, instructions and data configured to cause processor 250 to perform a certain operation or group of operations.

[0097] Modifications, additions, or omissions may be made to computing system 202 without departing from the scope of the present disclosure. For example, in some embodiments, computing system 202 may include any number of other components that may not be expressly shown or described. Additionally or alternatively, computing system 202 may include fewer elements or may be configured differently. For example, memory 252 and / or data storage 254 may be omitted or may be part of the same computer-readable storage medium. Furthermore, references in this disclosure to hardware or operations performed by hardware may represent any suitable operations, configurations, or combinations of one or more of the elements of computing system 202.

[0098] 3 illustrates a flowchart of an example method 300 for solving an optimization problem, according to at least one embodiment described in this disclosure. The operations of method 300 may be performed by any suitable system, apparatus, or device. For example, the energy engine 102 and / or the LFM engine 108 of FIG. 1A, or the computing system 202 of FIG. 2, may perform one or more of the operations associated with method 300. Although illustrated by separate blocks, steps and operations associated with one or more of the blocks of method 300 may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the particular implementation.

[0099] At block 302, a first matrix associated with an optimization problem associated with the system may be obtained. Obtaining the first matrix may include accessing the first matrix stored on a computer readable medium. Additionally or alternatively, obtaining the first matrix may include storing the first matrix on a computer readable medium.

[0100] The first matrix 112 of FIG. 1A may be an example of a first matrix. In some embodiments, the optimization problem may be a quadratic assignment problem and the first matrix may be a distance matrix of the quadratic assignment problem. In some embodiments, the first matrix may be symmetric. Additionally or alternatively, the first matrix may be asymmetric. In some examples where the first matrix is ​​asymmetric, one or more applicable operations may be performed on the first matrix to make it symmetric.

[0101] In some embodiments, the first matrix may be stored in a local memory of a chip that includes a processor configured to perform the operations of method 300. Additionally or alternatively, the first matrix may be stored in a memory or data storage device that is not on the same chip as the processor configured to perform the operations of method 300.

[0102] In some embodiments, a transposed first matrix may be obtained that is a transpose of the first matrix. For example, in instances where the first matrix is ​​asymmetric, the transposed first matrix may be obtained. In some instances, the transposed first matrix may already be generated and may be accessed or stored. Additionally or alternatively, the transposed first matrix may be generated by performing an applicable transpose operation on the first matrix.

[0103] In some embodiments, the transposed second matrix may be stored in a local memory of a chip that includes a processor configured to perform the operations of method 300. Additionally or alternatively, the transposed second matrix may be stored in a memory or data storage device that is not on the same chip as the processor configured to perform the operations of method 300.

[0104] At block 304, a second matrix associated with the optimization problem may be obtained. Obtaining the second matrix may include accessing the second matrix stored on a computer readable medium. Additionally or alternatively, obtaining the second matrix may include storing the second matrix on a computer readable medium.

[0105] The second matrix 114 in FIG. 2 In some embodiments, the optimization problem may be a quadratic assignment problem and the second matrix may be a flow matrix of the quadratic assignment problem. In some embodiments, the second matrix may be symmetric. Additionally or alternatively, the second matrix may be asymmetric. In some examples where the first matrix is ​​asymmetric, one or more applicable operations may be performed on the first matrix to make it symmetric.

[0106] In some embodiments, the second matrix may be stored in a local memory of a chip that includes a processor configured to perform the operations of method 300. Additionally or alternatively, the second matrix may be stored in a memory or data storage device that is not on the same chip as the processor configured to perform the operations of method 300.

[0107] In some embodiments, a transposed second matrix may be obtained that is a transpose of the second matrix. For example, in examples where the second matrix is ​​asymmetric, the transposed second matrix may be obtained. In some examples, the transposed second matrix may already be generated and may be accessed or stored. Additionally or alternatively, the transposed second matrix may be generated by performing an applicable transpose operation on the second matrix.

[0108] In some embodiments, the transposed second matrix may be stored in a local memory of a chip that includes a processor configured to perform the operations of method 300. Additionally or alternatively, the transposed second matrix may be stored in a memory or data storage device that is not on the same chip as the processor configured to perform the operations of method 300.

[0109] The first matrix and the second matrix may be associated with corresponding weights given to each variable of the system, where the corresponding weights may be associated with a relationship between each variable and one or more other variables of the system. The system may include any applicable system that may be used to solve and / or respond to an optimization problem. System 106 of FIG. 1A is an example of a system.

[0110] At block 306, a local field matrix associated with the optimization problem may be obtained. The local field matrix may be a matrix that indicates interactions between variables of the system as affected by their respective weights, where the interactions relate to the change in state of the variables during the solution of the optimization problem. The LFM 110 of FIG. 1A is an example of a local field matrix that may be obtained.

[0111] Obtaining the local field matrix may include accessing a local field matrix stored on a computer-readable medium. Additionally or alternatively, obtaining the local field matrix may include storing the local field matrix on a computer-readable medium. In some embodiments, obtaining the local field matrix may include generating the local field matrix based on a state variable matrix of the system and based on the first matrix and the second matrix. Additionally or alternatively, the local field matrix may be generated based on a first transposed matrix and / or a second transposed matrix. For example, the local field matrix may be generated based on one or more of Equation (2) and Equations (7)-(11) described above with respect to FIG. 1A.

[0112] At block 308, the local field matrices may be updated. In some embodiments, the local field matrices may be updated in response to state changes of one or more variables of the system during solving the optimization problem. As described above, state changes may be accepted based on energy values ​​that may be determined for the system.

[0113] Updating the local field matrices may include performing one or more arithmetic operations on a first portion of the first matrix and a second portion of the second matrix, the first portion corresponding to a third portion of the local field matrix corresponding to the one or more variables to be updated. In these or other embodiments, the updating may include performing one or more arithmetic operations on a transposed first matrix and / or a transposed second matrix (e.g., in instances where the first matrix and / or the second matrix are asymmetric).

[0114] For example, the local field matrix may in some embodiments be updated by performing one or more tensor product operations on a difference between a first portion of the first matrix and a first portion of the second matrix as described above with respect to Figures 1A-1F. Additionally or alternatively, the arithmetic operations may include one or more tensor product operations on the transposed first matrix and / or the transposed second matrix, as also described above with respect to Figures 1A-1F.

[0115] As discussed above, the updating step may be performed by dynamically determining the weights based on the first matrix and the second matrix (in some examples, based on the transposed first matrix and the transposed second matrix). Thus, storage of a global weight matrix may be omitted. As discussed above, omitting storage of a global weight matrix may reduce the amount of memory resources that may be used in solving the optimization problem. Furthermore, as discussed above, reducing the amount of memory resources may also reduce the amount of time to solve the optimization problem by enabling on-chip storage of information used in solving the optimization problem.

[0116] At block 310, the energy values ​​of the system may be updated based on the updated local field matrix. For example, the energy values ​​of the system may be updated using the updated values ​​of the local field matrix based on equation (3) or equation (4) above.

[0117] At block 312, a solution to the optimization problem may be determined based on the energy values. For example, the system may be updated so that the local field matrices are updated any number of times in an iterative manner until the state of the system is associated with an energy value having a maximum or minimum Ising energy. The system state in such a situation may be used as the solution to the optimization problem.

[0118] Modifications, additions, or omissions may be made to method 300 without departing from the scope of the present disclosure. For example, the operations of method 300 may be performed in a different order. Additionally, or alternatively, two or more operations may be performed simultaneously. Furthermore, the outlined steps and operations are provided as examples, and some of the steps and operations may be optional, combined into fewer steps and operations, or expanded into additional steps and operations without detracting from the essence of the disclosed embodiments.

[0119] As used in this disclosure, the term "module" or "component" may refer to a specific hardware implementation configured to perform the operations of the module or component, and / or a software object or software routine that may be stored and / or executed by general-purpose hardware (e.g., computer-readable medium, processing unit, etc.) of a computing system. In some embodiments, components, modules, engines, and services different from those described herein may be implemented as objects or processes (e.g., separate threads) executing on a computing system. Although some of the systems and methods described herein have been generally described as being implemented in software (stored on and / or executed by general-purpose hardware), dedicated hardware implementations or combinations of software and dedicated hardware implementations are also possible and contemplated. In this description, a "computing entity" may be any computing system described above in this disclosure, or any module or combination of modules executing on a computing system.

[0120] Terms used in this disclosure, and particularly in the appended claims (e.g., the body of the appended claims), are generally intended as "broad" terms (e.g., the term "including" should be interpreted as "including, but not limited to," the term "having" should be interpreted as "having, but not limited to," etc.).

[0121] Furthermore, where a recitation of a particular number of introduced claims is intended, such intent is expressly set forth in the claim, and in the absence of such recitation, no such intent exists. For example, as an aid to understanding, the following appended claims may include the use of the introductory phrases "at least one" and "one or more" to introduce a recitation of claims. However, the use of such phrases should not be construed to mean that the introduction of a claim recitation with the indefinite article "a" or "an" limits any particular claim that includes such an introduced recitation of claims to an embodiment that includes only one such recitation, even when the same claim includes the introductory phrase "one or more" or "at least one" and the indefinite article "a" or "an" (e.g., "a" and / or "an" should be interpreted to mean "at least one" or "one or more"). In other words, the same applies to the use of definite articles used to introduce a recitation of claims.

[0122] Moreover, where a recitation of a particular number of introduced claims is explicitly recited, one of ordinary skill in the art will understand that such recitation should be interpreted to mean at least the number recited (e.g., a recitation of "two enumerations" without other qualification means at least two enumerations, or an enumeration of two or more). Furthermore, in instances where a recitation similar to "at least one of A, B, and C, etc." or "one or more of A, B, and C, etc." or "at least one of A, B, or C, etc." or "one or more of A, B, or C, etc." is used, such configurations are typically intended to include A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together, etc. Furthermore, use of the term "and / or" is intended to be interpreted in this manner.

[0123] Additionally, any disjunctive word or phrase expressing two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibility of including one of the terms, either of the terms, or both terms. For example, the phrase "A or B" should be understood to include the possibilities of "A" or "B" or "A and B," even if the term "and / or" is used elsewhere.

[0124] All examples and conditional language described in this disclosure are intended for instructional purposes to assist the reader in understanding the disclosure and the concepts that the disclosure contributes to further developing the art, and should not be construed as being limited to such specifically recited examples and conditions. Although the embodiments of the present disclosure have been described in detail, various modifications, substitutions, and alternatives may be made thereto without departing from the spirit and scope of the present disclosure.

[0125] In addition to the above-described embodiment, the following supplementary notes are further disclosed. (Appendix 1) 1. A method comprising: obtaining a first matrix associated with an optimization problem associated with the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix relating to corresponding weights given to each variable of the system, the corresponding weights relating to relationships between the each variable and one or more other variables; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations on a first portion of the first matrix and a second portion of the second matrix, the first portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values; The method includes: (Appendix 2) 2. The method of claim 1, wherein the optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem. (Appendix 3) 2. The method of claim 1, wherein the first matrix and the second matrix are symmetric, and updating the local field matrix includes, as the one or more arithmetic operations, performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix. (Appendix 4) 2. The method of claim 1, wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix includes performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix. (Appendix 5) 2. The method of claim 1, further comprising the step of omitting to store a global weight matrix of the weights while solving the optimization problem, and storing the first matrix, the second matrix, and the local field matrix. (Appendix 6) 2. The method of claim 1, wherein the system is a neural network configured as a Boltzmann machine. (Appendix 7) 2. The method of claim 1, wherein the state changes of the one or more variables are accepted based on the energy value. (Appendix 8) One or more non-transitory computer-readable storage media configured to store instructions that, in response to being executed, cause the system to perform operations, including: obtaining a first matrix associated with an optimization problem associated with the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix relating to corresponding weights given to each variable of the system, the corresponding weights relating to relationships between the each variable and one or more other variables; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations on a first portion of the first matrix and a second portion of the second matrix, the first portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values;

[0023] In one or more non-transitory computer-readable storage media, (Appendix 9) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem. (Appendix 10) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the first matrix and the second matrix are symmetric, and updating the local field matrix includes performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix as the one or more arithmetic operations. (Appendix 11) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix includes performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix. (Appendix 12) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the operations further include omitting to store a global weight matrix of the weights while solving the optimization problem and storing the first matrix, the second matrix, and the local field matrix. (Appendix 13) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the system is a neural network configured as a Boltzmann machine. (Appendix 14) 9. The one or more non-transitory computer-readable storage media of claim 8, wherein the state changes of the one or more variables are accepted based on the energy value. (Appendix 15) 1. A system including hardware configured to perform operations, the operations comprising: obtaining a first matrix associated with an optimization problem associated with the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix relating to corresponding weights given to each variable of the system, the corresponding weights relating to relationships between the each variable and one or more other variables; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations on a first portion of the first matrix and a second portion of the second matrix, the first portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values; A system including: (Appendix 16) 16. The system of claim 15, wherein the optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem. (Appendix 17) 16. The system of claim 15, wherein the first matrix and the second matrix are symmetric, and updating the local field matrix includes performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix as the one or more arithmetic operations. (Appendix 18) 16. The system of claim 15, wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix includes performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix. (Appendix 19) 16. The system of claim 15, wherein the operations further include omitting to store a global weight matrix of the weights while solving the optimization problem and storing the first matrix, the second matrix, and the local field matrix. (Appendix 20) 16. The system of claim 15, wherein the state change of the one or more variables is accepted based on the energy value. [Explanation of symbols]

[0126] 106 System 102 Energy Engine 110 Local Field Matrix 104 System Update 112 1st matrix 114 2nd matrix 108 Local Field Matrix Engine

Claims

1. 1. A method, the method being performed by a computing system, comprising: obtaining a first matrix associated with an optimization problem associated with a system, the system being represented by a neural network including a plurality of neurons corresponding to a plurality of variables of the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix being related to corresponding weights given to each variable of the system, the corresponding weights being related to relationships between each variable and one or more other variables, the first matrix and the second matrix being representative of states of each of the neurons; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; generating state changes of one or more neurons contained in the first matrix and the second matrix to represent state changes of one or more variables of the system; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations based on a first portion of the first matrix and a second portion of the second matrix, the second portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values; Including, The method, wherein the optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem.

2. The method described in claim 1, wherein the step of generating state changes of one or more neurons included in the first matrix and the second matrix randomly generates state changes of one or more neurons included in the first matrix and the second matrix.

3. 2. The method of claim 1 , wherein the first matrix and the second matrix are symmetric, and updating the local field matrix comprises performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix as the one or more arithmetic operations.

4. 2. The method of claim 1 , wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix comprises performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix.

5. 2. The method of claim 1, further comprising the step of omitting to store a global weight matrix of the weights while solving the optimization problem, and storing the first matrix, the second matrix, and the local field matrix.

6. The method of claim 1 , wherein the system is a neural network configured as a Boltzmann machine.

7. The method of claim 1 , wherein the state changes of the one or more variables are accepted based on the energy value.

8. The method of claim 1, wherein the optimization problem has a one-hot constraint.

9. The method described in claim 1, wherein the step of obtaining the first matrix stores the distance matrix in a memory included in the computing system, and the step of obtaining the second matrix stores the flow matrix in the memory included in the computing system.

10. One or more non-transitory computer-readable storage media configured to store instructions that, in response to being executed, cause the system to perform operations, including: obtaining a first matrix associated with an optimization problem associated with a system, the system being represented by a neural network including a plurality of neurons corresponding to a plurality of variables of the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix being related to corresponding weights given to each variable of the system, the corresponding weights being related to relationships between each variable and one or more other variables, the first matrix and the second matrix being representative of states of each of the neurons; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; generating state changes of one or more neurons contained in the first matrix and the second matrix to represent state changes of one or more variables of the system; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations based on a first portion of the first matrix and a second portion of the second matrix, the second portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values; Including, the optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem.

11. One or more non-transitory computer-readable storage media as described in claim 10, wherein the step of generating state changes of one or more neurons included in the first matrix and the second matrix randomly generates state changes of one or more neurons included in the first matrix and the second matrix.

12. 11. The one or more non-transitory computer-readable storage media of claim 10, wherein the first matrix and the second matrix are symmetric, and updating the local field matrix comprises performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix as the one or more arithmetic operations.

13. 11. The one or more non-transitory computer-readable storage media of claim 10, wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix comprises performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix.

14. 11. The one or more non-transitory computer-readable storage media of claim 10, wherein the operations further comprise omitting to store a global weight matrix of the weights while solving the optimization problem and storing the first matrix, the second matrix, and the local field matrix.

15. The one or more non-transitory computer-readable storage media of claim 10 , wherein the system is a neural network configured as a Boltzmann machine.

16. The one or more non-transitory computer-readable storage media of claim 10 , wherein the state changes of the one or more variables are accepted based on the energy value.

17. The one or more non-transitory computer-readable storage media of claim 10, wherein the optimization problem has a one-hot constraint.

18. One or more non-transitory computer-readable storage media as described in claim 10, wherein the step of obtaining the first matrix stores the distance matrix in a memory included in the system, and the step of obtaining the second matrix stores the flow matrix in the memory included in the system.

19. 1. A system including hardware configured to perform operations, the operations comprising: obtaining a first matrix associated with an optimization problem associated with a system, the system being represented by a neural network including a plurality of neurons corresponding to a plurality of variables of the system; obtaining a second matrix associated with the optimization problem, the first matrix and the second matrix being related to corresponding weights given to each variable of the system, the corresponding weights being related to relationships between each variable and one or more other variables, the first matrix and the second matrix being representative of states of each of the neurons; obtaining a local field matrix indicative of interactions between the variables of the system influenced by their respective weights, the interactions relating to changes in state of the variables during solving the optimization problem; generating state changes of one or more neurons contained in the first matrix and the second matrix to represent state changes of one or more variables of the system; updating the local field matrices in response to state changes of one or more variables of the system while solving the optimization problem, the updating including performing one or more arithmetic operations based on a first portion of the first matrix and a second portion of the second matrix, the second portion corresponding to a third portion of the local field matrix corresponding to the one or more variables; updating an energy value based on the updated local field matrix; determining a solution to the optimization problem based on the energy values; Including, The optimization problem is a quadratic assignment problem, the first matrix is ​​a distance matrix of the quadratic assignment problem, and the second matrix is ​​a flow matrix of the quadratic assignment problem.

20. The system described in claim 19, wherein the step of generating state changes of one or more neurons included in the first matrix and the second matrix randomly generates state changes of one or more neurons included in the first matrix and the second matrix.

21. 20. The system of claim 19, wherein the first matrix and the second matrix are symmetric, and updating the local field matrix comprises performing a tensor product operation on a difference between the first portion of the first matrix and the second portion of the second matrix as the one or more arithmetic operations.

22. 20. The system of claim 19, wherein the first matrix and the second matrix are asymmetric, and updating the local field matrix comprises performing one or more arithmetic operations on a transposed first matrix and a transposed second matrix.

23. 20. The system of claim 19, wherein the operations further comprise omitting to store a global weight matrix of the weights while solving the optimization problem and storing the first matrix, the second matrix, and the local field matrix.

24. 20. The system of claim 19, wherein the state change of the one or more variables is accepted based on the energy value.

25. The system of claim 19, wherein the optimization problem has a one-hot constraint.

26. The system described in claim 19, wherein the step of acquiring the first matrix stores the distance matrix in a memory included in the system, and the step of acquiring the second matrix stores the flow matrix in the memory included in the system.

Citation Information

Patent Citations

  • Optimization device and control method of optimization device

    JP2020057306A