Optimization control device, optimization control method, and program

The optimization control device addresses the challenge of large-scale combinatorial optimization by using past execution results and weight adjustments to efficiently obtain solutions that meet constraints, reducing processing time and improving constraint adherence.

JP7609902B2Active Publication Date: 2025-01-07HITACHI LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023006382
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2023-01-19
Publication Date
2025-01-07
Estimated Expiration
2043-01-19

AI Technical Summary

Technical Problem

Existing combinatorial optimization methods using quantum annealing struggle with large-scale problems due to an increase in the number of constraints, leading to an enormous number of combinations and prolonged processing times when manually adjusting weights or using methods like the Nelder-Mead method.

Method used

An optimization control device that utilizes a database to determine initial weights based on past execution results or predefined parameters, adjusts weights for constraints likely to be broken, and repeatedly optimizes the process to achieve a target satisfaction rate without violating constraints.

Benefits of technology

This approach significantly reduces the time required to obtain a solution that adheres to constraints by iteratively adjusting weights and optimizing the annealing process, ensuring a high satisfaction rate of unbroken constraints.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007609902000001
    Figure 0007609902000001
  • Figure 0007609902000002
    Figure 0007609902000002
  • Figure 0007609902000003
    Figure 0007609902000003
Patent Text Reader

Abstract

To provide an optimization control apparatus configured to shorten the time required for solving a combinatorial optimization problem.SOLUTION: An optimization control apparatus 20 includes: an optimization database 24 that stores solutions of an annealing apparatus 30 that solves a combinatorial optimization problem by optimization processing that uses an annealing method; and an optimization control unit 22 that sets a weight to a constraint of the combinatorial optimization problem, causes the annealing apparatus 30 to execute the optimization processing, detects the constraint broken by the optimization processing based on the solution stored in the optimization database 24, inputs to the annealing apparatus 30 again the combinatorial optimization problem with the weight modified for the broken constraint, repeatedly performs the processing of causing the annealing apparatus 30 to execute the optimization processing, and obtains a solution in which the constraint that is not broken achieves a target satisfaction rate.SELECTED DRAWING: Figure 3
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to an optimization control device, an optimization control method, and a program. [Background technology]

[0002] In recent years, methods of solving combinatorial optimization problems using quantum computers with an annealing method have been considered. This type of method is called quantum annealing. There are various quantum annealing techniques, and the applicant is developing CMOS (Complementary Metal-Oxide-Semiconductor) annealing. CMOS annealing is one of the pseudo-quantum computing technologies, and is used as a solver for solving optimization problems (mathematical expressions). Specific examples of optimization problems that are envisioned include work shift optimization and financial portfolio optimization.

[0003] Here, we take the optimization of work shifts as an example. For example, "the number of working days per month for personnel A must be between 15 and 20 days" is a constraint, and the rules that must be followed when solving a problem are called constraints. The shifts generated as optimization results by the annealing device that performs quantum annealing that adhere to the above number of days are called "a state in which the constraints are adhered to." Although the conditions for the number of working days differ for each personnel, the process of finding a solution that simultaneously meets various constraints such as working hours, number of consecutive working days, number of paid holidays used, requests for daily shifts, and restrictions on selectable shifts is called the "optimization process."

[0004] A known technique for solving combinatorial optimization problems is disclosed in Patent Document 1. Patent Document 1 discloses an "optimization device capable of reflecting a user's priority for each constraint condition imposed on a combinatorial optimization problem in the combinatorial optimization problem." [Prior art documents] [Patent documents]

[0005] [Patent Document 1] International Publication No. 2022 / 024329 Summary of the Invention [Problem to be solved by the invention]

[0006] Solutions that use annealing to solve combinatorial optimization problems can quickly solve large-scale problems, but the number of constraints that make up the problem also increases. As the number of constraints increases, the number of weights corresponding to each constraint also increases, and the number of weight combinations required to find an optimal solution becomes enormous. Here, a weight is a parameter that protects constraints during optimization processing, and constraints with large weights are less likely to be violated during optimization processing.

[0007] For example, when a combinatorial problem becomes large-scale, the number of constraints becomes enormous, and the user must set various parameters, including weights, for each constraint. Annealing machines are good at "satisfying all constraints as much as possible," meaning that it is unavoidable if some constraints are violated, but they are not good at, for example, "ensuring that constraint A is always observed." Therefore, users must set weights taking into account the characteristics of the annealing machine. For example, because constraint A is important, increasing the weight of constraint A may result in another constraint B that is also desired to be observed being violated.

[0008] However, there is a limit to how much weights can be adjusted manually, so in the past, it was necessary to take measures such as managing multiple constraints with common weights. In this case, although the number of combinations is reduced, there is a possibility that the optimal solution cannot be found. Other methods that can be considered include automatically adjusting the weights for all constraints, such as the Nelder-Mead algorithm, but when there are a large number of constraints, there is an issue that it takes too long to find a solution.

[0009] The present invention has been made in view of the above circumstances, and has an object to reduce the time it takes for an optimization control device, which solves combinatorial optimization problems by an annealing method, to obtain a solution from the annealing device. [Means for solving the problem]

[0010] The optimization control device according to the present invention includes a database for storing solutions of an annealing device that solves combinatorial optimization problems by optimization processing using an annealing method; If there is no history of past optimization processes performed on the annealing device in the database, the initial weights for the constraints of the combinatorial optimization problem are calculated based on the parameters prepared in advance. Set as constraint for combinatorial optimization problem when there is a history of the annealing device having previously executed an optimization process and the number of execution results of the annealing device's past optimization processes stored in the database is not greater than a predetermined number, set initial weight values ​​to the constraints of the combinatorial optimization problem based on the execution results of the annealing device having previously executed an optimization process with any setting; when there is a history of the annealing device having previously executed an optimization process and the number of execution results of the annealing device's past optimization processes stored in the database is greater than a predetermined number, set initial weight values ​​to the constraints of the combinatorial optimization problem based on the execution results of the annealing device's past optimization processes; The annealing device performs the optimization process and the solutions stored in the database are is included between the lower limit and the upper limit, the constraint is determined to be not violated, and the constraint is determined to be violated when the solution is not included between the lower limit and the upper limit; a constraint that has been violated a predetermined number of times out of the total number of processes read from a history of past optimization processes performed by the annealing device is detected as a constraint that is likely to be violated, and a weight is increased for the violated constraint or the constraint that is likely to be violated. and an optimization control unit that inputs the combinatorial optimization problem thus solved into the annealing device again and repeatedly causes the annealing device to execute the optimization process to obtain a solution in which the unbroken constraints achieve the target fulfillment rate. Effect of the Invention

[0011] According to the present invention, by repeating the weight adjustment and optimization process until a target fulfillment rate is achieved, it is possible to shorten the time required to obtain a solution in which constraints are not violated as much as possible. Problems, configurations and effects other than those described above will become apparent from the following description of the embodiments. [Brief description of the drawings]

[0012] [Figure 1] 1 is a hardware and functional configuration diagram showing an example of the configuration of a problem solving system according to a first embodiment of the present invention. [Diagram 2] 2 is a block diagram showing an example of the internal configuration of an optimization control unit according to the first embodiment of the present invention. FIG. [Diagram 3] FIG. 2 is a diagram showing the data flow of each device in the problem solving system according to the first embodiment of the present invention. [Figure 4] FIG. 4 is a diagram showing an example of a variable list according to the first embodiment of the present invention. [Diagram 5]FIG. 4 is a diagram showing an example of a constraint list according to the first embodiment of the present invention. [Figure 6] FIG. 4 is a diagram showing an example of a processing result list according to the first embodiment of the present invention. [Figure 7] FIG. 4 is a diagram showing an example of a pre-processing result list according to the first embodiment of the present invention. [Figure 8] FIG. 1 illustrates an example of a conventional optimization process in which constraint weights are manually adjusted. [Figure 9] FIG. 1 illustrates an example of a conventional optimization process for automatically adjusting the weights of constraints. [Figure 10] 4 is a flowchart showing an example of processing of the problem solving system according to the first embodiment of the present invention. [Figure 11] 5 is a flowchart showing an example of processing for selecting an initial value of a weight by a weight modification unit 2 according to the first embodiment of the present invention. [Figure 12] FIG. 2 is a diagram showing an example of the configuration of a question list screen according to the first embodiment of the present invention. [Figure 13] 10 is a flowchart showing an example of processing of a problem solving system according to a second embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0013] Hereinafter, an embodiment of the present invention will be described with reference to the accompanying drawings. In this specification and the drawings, components having substantially the same functions or configurations are designated by the same reference numerals, and redundant description will be omitted.

[0014] [First embodiment] <Example of problem solving system configuration> Fig. 1 is a hardware and functional configuration diagram showing an example of the configuration of a problem solving system 1 according to a first embodiment. This problem solving system 1 is a system that finds an optimal solution to an input combinatorial optimization problem by an annealing method using CMOS annealing, and outputs this optimal solution. The best solution found by the annealing method is called an exact solution. A solution that is not an exact solution but satisfies constraints as much as possible is called an optimal solution.

[0015] The problem solving system 1 includes a formulation device 10, an optimization control device 20, and an annealing device 30. The formulation device 10 and the optimization control device 20 may be implemented by a general PC (Personal Computer) or the like.

[0016] <Example of formulation device configuration> The formulation device 10 is a device operated by a user P1 (e.g., a system engineer) shown in FIG. 3 described later to input a combinatorial optimization problem. In the following description, the combinatorial optimization problem may be abbreviated as "problem". A plurality of formulation devices 10 may be provided depending on the type of problem. For example, when the user P1 considers work shift optimization as a problem, a formulation device 10 is prepared for inputting the combinatorial optimization problem of the work shift. Also, when the user P1 considers financial portfolio optimization as a problem, a formulation device 10 is prepared for inputting the combinatorial optimization problem of the financial portfolio. In the following description, a configuration and process for the problem solving system 1 to obtain a solution from the work shift optimization problem will be illustrated.

[0017] The formulation device 10 includes a user interface unit 11 (hereinafter, referred to as a UI unit 11), a question generation unit 12, a question management unit 13, a question database 14, and a CPU (Central Processing Unit) 15.

[0018] The UI unit 11 is a part that serves as an interface for a user P1 who uses the formulation device 10, and has a function of accepting input of a problem and displaying an optimal solution received from the optimization control device 20. The UI unit 11 also displays a screen that displays the optimization result of the problem by the annealing device 30, in addition to the problem input screen. The UI unit 11 outputs the raw data received from the user P1 to the problem generation unit 12 as problem information.

[0019] User P1 inputs the number of personnel who are subject to the work shift and constraints on the working hours desired by the personnel through the UI unit 11. For example, constraints for a shift combination of personnel 1 and personnel 2 include information such as the available working hours of personnel 1 and personnel 2, and the days or times when personnel 1 and personnel 2 cannot work at the same shift. Note that, in addition to the method in which user P1 directly inputs personnel information and constraints through the UI unit 11, problems can also be input to the UI unit 11 by uploading a file or compressed file containing personnel information and constraints.

[0020] The question generator 12 converts the question information received by the UI unit 11 into a format that can be interpreted by the optimization control device 20 to generate question data. The problem management unit 13 exchanges various types of data with the optimization control device 20. At this time, the problem management unit 13 transmits problem data to the optimization control device 20. Furthermore, in order to manage the problem data transmitted to the optimization control device 20, the problem management unit 13 stores the problem data in a problem database 14.

[0021] The problem database 14 stores the problem data that the problem management unit 13 has sent to the optimization control device 20 , and also stores the optimal solutions that the problem management unit 13 has received from the optimization control device 20 .

[0022] The CPU 15 performs control to realize the functions of the formulation device 10. The formulation device 10 also includes a ROM (Read Only Memory), a RAM (Random Access Memory), and a non-volatile storage, which are not shown. The CPU 15 reads out program code of software that realizes each function according to the present embodiment from the ROM, loads it into the RAM, and executes it. Variables, parameters, etc. generated during the calculation process of the CPU 15 are temporarily written to the RAM, and these variables, parameters, etc. are read out by the CPU 15 as appropriate. The functions of the UI unit 11, the question generation unit 12, and the question management unit 13 are realized by the CPU 15.

[0023] Furthermore, examples of the non-volatile storage include a hard disk drive (HDD), a solid state drive (SSD), a magnetic tape, and a non-volatile memory. In addition to an operating system (OS) and various parameters, this non-volatile storage stores programs for operating the formulation device 10. The ROM and non-volatile storage store programs and data necessary for the CPU 15 to operate, and are used as examples of computer-readable non-transient storage media that store programs executed by the formulation device 10. The question database 14 is configured in the non-volatile storage.

[0024] <Example of optimization device configuration> The optimization control device 20 is provided between the formulation device 10 and the annealing device 30, and acts as an intermediary for the annealing device 30, which performs optimization processing of the combinatorial optimization problem input by the formulation device 10. The optimization control device 20 has a function of converting the problem into one that can be interpreted by the annealing device 30. As described above, multiple formulation devices 10 may be provided depending on the type of problem, and therefore the optimization control device 20 has a function of converting the problem into a general-purpose form.

[0025] The optimization control device 20 includes a problem input unit 21 , an optimization control unit 22 , a model generation unit 23 , an optimization database 24 , and a CPU 25 .

[0026] The problem input unit 21 stores the problem data input from the problem management unit 13 of the formulation device 10 in the optimization database 24. Furthermore, when the problem input unit 21 reads out the optimization results stored in the optimization database 24, it transmits the optimization results to the problem management unit 13. The optimization results are information obtained by processing the execution results of the optimization process by the annealing device 30 by the optimization control unit 22.

[0027] The optimization database 24 (an example of a database) stores solutions from an annealing device 30 that solves combinatorial optimization problems by optimization processing using an annealing method. For this reason, the optimization database 24 stores problem data written by the problem input unit 21, as well as problem models generated by the model generation unit 23. The optimization database 24 also stores execution results obtained by the annealing software program 31 executing the problem models, and optimization results obtained by processing the execution results by the optimization control unit 22. In the following explanation, the annealing software program 31 is abbreviated as "annealing software 31."

[0028] The optimization control unit 22 sets weights for the constraints of the combinatorial optimization problem and causes the annealing device 30 to execute the optimization process. Next, the optimization control unit 22 detects constraints that have been violated by the optimization process based on the solution (e.g., execution result) stored in the optimization database 24. Next, the optimization control unit 22 inputs the combinatorial optimization problem in which the weights for the violated constraints have been changed to the annealing device 30 again, and causes the annealing device 30 to execute the optimization process. Then, the optimization control unit 22 repeats these processes to obtain a solution in which the unviolated constraints achieve a target fulfillment rate. The fulfillment rate is the ratio of the unviolated constraints to all constraints. Here, the optimization control unit 22 may detect constraints that are easily violated based on a history of past optimization processes executed by the annealing device 30, and increase the weights for the easily violated constraints. This process makes it difficult for highly important constraints to be violated, even if they are easily violated.

[0029] To perform the above-mentioned processing, the optimization control unit 22 reads out problem data from the optimization database 24, passes the problem data to the model generation unit 23, and causes the model generation unit 23 to generate a problem model. Then, the optimization control unit 22 reads out the problem model generated by the model generation unit 23 from the optimization database 24, and instructs the annealing software 31 to execute optimization processing for the problem. This instruction is performed by the optimization control unit 22 transmitting the problem model to the annealing software 31.

[0030] The optimization control unit 22 can efficiently detect a combination of weights that satisfies the constraints set for the problem, based on the execution result of the annealing software 31. The optimization control unit 22 also has a function of "detecting constraints that are likely to be violated (initial target) by any method" and a function of "increasing the weights of constraints." Details of these functions will be described later.

[0031] Therefore, the optimization control unit 22 can determine the constraints that have been violated by the annealing software 31 based on the results of the optimization process performed by the annealing software 31, which are read from the optimization database 24. Then, the optimization control unit 22 performs a process of changing the weight of the constraint that has been violated, and can cause the annealing software 31 to execute the problem model again.

[0032] The optimization control unit 22 inputs the combinatorial optimization problem with the changed weights to the annealing device 30 again, and repeatedly executes the process of making the annealing device 30 execute the optimization process, and detects the constraint that has been violated a predetermined number of times relative to the total number of processes as a constraint that is likely to be violated. For example, when the total number of processes is four, a constraint that has been violated three times is detected as a constraint that is likely to be violated. In this example, a constraint that has been violated 75% or more relative to the total number of processes is a constraint that is likely to be violated. The optimization control unit 22 sets a judgment threshold for judging a constraint that is likely to be violated to this 75%. Note that the judgment threshold of 75% is just an example, and may be set to 60% or 90% depending on the content of the problem. The judgment threshold may be set by the user P1, or may be set arbitrarily based on the history of problems that the optimization control unit 22 has previously performed optimization processes on.

[0033] When the model generation unit 23 receives the problem data from the optimization control unit 22, it generates a problem model for solving the problem using the annealing device 30. The problem model includes importance information required for the annealing software 31 to solve the problem. In this embodiment, this importance information is expressed as a weight. The annealing software 31 performs calculations that attempt to protect constraints with a larger weight than other constraints as much as possible. The reason for this is that in order for the annealing software 31 to find a solution that satisfies all constraints as much as possible, it is necessary to protect constraints that have been violated. Note that when the optimization control unit 22 further increases the weight of constraints that have already been observed, there is a secondary effect that constraints that have been violated in previous processes will no longer be violated.

[0034] The problem model generated by the model generation unit 23 is temporarily stored in the optimization database 24. Therefore, the optimization control unit 22 reads the problem model from the optimization database 24 and outputs the problem model to the annealing device 30.

[0035] The CPU 25 performs control to realize the functions of the optimization control device 20. The optimization control device 20 also includes a ROM, a RAM, a non-volatile storage, etc., which are not shown. The CPU 25 reads out program code of software that realizes each function according to this embodiment from the ROM, loads it into the RAM, and executes it. Variables, parameters, etc. generated during the calculation processing of the CPU 25 are temporarily written to the RAM, and these variables, parameters, etc. are read out by the CPU 25 as appropriate. The functions of the problem input unit 21, the optimization control unit 22, and the model generation unit 23 are realized by the CPU 25.

[0036] Furthermore, as the non-volatile storage, for example, a HDD, SSD, magnetic tape, or non-volatile memory is used. In addition to the OS and various parameters, this non-volatile storage stores programs for operating the optimization control device 20. The ROM and non-volatile storage store programs and data necessary for the CPU 25 to operate, and are used as an example of a computer-readable non-transient storage medium that stores the programs executed by the optimization control device 20. The optimization database 24 is configured in the non-volatile storage.

[0037] <Example of annealing equipment configuration> The annealing apparatus 30 includes annealing software 31, a CPU 35, a field programmable gate array (FPGA) 36, and a graphics processing unit (GPU) 37. A dedicated OS is installed in the annealing apparatus 30, and the operation of the annealing software 31 is controlled by the OS.

[0038] When the annealing software 31 receives a problem model input from the optimization control unit 22 of the optimization control device 20, it executes an optimization process using the problem model and outputs the execution result. At this time, the annealing software 31 executes the optimization process of the problem using the FPGA 36 or GPU 37 of the annealing device 30. However, in the following explanation, it is stated that "the annealing software 31 executes the optimization process." The annealing software 31 saves the execution result of the optimization process in the optimization database 24 of the optimization control device 20.

[0039] In the optimization process, constraints set in the problem model may be violated. The optimization control unit 22 increases the weight of the violated constraint and causes the annealing software 31 to execute the optimization process again. For this reason, the processes of the optimization control unit 22 and the annealing software 31 are repeated several times.

[0040] The CPU 35 performs control to realize the functions of the annealing apparatus 30 . The FPGA 36 is a component used to implement a CMOS annealing machine. By connecting multiple FPGAs 36, it is possible to expand the performance of the annealing apparatus 30 according to the scale of the problem. The GPU 37, like the FPGA 36, is a component used to implement a CMOS annealing machine. By connecting multiple GPUs 37 or increasing the performance of the GPU 37, it is possible to expand the performance of the annealing apparatus 30 according to the scale of the problem. The FPGA 36 and the GPU 37 may be used together, or either one may be used.

[0041] <Internal configuration example of optimization control unit> FIG. 2 is a block diagram showing an example of the internal configuration of the optimization control unit 22. As shown in FIG.

[0042] The optimization control unit 22 includes a model generation instruction unit 22a, an execution instruction unit 22b, a determination unit 22c, a weight change unit 22d, and a result processing unit 22e. The model generation instruction unit 22a instructs the model generation unit 23 to generate a problem model. The execution instruction unit 22b instructs the annealing software 31 to execute an optimization process using the problem model.

[0043] The determination unit 22c determines which constraints have been violated based on the results of the optimization process performed by the annealing software 31. The results of the optimization process are exemplified in a pre-processing result list in FIG.

[0044] The weight change unit 22d performs a process of changing weights, such as increasing the weights of constraints that have been determined to be violated by the determination unit 22c. The weight change unit 22d can also perform a process of decreasing the weights of constraints that have not been violated or constraints that are not important. In addition, the weight change unit 22d can set the number of times the weight change process is performed, or the timing for stopping the weight change process. Therefore, the weight change unit 22d does not change the weights endlessly, which contributes to shortening the time required to obtain a solution.

[0045] The result processing unit 22e processes the execution result of the optimization process by the annealing software 31 to generate an optimization result, and stores the result in the optimization database 24. The optimization result is exemplified in a processed result list in FIG. 6, which will be described later.

[0046] <Explanation of data flow for each device> Next, focusing on the data flow of each device in the problem solving system 1, the processing of each functional unit will be described with reference to FIG. 3 is a diagram showing the data flow of each device in the problem solving system 1. Numbers in parentheses are added to the arrows showing the data flow to indicate the order in which the data flows.

[0047] (1) First, the user P1 inputs a problem using the formulation device 10. The user P1 inputs the problem via a screen displayed on the display of the formulation device 10. The UI unit 11 can also read out problem data stored in the problem database 14 and display problems that have been input in the past.

[0048] (2) The UI unit 11 converts the question input by the user P1 into question information and outputs the question information to the question generation unit 12. This question information is data in a format that can be displayed on the screen of the UI unit 11. (3) The question generator 12 generates question data by converting the question information input from the UI unit 11 into a format that can be interpreted by the optimization control device 20. Then, the question generator 12 outputs the question data to the question manager 13.

[0049] (4) The question management unit 13 stores the question data in the question database 14. (5) In addition, the question management unit 13 transmits the question data to the question input unit 21.

[0050] (6) The problem input unit 21 stores the received problem data in the optimization database 24. (7) The optimization control unit 22 acquires problem data from the optimization database 24. (8) Then, the model generation instruction unit 22a of the optimization control unit 22 outputs the problem data to the model generation unit 23, and instructs the generation of a problem model.

[0051] (9) The model generation unit 23 generates a problem model based on the problem data input from the model generation instruction unit 22 a, and stores this problem model in the optimization database 24. (10) The execution instruction unit 22b of the optimization control unit 22 acquires a problem model from the optimization database 24. (11) Then, the execution instruction unit 22b of the optimization control unit 22 transmits the acquired problem model to the annealing software 31 of the annealing device 30, and instructs it to execute the optimization process.

[0052] (12) The annealing software 31 performs optimization processing using the problem model, and stores the results of this processing in the optimization database 24. (13) The determination unit 22c of the optimization control unit 22 determines the constraints that have been violated and the constraints that are likely to be violated based on the execution results read from the optimization database 24. Then, the weight change unit 22d of the optimization control unit 22 performs processing to increase the weights of the violated constraints. After that, the execution instruction unit 22b again instructs the annealing software 31 to execute the optimization processing.

[0053] (14) The problem input unit 21 acquires the optimization result stored in the optimization database 24. Here, the optimization result is data obtained by processing the execution result stored in the optimization database 24 from the annealing software 31 by the result processing unit 22e of the optimization control unit 22.

[0054] (15) The problem input unit 21 transmits the optimization result obtained from the optimization database 24 to the problem management unit 13. (16) The problem management unit 13 stores the optimization results received from the problem input unit 21 in the problem database 14. The optimization results stored in the problem database 14 are called optimization result data.

[0055] (17) The UI unit 11 obtains the optimization result data from the problem database 14. (18) The UI unit 11 creates a screen in which the acquired optimization result data is arranged in a layout that is easy for the user P1 to view, and displays the optimization result on the screen. Therefore, the user P1 can check the optimization result through the UI unit 11.

[0056] Here, a description will be given of a combinatorial optimization problem for which optimization processing is performed using the annealing software 31. Here, a shift is assumed in which "the number of monthly working days of personnel A meets the conditions, but the number of consecutive working days is longer than desired." For example, when checking "whether a shift that satisfies the working conditions of each employee is available," the judgment unit 22c increases the weight and detects "constraints violated by combinatorial optimization" and "constraints that are easily violated." If employee A's desired number of consecutive work days is three days, but a solution is obtained for four consecutive days, the constraint on "employee A's number of consecutive work days" is violated. Therefore, even if the optimization process is performed several times by the annealing software 31 and a solution is obtained, if the constraint on the above-mentioned "employee A's number of consecutive work days" is violated, the optimization control unit 22 can determine that "employee A's number of consecutive work days" is a "constraint that is easily violated."

[0057] As described above, the weight indicates the importance of the constraint and is a relative value between the constraints. For example, (constraint A:B:C)=(weight 100:200:300) and (constraint A:B:C)=(weight 1:2:3) have the same meaning. As a result of the annealing software 31 performing the optimization process on a problem in which the weights of the constraints are changed, a constraint that is always violated or violated with a probability equal to or greater than a judgment threshold (e.g., 75%) is called a "constraint that is likely to be violated." As described above, the optimization process is performed four times, and a constraint that is violated three times is a constraint that is likely to be violated because it is violated with a probability equal to or greater than the specified ratio.

[0058] Next, the advantages of using the annealing method will be explained. Conventional optimization solvers always respect all constraints, so if there is no solution that respects all constraints, the result is "no solution." If all constraints must be respected and the problem is not too large, a solution can be obtained using a conventional solver. However, if the problem is large and "it is acceptable for a solution to be obtained that meets expectations as much as possible," conventional solvers cannot handle the problem. In contrast to conventional solvers, the annealing method can obtain a "solution that tries to respect constraints as much as possible." For this reason, the annealing method is effective when the problem is large and "it is acceptable for a solution to be obtained that meets expectations as much as possible." Furthermore, with the annealing method, there are "constraints that are easily violated," and adding weights to these constraints makes them less likely to be violated.

[0059] In the annealing method, the solution with the smallest "energy value" calculated as a result of optimization is considered to be the "better solution." However, since there is a possibility that the constraints may not be met, the solution with the smallest energy value among those where the constraints are met can be considered to be the "better solution." For this reason, it is possible to switch to the conventional method of finding the "better solution."

[0060] To solve a combinatorial optimization problem, it is necessary to express the problem as a Hamiltonian (energy function) of an Ising model. Therefore, the problem is formulated to express it as a three-way relationship between an objective function, decision variables, and constraint conditions. The objective function is a function expressed using decision variables, and is expressed as a problem model generated by the model generation unit 23 shown in FIG. 1. The decision variables are values ​​to be found expressed by variables, and the contents of the decision variables are shown in the variable list shown in FIG. 4. The constraint conditions are requirements that must be observed in the optimization process of the annealing software 31 expressed by decision variables, and the contents of the constraints are shown in the constraint list shown in FIG. 5.

[0061] Then, when the annealing software 31 executes the optimization process, a combination of variables that satisfies the constraints, is in a state where the energy of the Ising model is low, and makes the Hamiltonian small is obtained as a solution. In the annealing method, a solution that does not satisfy the constraints may be obtained, and the unsatisfied constraints are called "constraints violated."

[0062] When the annealing software 31 executes the optimization process for the problem and finds a "solution that satisfies all constraints," or when the optimization process is completed a "preset number of times," all optimizations are completed. Here, when the optimization process is completed a "preset number of times," the final result is determined as follows.

[0063] (1) When there are multiple solutions that satisfy all constraints The determining unit 22c determines the final result as the smallest energy value calculated by the optimization process of the CMOS annealing.

[0064] (2) If no solution that satisfies all constraints is found The determination unit 22c determines the solution with the best score calculated based on an arbitrary condition as the final solution among the found solutions. The final solution may be, for example, a solution with a small energy value, a solution with a small number of violations of constraints, or the sum of penalty coefficients for violations of constraints.

[0065] The optimization results obtained by processing the execution results of the optimization process performed by the annealing software 31 by the result processing unit 22e (see Fig. 2) are shown in the result list shown in Fig. 6. Moreover, the execution results by the annealing software 31, which have not yet been processed by the result processing unit 22e, are shown in the result list shown in Fig. 7.

[0066] Here, various lists used in the present embodiment will be described with reference to Figs. 4 to 7, taking the allocation of work shifts as an example. When allocating work shifts, for example, it is assumed that there are three shifts (shifts A, B, and C) that can be allocated to three personnel (personnel 1, personnel 2, and personnel 3). In a combinatorial optimization problem, for example, a problem of how to allocate a work shift on November X, 2022 to personnel 1 is solved. Here, variables representing shift A of personnel 1, shift B of personnel 1, and shift C of personnel 1 are prepared. Then, the annealing software 31 solves a problem in which the sum of the variables is "1" by an optimization process. Note that a variable that becomes "1" means that the shift represented by that variable has been adopted as the work shift of personnel 1. Conversely, a variable that becomes "0" means that the shift has not been adopted as a work shift. Therefore, if the variable representing shift A of personnel 1 is "1", it can be seen that shift A has been adopted as the work shift of personnel 1.

[0067] FIG. 4 is a diagram showing an example of a variable list. The variable list specifies the variables used in the combinatorial optimization problem, and includes the following fields: variable name, lower limit, and upper limit.

[0068] The variable name item stores the variable name for identifying the variable representing the shift that can be assigned to each of the above-mentioned personnel. The lower limit field stores the lower limit of the variable. Variables that are not used as work shifts are set to "0". The upper limit field stores the upper limit of the variable. The variable adopted as the work shift is "1".

[0069] 4, the variable with the variable name "variable1" is associated with shift A of employee 1, the variable with the variable name "variable2" is associated with shift B of employee 1, and so on. Note that the variable with the variable name "variable4" may be associated with shift A of employee 2, and the variable with the variable name "variable5" may be associated with shift B of employee 2. Before the optimization process is performed, the variables with the variable names "variable2" to "variable5" are included in the range from the lower limit value "0.0" to the upper limit value "1.0", and are not fixed to "0.0" or "1.0".

[0070] As described above, when a variable is "1.0", it means that the personnel represented by the variable adopts the shift, and when the variable is "0.0", it means that the personnel represented by the variable does not adopt the shift. Before the annealing software 31 solves the problem by optimization processing, each variable is a number between "0.0" and "1.0". After solving the problem, the variable with the variable name "variable1" is "1.0", and the variables with the variable names "variable2" to "variable5" are all "0.0". In this case, it can be said that shift A of personnel 1, represented by the variable with the variable name "variable1", has been obtained as the solution. Then, the determination unit 22c of the optimization control unit 22 determines that the constraint is not violated if the solution is included between the lower limit value and the upper limit value, and determines that the constraint is violated if the solution is not included between the lower limit value and the upper limit value.

[0071] FIG. 5 is a diagram showing an example of a constraint list. The constraint list specifies the constraints that occur when the variables in the variable list are combined, and includes the following items: constraint name, constraint type, variable list, coefficient list, lower limit, upper limit, and weight.

[0072] The constraint name field stores the name of a constraint for identifying a constraint set for a combinatorial optimization problem. The constraint type field stores the type of constraint. For example, the linear-sum type indicates that the sum of variables is within a range between a lower limit and an upper limit. The linear-minimize type represents a constraint that minimizes the sum of variables using the variable list and coefficient list. A linear-minimize type constraint has no upper or lower limit, so the constraint cannot be violated. A linear-minimize type constraint is used, for example, when you want to minimize the sum of a set of variables while enforcing another constraint, such as linear-sum.

[0073] The variable list item stores a combination of variables selected from the variables listed in the variable list shown in FIG. The coefficient list item stores a coefficient for each variable stored in the variable list item. For example, the coefficient is multiplied by multiple variables.

[0074] The lower limit field stores the lower limit of the calculation result of the variable that satisfies the constraint. The upper limit field stores the upper limit of the calculation result of the variable that satisfies the constraint.

[0075] The weight item stores a weight set for each constraint. The weight change unit 22d can assign a larger weight to a constraint that is easily violated or an important constraint than to other constraints by setting a weight for each constraint. The weight change unit 22d can also set a weight for each constraint according to the execution result of the optimization process.

[0076] For example, since the type of the constraint with the constraint name "constraint1" is "linear-sum", the constraint is that the sum of the variables multiplied by the coefficients must be in the range from the lower limit "0" to the upper limit "2". The coefficients stored in the coefficient list are multiplied by the coefficients stored in the variable list, so in the formula variable1×1+variable2×1+variable3×(-1)+variable4×1, if "variable1" to "variable4" are all "1", then 1×1+1×1+1×(-1)+1×1=2. As a result, "2" is between the lower limit "0" and the upper limit "2", so it can be said that the variables satisfy the constraint. In other words, the variable "1" of "variable1" to "variable4" also satisfies the constraint. On the other hand, if "variable1", "variable2", and "variable4" are "0" and "variable3" is "1", then the formula is 0×1+0×1+1×(-1)+0×1=-1. Since the result "-1" is less than the lower limit "0", it can be said that the variable does not satisfy the constraint. In this case, the constraint "constraint1" is violated. On the other hand, in "constraint2", when "variable4" and "variable5" are "1", the result obtained by multiplying the coefficient is "2", which is the same as the upper limit value "2", and the variable satisfies the constraint.

[0077] Note that the type of the constraint with the constraint name "constraint3" is "linear-minimize", so the constraint is to minimize the total value of the variables as much as possible. In other words, the constraint of "constraint3" is to minimize the total value of the expression variable1×1+variable2×1+variable3×1+variable4×1+variable5×1 as much as possible. As mentioned above, linear-minimize type constraints do not have upper and lower limits, so the constraint will not be violated.

[0078] The larger the weight, the more the constraint must be satisfied. In other words, "constraint1", which has a weight of "100", is more strongly required to be satisfied than "constraint3", which has a weight of "20". In other words, "constraint1" is a constraint that must not be broken, and "constraint3" is a constraint that can be broken. Note that multiple constraints can have the same weight. For this reason, a solution that satisfies "constraint1", which has a large weight, as much as possible, is given priority. In this case, a solution that satisfies "constraint1" does not have to satisfy "constraint3", which has a small weight.

[0079] The amount of increase in weight may be changed depending on the importance of the constraint. For example, the weight change unit 22d may double the amount of increase in weight for "constraint1" and increase the amount of increase in weight for "constraint2" by 1.5 times.

[0080] FIG. 6 is a diagram showing an example of a processed result list. The processed result list represents, for example, the execution result of the annealing software 31, recorded in a format that can be confirmed by the user P1. This processed result list has the following items: result ID, energy value, whether or not it is satisfied, and variable value list.

[0081] The result ID item stores a result ID for identifying a solution that is a result of executing the annealing software 31. In this example, it can be seen that three solutions identified by result IDs "1" to "3" have been found as solutions to the combinatorial optimization problem. The energy value item stores the energy value output for each solution by the annealing software 31. Generally, the lower the energy value, the better the solution obtained.

[0082] The Satisfied field stores the result of whether or not the constraint was satisfied. If the constraint was satisfied, "True" is stored, and if the constraint was not satisfied, "False" is stored. The variable value list items store the values ​​of the variables in the variable list shown in Figure 4 as variable values. The variable values ​​are stored in the variable value list items in the order of "variable1", "variable2" from the top of the variable list.

[0083] As shown in the processed result list, when the result ID is "1" and the variable value list item stores "1,1,1,1,1", the satisfied / unsatisfied item is "True", which indicates that the constraint is satisfied. Also, when the result ID is "2" and the variable value list item stores "1,1,0,1,1", the satisfied / unsatisfied item is "False", which indicates that the constraint is not satisfied. On the other hand, when the result ID is "1", the energy value is "-100", but when the result ID is "3", the energy value is "-120". However, the result of the result ID "3" does not satisfy the constraint because the satisfied / unsatisfied item is "False". Therefore, the result of the result ID "1" can satisfy the constraint and has a low energy value, so it can be said to be a good solution. Then, when the annealing software 31 is executed multiple times and a value that can subordinate the constraint and has the lowest energy value is output, the solution at that time is determined as the optimal solution.

[0084] FIG. 7 is a diagram showing an example of a pre-processing result list. The pre-processing result list represents the execution result when output by the annealing software 31. The optimization database 24 stores the pre-processing result list in the format shown in FIG.

[0085] This pre-processing result list has items of energy values ​​and variable value lists. The contents of each item are the same as those in the post-processing result list described with reference to FIG. 6, so detailed description will be omitted.

[0086] The execution results output by the annealing software 31 do not include the fulfillment / non-fulfillment items in the post-processing result list shown in Fig. 6. After the pre-processing result list shown in Fig. 7 is saved in the optimization database 24, the result processing unit 22e reads out the pre-processing result list. Then, based on the contents of the pre-processing result list, the result processing unit 22e adds a result ID and a fulfillment / non-fulfillment determination result for each execution result to create a post-processing result list.

[0087] <Explanation of conventional processing (manual adjustment)> 8 is a diagram showing an example of a conventional optimization process in which the weights of constraints are manually adjusted. Here, a process in which the user manually adjusts the weights of constraints will be described.

[0088] First, the user manually adjusts the weights of each constraint (S1). Next, the user executes the optimization process (S2). At this time, the optimization process may be executed using an optimization device (e.g., an annealing device), or, if the problem is small-scale, the optimization process may be executed manually while visually checking.

[0089] Next, the user visually determines whether the execution result satisfies the constraints (S3). If the execution result does not satisfy the constraints (NO in S3), the process returns to step S1, where the user readjusts the weights. On the other hand, if the execution result satisfies the constraints (YES in S3), the process ends.

[0090] <Explanation of conventional processing (automatic adjustment)> 9 is a diagram showing an example of a conventional optimization process for automatically adjusting the weights of constraints. Conventionally, a method in which a user automatically adjusts the weights of constraints has also been used.

[0091] First, the user adjusts the weights of the constraints (S11). The weights are often adjusted manually based on the user's past experience.

[0092] Next, the conventional optimization control device performs the following loop processing until the set upper limit number of times is reached (S12). In this loop processing, first, the optimization control device causes the optimization device to perform optimization processing (S13).

[0093] Next, the optimization control device performs scoring to assign a score to the execution result of the optimization device (S14). In scoring, if a better solution (e.g., a solution with a lower energy value) is obtained while the constraints are observed, a predetermined score is added to the execution result that obtained the solution. Conversely, a penalty (e.g., a subtraction from the score) is imposed on the execution result depending on the number of times the constraints are violated. For this reason, constraints that are violated the most are identified in the scoring process of step S14.

[0094] Next, the optimization control device adjusts the weights for the constraints (S15). This weight adjustment may be performed by the user. Thereafter, the processing from step S13 onwards is repeated. Then, if the optimization control device obtains a score higher than that of the previous processing, it sets the execution result at which the score was obtained as a provisional optimal solution. When the loop processing reaches the set upper limit number of times, the optimization control device outputs the execution result with the highest score as the optimal solution.

[0095] In the conventional processing shown in Figures 8 and 9, the optimized execution result is obtained after satisfying all constraints. Therefore, calculations continue until all constraints are satisfied, which can take a long time to obtain the execution result, or the optimal execution result cannot be obtained within the set upper limit number of times.

[0096] As described above, the number of weights set for constraints in combinatorial optimization problems is enormous. In order for a user to manually adjust the weights, for example, it is possible to divide 10,000 constraints into five categories and limit the types of weights to five. In this case, the weights of multiple constraints are set to the same for each category. However, this does not allow the original purpose of obtaining a "solution that respects the constraints" to be achieved.

[0097] <Description of optimization control process according to this embodiment> On the other hand, the optimization control device 20 according to this embodiment does not need to satisfy all constraints. For this reason, the optimization control unit 22 has a function of determining constraints that are likely to be violated (constraints that are subject to the first adjustment) in accordance with the first optimization process, and increasing the weight of the constraint to execute the optimization process. The optimization control unit 22 assigns weights according to the importance of the constraints, so that the weights of constraints that are not permitted to be violated and the weights of constraints that are likely to be violated can be made different before the optimization process is executed. Here, an example of the process automatically performed by the optimization control device 20 according to this embodiment will be described with reference to Figs. 10 and 11.

[0098] 10 is a flowchart showing an example of processing of the problem solving system 1 according to the first embodiment. This processing is shown as an example of an optimization control method for controlling the optimization processing executed by the optimization control unit 22 by the annealing software 31.

[0099] First, the weight change unit 22d of the optimization control unit 22 increases the weight of the constraint to be adjusted for the first time, based on the problem data read from the optimization database 24. The "first time" refers to the "first of multiple optimization processes" when the optimization control unit 22 executes multiple optimization processes. Then, the determination unit 22c detects constraints that are likely to be violated (S21).

[0100] Constraints that are likely to be violated are subject to adjustment by weight change unit 22d, which adds weights. Before executing the optimization process of annealing software 31, the weights are adjusted so that the solution is more likely to satisfy the constraints, and it is expected that a better solution will be obtained. When determination unit 22c detects a constraint to be adjusted in the process of step S21, model generation unit 23 generates a problem model based on the detected constraint and stores the problem model in optimization database 24. Thereafter, optimization control unit 22 and annealing software 31 start the loop process of step S22.

[0101] Next, the optimization control unit 22 (the execution instruction unit 22b, the judgment unit 22c, and the weight change unit 22d) repeats the loop process until the set upper limit number of times is reached or until a solution is found (S22). The optimization control unit 22 may repeat the loop process until a target fulfillment rate is achieved. The target fulfillment rate may be, for example, a condition that 90% or more of all constraints are not violated.

[0102] In the loop process starting from step S22, the weight change unit 22d reads out the problem model from the optimization database 24, and increases the weight of the constraint that was violated in the optimization process by the annealing software 31 (S23). In step S23, the optimization control unit 22 changes the amount of change in the weight for each constraint, based on the execution results of the optimization process previously executed by the annealing device 30.

[0103] The weight modification unit 22d may narrow down the constraints for which the weights are to be increased. If it is acceptable for a constraint to be violated, the weight modification unit 22d does not need to unconditionally increase the weight for that constraint. For this reason, the weight modification unit 22d changes the weights according to a preset constraint. The weight modification unit 22d may also arbitrarily determine the constraints for which the weights are to be increased. However, in the first loop process, since the optimization process by the annealing software 31 has not yet been performed and no constraints have been violated, the process proceeds to the next step S24 without performing the process in step S23.

[0104] Next, the execution instruction unit 22b transmits the problem model to the annealing software 31, and causes the annealing software 31 to execute optimization processing of the problem (S24). The execution results of the optimization performed by the annealing software 31 are stored in the optimization database 24. In the optimization processing, it is necessary to prevent the solution from falling into a locally optimal solution. A locally optimal solution is a solution that may be the best solution in its vicinity, but is not necessarily the best solution in the entire feasible region. On the other hand, the best solution in the entire feasible region is called a globally optimal solution.

[0105] Next, the determination unit 22c reads the execution result from the optimization database 24 and determines the constraints that have been violated by the optimization process (S25). When the determination unit 22c detects a violated constraint, the weight change unit 22d increases the weight for the violated constraint, and adjusts it so that the constraint is not violated in the next optimization process.

[0106] For example, if an upper limit of 100 times is set in step S22, after the optimization process is repeated 100 times, the result processing unit 22e processes the execution result from which the best solution is obtained into an optimization result and stores this optimization result in the optimization database 24. Alternatively, if a suitable solution is found, the solution may be stored in the optimization database 24 at that time. When the problem input unit 21 reads out this optimization result and transmits it to the problem management unit 13, it is passed in the form of a processed result list shown in FIG.

[0107] The process of step S24 is a process for finding a local optimum solution, and the loop process of step S22 is a process for finding the best solution from among the local optimum solutions found in step S24.

[0108] 11 is a flowchart showing an example of a process in which the weight change unit 22d selects an initial value of the weight. The process shown in FIG. 11 represents a subroutine of step S21 shown in FIG.

[0109] First, the weight change unit 22d determines whether or not a past execution result of the optimization process has been stored in the optimization database 24 (S31). If a past execution result of the optimization process has not been stored (NO in S31), the weight change unit 22d sets an initial value of the weight for the constraint based on a parameter prepared in advance (S32), and proceeds to step S22 in FIG. 10. In step S32, the weight change unit 22d sets, for example, weights of the same magnitude as initial values ​​for all constraints. In this way, in step S32, the optimization control unit 22 determines the initial value of the weight based on a parameter prepared in advance, so that appropriate initial values ​​of the weight can be determined even if there is no past execution result.

[0110] On the other hand, if the execution result of the optimization process has been stored in the past (YES in S31), the weight change unit 22d judges whether or not the optimization database 24 has accumulated more than a predetermined number of execution results (S33). If the optimization database 24 has not accumulated many execution results (NO in S33), the weight change unit 22d determines the initial value of the weight for the constraint based on the execution result of the optimization process performed with arbitrary settings, sets the determined weight (S34), and then proceeds to step S22 in Fig. 10. In this way, in step S34, the optimization control unit 22 determines the initial value of the weight based on the execution result of the optimization process performed by the annealing device 30 with arbitrary settings, so that it is possible to determine an appropriate initial value of the weight even if the accumulated execution results are few.

[0111] On the other hand, if many execution results have been accumulated in the optimization database 24 (YES in S33), it is considered that past trends for a certain problem are known. Therefore, the weight change unit 22d determines weights based on the execution results of past optimization processes, sets the determined weights (S35), and then proceeds to step S22 in Fig. 10. In this way, in step S35, the optimization control unit 22 determines initial values ​​of weights based on execution results of past optimization processes performed by the annealing device 30, thereby making it possible to determine appropriate initial values ​​of weights from proven execution results.

[0112] Here, the process of FIG. 11 will be described using work shifts as an example. When there is no result of the optimization process in step S31, it is assumed that, for example, there is an accumulation of work shifts for Company A in the past, but a new work shift is to be created for Company B, which is in the same industry as Company A. In this case, the weight change unit 22d refers to the result of the optimization process used in the past when creating a work shift for Company A, and sets weights for creating a work shift for Company B based on parameters common to the industry.

[0113] Furthermore, in step S33, when the results of past optimization processes are not accumulated, it is assumed that Company A has only created work shifts for January and February of a certain year in the past, and the work shift to be created this time is for March. In this case, the weight change unit 22d does not use the past work shifts for January and February to determine the weights, since determining the weights based on only the work shifts for January and February, which are the results of past optimization processes, is likely to be incomplete. Therefore, the weight change unit 22d determines the same initial value as the weight for all constraints.

[0114] In step S33, a large number of results of past optimization processes are stored, which may mean that Company A has created work shifts for January, February, ..., November of a certain year in the past, and the work shift to be created this time is for December. In this case, the weight change unit 22d determines the weights based on the work shifts from January to November, which are the results of past optimization processes.

[0115] <Examples of other ways to find constraints for which weights should be adjusted> It is not appropriate to spend time on the process of detecting constraints that are likely to be violated in step S21. If the determination unit 22c can detect constraints whose weights are to be adjusted, there is no need to limit the method to the specific method shown in Fig. 11. Therefore, other methods for detecting constraints whose weights are to be adjusted at the start of the optimization process will be described. As such methods, the following first to fourth methods can be considered, for example.

[0116] (First Method) The execution command unit 22b controls the annealing software 31 to execute the optimization process by reducing the number of sweeps. Then, the judgment unit 22c judges the violated constraint as the first adjustment target. When the execution command unit 22b reduces the number of sweeps, it becomes easier to fall into a local optimum solution. On the other hand, when the execution command unit 22b increases the number of sweeps, it becomes easier to obtain a "good solution" with a small energy value, but it takes time to obtain a solution.

[0117] (Second Method) The execution instruction unit 22b reduces the number of sweeps or reduces a set value that is an execution parameter of the annealing software 31, and controls the annealing software 31 to execute a conventional processing flow (automatic adjustment shown in FIG. 9 described later). Then, the judgment unit 22c judges the constraint that has been violated many times as the first adjustment target. In the second method, the execution instruction unit 22b, for example, controls the annealing software 31 to execute the conventional flow (automatic adjustment) three times, and the weight change unit 22d sets the weight changed for each of the three processes as the constraint. Then, the judgment unit 22c judges the constraint that has been violated three times to be a "constraint that is easily violated". Then, the execution instruction unit 22b judges this constraint as the first adjustment target.

[0118] Here, the number of sweeps in the first and second methods will be explained. In a specific example, optimization processing using the annealing method corresponds to "performing optimization while changing a certain temperature parameter (tA) to a certain temperature parameter (tB) several times." The number of times the temperature parameter is changed is called the number of sweeps. The larger the number of sweeps, the lower the possibility of falling into a local optimum and the higher the possibility of finding a better solution, but it takes longer to find a good solution.

[0119] (Third Method) The execution command unit 22b sets weights for arbitrary constraints and causes the annealing software 31 to execute an optimization process. Then, the judgment unit 22c judges the violated constraints as targets for initial adjustment. Note that in the third method, the weight change unit 22d does not change the weights. Since the execution command unit 22b sets the constraints that have been violated even once by the optimization process as targets for initial adjustment, there is no need to execute the optimization process many times.

[0120] (Fourth Method) The execution instruction unit 22b causes the annealing software 31 to execute an optimization process while changing the weight of an arbitrary constraint in several patterns. Then, the judgment unit 22c judges a constraint that has been violated many times as the one to be adjusted for the first time. In the fourth method, the weight change unit 22d changes the weight. For example, the execution instruction unit 22b changes the weight shown in FIG. 5 for one constraint to "100" in the first process and to "50" in the second process, and then causes the annealing software 31 to execute an optimization process. Then, the judgment unit 22c judges a constraint that is violated even when the weight is changed as a constraint that is likely to be violated.

[0121] <Example of the problem list screen> FIG. 12 is a diagram showing an example of the configuration of the question list screen W1. The question list screen W1 is displayed on the display by the UI unit 11, and is a screen that allows the user P1 to check the contents.

[0122] The question list screen W1 includes a question list display section 40 and a display update section 41. The problem list display section 40 displays a list of problems input by the user P1 through the formulation device 10. The display update section 41 is a button-type operation icon that, when pressed by the user P1, updates the contents of each item of the questions displayed in the question list display section 40 to the latest state.

[0123] The question list display section 40 has an upload button 51 as well as items for displaying questions, such as name, status, result, creation, start, end, and operation. The upload button 51 is used by the user P1 to instruct uploading a question file. The name field displays the name of the question entered by user P1. The status item indicates the execution status of the annealing software 31 for the input problem.

[0124] The result item shows the execution result of the annealing software 31. If the result is "OK", it means that a solution has been found. However, it is unclear whether this solution is the optimal solution. On the other hand, if the result is "-", it means that no solution has been found or the optimization process has not been performed. If the result is "NG", the user P1 needs to reconsider the problem and take measures such as inputting the revised problem into the UI unit 11.

[0125] The creation item indicates the date and time when the question model was created by the model generation unit 23 after the question was input through the UI unit 11. The start item indicates the date and time when the optimization control unit 22 transmitted the problem model to the annealing software 31 and the annealing software 31 started executing the problem model. As described above, the loop processing performed by the optimization control unit 22 and the annealing software 31 in cooperation with each other is performed multiple times. The end item indicates the date and time when the optimization control unit 22 ended the processing of the annealing software 31 because an optimal solution was obtained based on the execution result of the annealing software 31.

[0126] The status "DONE" indicates that the optimization process by the annealing software 31 has already been completed and the optimization control unit 22 has obtained the optimal solution. The status "CANCEL" indicates that the execution of the optimization process by the annealing software 31 has been canceled for some reason. For this reason, no value is displayed in the end item. The status "TODO" indicates that the optimization control unit 22 and the annealing software 31 are currently working together to complete preparations for executing the optimization process. At this time, the optimization control unit 22 is waiting to input a problem model to the annealing software 31. For this reason, no values ​​are displayed in the start and end items. The status "DOING" indicates that the problem model is being executed by the annealing software 31. For this reason, no value is displayed in the end item.

[0127] However, after the user P1 inputs a problem, a problem model is not immediately generated and the annealing software 31 is not able to execute the optimization process using the problem model. For this reason, the problem list display unit 40 is provided with operation items that allow the user P1 to instruct an operation for each problem. These operation items show operation icons that the user P1 can operate for each problem. The operation icons include a request start button 52, a download button 53, a reload button 54, and a delete button 55.

[0128] The request start button 52 is a button that the user P1 uses to request the start of execution of the optimization process for a problem that has been input by the user P1 and for which preparation for execution has been completed. By pressing the request start button 52, the problem enters a state in which it is waiting for execution by the annealing software 31. The download button 53 is a button that the user P1 uses to instruct downloading of optimization result data for a problem that has been completed. The reload button 54 is a button for the user P1 to update the display of the progress status of the processing for the currently displayed problem. By pressing the reload button 54, the status item changes from "TODO" to "DOING" or "DONE." The delete button 55 is a button that the user P1 uses to instruct deletion of each currently displayed question.

[0129] As described above, by downloading the optimization result data, the user P1 can check the optimization result on another PC, an application program, etc. However, an optimization result confirmation screen (not shown) may be provided so that the user P1 can check the optimization result on the screen via the UI unit 11.

[0130] In the optimization control device 20 according to the first embodiment described above, the optimization control unit 22 transmits a problem model to the annealing software 31, checks the execution result of the annealing software 31, and judges whether any constraints have been violated in the optimization process. Then, the optimization control unit 22 adds weights to make the constraints less likely to be violated according to the importance of the violated constraints, and causes the annealing software 31 to perform optimization processing for the problem again. The optimization control unit 22 and the annealing software 31 repeat the weight adjustment and optimization processing until a target fulfillment rate (e.g., 90%) of all constraints is achieved, thereby obtaining a solution in which as few constraints as possible are violated.

[0131] In this embodiment, the process of adding weights to constraints by the optimization control unit 22 and the optimization process by the annealing software 31 are performed automatically. Therefore, the user P1 does not need to adjust the values ​​of constraints and variables, which may be enormous in number, and the burden on the user P1 from inputting the problem to obtaining a solution can be reduced. In addition, a solution obtained by repeating the weight adjustment and optimization process until a target fulfillment rate (for example, 90%) is achieved is considered to be a solution that satisfies the constraints. Therefore, the time required to obtain a solution that satisfies the constraints by the method according to this embodiment can be shortened compared to the time required to obtain a solution that satisfies all constraints by the conventional method.

[0132] Furthermore, the optimization control unit 22 can detect constraints that are easily violated during the initial optimization process and set weights for those constraints. Therefore, in the initial optimization process, a state in which constraints are observed can be created first. After that, when the optimization control unit 22 detects constraints that are easily violated or constraints that have been violated by the execution of the optimization process, it changes the weights by focusing on the constraints that are easily violated or constraints that have been violated. Therefore, it is possible to reduce the time it takes for the annealing software 31 to output an execution result that is the optimal solution.

[0133] The problem solving system 1 according to the embodiment described above can be used not only for optimizing personnel allocation when considering work shifts, but also for solving various combinatorial optimization problems such as optimizing financial portfolios.

[0134] [Second embodiment] Next, the processing of the problem solving system 1 according to the second embodiment of the present invention will be described with reference to FIG. In the process according to the first embodiment described above, even if a constraint is not satisfied or there is a desire to further search for a better solution than the found solution, the process of increasing the weight of the violated constraint may not be able to obtain a better solution. Therefore, in the process according to the second embodiment, a conventional automatic adjustment process is added to obtain a better result based on the result of the process according to the first embodiment.

[0135] Fig. 13 is a flowchart showing an example of the processing of the problem solving system 1 according to the second embodiment. Among the processing in Fig. 13, the processing of the first steps S21 to S25 is the same as the processing shown in Fig. 10, and therefore detailed description thereof will be omitted.

[0136] After the loop process of step S22, the optimization control unit 22 may not find a solution even if it repeatedly inputs the combinatorial optimization problem in which the weights for the violated constraints have been changed to the annealing apparatus 30 again, or may request a better solution than the found solution. In this case, the optimization control unit 22 determines whether a solution has not been found or whether a better solution is needed (S41). If the optimization control unit 22 determines that a solution has been found or that a better solution is not needed (NO in S41), it ends this process.

[0137] On the other hand, if the optimization control unit 22 determines that a solution cannot be found or that a better solution is needed (YES in S41), it executes a loop process of steps S42 to S45. In this process, the optimization control unit 22 repeats the execution of the optimization process by the annealing device 30, the scoring of the execution result, and the process of changing and setting the weights until the upper limit number of times set by the optimization control unit 22 is reached.

[0138] The processing of steps S42 to S45 is the same as the processing of steps S12 to S15 in the conventional optimization control processing shown in Fig. 9, and therefore detailed description thereof will be omitted. Then, after the loop processing of steps S42 to S45 is executed until the set upper limit number of times is reached, this processing ends.

[0139] The optimization control unit 22 according to the second embodiment described above performs the processes of steps S42 to S45 for all constraints until the set upper limit number of times is reached when the solution does not satisfy the constraints and no solution is found, or when a better solution than the found solution is to be further searched for. In this way, by adding the conventional process of finding a "better solution" to the process according to the second embodiment, the optimization control unit 22 can achieve the target fulfillment rate and also achieve the objective of finding a "better solution".

[0140] As described with reference to Fig. 9, the conventional loop process of steps S12 to S15 aims to obtain a solution that satisfies all constraints. However, in the conventional loop process, it takes time to obtain a solution, so in the loop process of steps S42 to S45 of this embodiment, the loop process may be terminated when a solution is obtained in which the unbroken constraints achieve a target fulfillment rate.

[0141] It should be noted that the present invention is not limited to the above-described embodiments, and various other applications and modifications are possible without departing from the gist of the present invention as set forth in the claims. For example, the above-mentioned embodiments have described the configuration of the device and system in detail and specifically in order to explain the present invention in an easily understandable manner, and are not necessarily limited to those having all of the configurations described. In addition, it is possible to replace a part of the configuration of the embodiment described here with the configuration of another embodiment, and it is also possible to add the configuration of another embodiment to the configuration of one embodiment. In addition, it is also possible to add, delete, or replace a part of the configuration of each embodiment with another configuration. In addition, the control lines and information lines shown are those that are considered necessary for the explanation, and not all control lines and information lines in the product are necessarily shown. In reality, it can be considered that almost all components are connected to each other. [Explanation of symbols]

[0142] Reference Signs List 1... problem solving system, 10... formulation device, 11... UI section, 12... problem generation section, 13... problem management section, 14... problem database, 20... optimization control device, 21... problem input section, 22... optimization control section, 23... model generation section, 24... optimization database, 30... annealing device, 31... annealing software, 40... problem list display section, P1... user, W1... problem list screen

Claims

1. a database for storing solutions of an annealing device that solves combinatorial optimization problems by optimization processing using an annealing method; When the database does not contain a history of the annealing apparatus having previously executed the optimization process, an initial value of the weight for the constraint of the combinatorial optimization problem is set to the constraint of the combinatorial optimization problem based on parameters prepared in advance; when the annealing apparatus has a history of previously executing the optimization process and the database does not contain more than a predetermined number of execution results of the annealing apparatus having previously executed the optimization process, an initial value of the weight is set to the constraint of the combinatorial optimization problem based on an execution result of the annealing apparatus having executed the optimization process with an arbitrary setting; when the annealing apparatus has a history of previously executing the optimization process and the database contains more than a predetermined number of execution results of the annealing apparatus having previously executed the optimization process, an initial value of the weight is set to the constraint of the combinatorial optimization problem based on an execution result of the annealing apparatus having executed the optimization process with an arbitrary setting; an optimization control unit that sets initial values ​​of the weights to the constraints of the combinatorial optimization problem based on a result of an optimization process executed by the annealing apparatus, causes the annealing apparatus to execute an optimization process, determines that the constraint is not violated if the solution stored in the database is included between a lower limit value and an upper limit value, determines that the constraint is violated if the solution is not included between the lower limit value and the upper limit value, detects the constraint that has been violated a predetermined number of times or more out of the total number of processes read from a history of past executions of the optimization process by the annealing apparatus as a constraint that is likely to be violated, increases the weights for the violated constraints or the constraints that are likely to be violated, and inputs the combinatorial optimization problem with the increased weights into the annealing apparatus again to repeatedly execute the optimization process by the annealing apparatus to obtain a solution in which the unviolated constraints achieve a target fulfillment rate. Optimizing control device.

2. The optimization control unit sets the number of times the weight changing process is performed, or sets a timing to stop the weight changing process. The optimization control device according to claim 1 .

3. The optimization control unit determines the amount of change in the weight for each constraint based on a result of the optimization process previously executed by the annealing device. The optimization control device according to claim 1 or 2.

4. When the solution is not found even if the process of inputting the combinatorial optimization problem in which the weights have been changed for the violated constraints is repeated again to the annealing device, or when a better solution than the found solution is requested, the optimization control unit repeats the execution of the optimization process by the annealing device, the scoring of the execution result of the optimization process, and the process of changing and setting the weights until a set upper limit number of times is reached. The optimization control device according to claim 1 or 2.

5. storing a solution of the annealing apparatus that solves the combinatorial optimization problem by an optimization process using an annealing method in a database; a step of setting initial values ​​of weights for the constraints of the combinatorial optimization problem based on previously prepared parameters, when there is no history of the annealing apparatus having previously executed the optimization process in the database; setting initial values ​​of the weights for the constraints of the combinatorial optimization problem based on execution results of the optimization process performed by the annealing apparatus with arbitrary settings, when there is a history of the annealing apparatus having previously executed the optimization process and more than a predetermined number of execution results of the optimization process performed by the annealing apparatus have been accumulated in the database; and causing the annealing apparatus to execute the optimization process; determining that the constraint is not violated if the solution stored in the database is included between a lower limit value and an upper limit value, determining that the constraint is violated if the solution is not included between the lower limit value and the upper limit value, detecting the constraint that has been violated a predetermined number of times or more out of the total number of processes read from a history of past executions of the optimization process by the annealing apparatus as a constraint that is likely to be violated, and increasing the weight for the violated constraint or the constraint that is likely to be violated; and inputting the combinatorial optimization problem with the increased weights back into the annealing device, and repeatedly causing the annealing device to execute the optimization process to obtain a solution in which the unbroken constraints achieve a target fulfillment rate. Optimization control methods.

6. A step of storing a solution of an annealing device that solves a combinatorial optimization problem by an optimization process using an annealing method in a database; a step of setting initial values ​​of weights for the constraints of the combinatorial optimization problem based on previously prepared parameters, when there is no history of the annealing apparatus having previously executed the optimization process in the database; setting initial values ​​of the weights for the constraints of the combinatorial optimization problem based on execution results of the annealing apparatus having executed the optimization process with arbitrary settings, when there is a history of the annealing apparatus having previously executed the optimization process and more than a predetermined number of execution results of the annealing apparatus having previously executed the optimization process are accumulated in the database; and setting initial values ​​of the weights for the constraints of the combinatorial optimization problem based on execution results of the annealing apparatus having previously executed the optimization process, when there is a history of the annealing apparatus having previously executed the optimization process and more than a predetermined number of execution results of the annealing apparatus having previously executed the optimization process are accumulated in the database, and causing the annealing apparatus to execute the optimization process; a step of determining that the constraint is not violated if the solution stored in the database is included between a lower limit value and an upper limit value, determining that the constraint is violated if the solution is not included between the lower limit value and the upper limit value, detecting the constraint that has been violated a predetermined number of times or more out of the total number of processes read from a history of past executions of the optimization process by the annealing apparatus as a constraint that is likely to be violated, and increasing the weight for the constraint that has been violated or is likely to be violated; a step of inputting the combinatorial optimization problem with the increased weights to the annealing device again and repeatedly causing the annealing device to execute the optimization process to obtain a solution in which the unbroken constraints achieve a target fulfillment rate; A program for a computer to execute.

Citation Information

Patent Citations

  • Optimum designing system

    JP1994089322A

  • Optimization system

    JP2017010072A

  • Integer programming apparatus, integer programming method, and integer programming program

    JP2021089596A

  • Information processing apparatus, information processing method and computer program

    JP2022045174A

  • Optimization device, optimization method and optimization program

    WO2022024329A1