1. Introduction
1.1. QUBO and the Heat Treatment Scheduling
A Quadratic Unconstrained Binary Optimization (QUBO) problem is a type of combinatorial optimization problem defined by a quadratic function over binary variables. The objective is to find values of the binary variables (i.e., 0s and 1s) that minimize the value of the quadratic function.
For example, consider the following quadratic function
f with three binary variables
:
This quadratic objective function includes three linear terms and three quadratic terms. It attains its minimum value of 0 when , , and , which represents the optimal solution to the QUBO problem.
Since many optimization problems can be equivalently formulated as QUBO problems [
1], numerous researchers have dedicated efforts to developing efficient methods for such formulations. These include classic problems like the Traveling Salesman Problem (TSP) [
2,
3], the Quadratic Assignment Problem (QAP) [
4], prime factorization [
5,
6], various graph problems [
7], and applications in image processing [
8], among others. Additionally, a wide range of QUBO solvers have been developed using different hardware approaches, including GPU [
9,
10], FPGA [
11,
12], ASIC [
13], and optical computing technologies such as optical fibers [
14,
15]. In particular, D-Wave Systems has developed quantum annealers [
16], which are capable of solving QUBO problems directly. Thus, tackling combinatorial optimization problems through QUBO formulations offers a promising alternative to developing problem-specific solvers. Therefore, it is crucial to advance techniques for effectively formulating such problems as QUBO instances.
This study focuses on a scheduling problem arising in the heat treatment process of metal parts (
Figure 1) at the Tsukimi Factory of Nagato Co., Ltd., located in Hiroshima, Japan. While this problem shares similarities with the Job-Shop Scheduling Problem (JSSP), it is distinct in terms of the interdependencies between batch processing and the temporal structure of available slots. In this setting, multiple furnaces operate in parallel, each processing a sequence of orders, where each order consists of a single type of metal part. These parts are heated to high temperatures—approximately 1000 °C in our case—and then cooled using fans. Each metal part is characterized by the following three attributes:
A group ID that categorizes the geometry of the metal part;
A cooling parameter that specifies the fan rotation speed for cooling;
A list of compatible furnaces capable of processing the part.
The scheduling process at the Tsukimi Factory of Nagato Co., Ltd. is managed using discrete time slots, with each slot corresponding to six minutes. Each order requires a fixed number of consecutive time slots, determined by the number of metal parts it contains. The objective is to assign each order to a time window within one of its compatible furnaces while satisfying a set of operational constraints.
If two consecutive orders involve the same type of metal part, they can be scheduled back-to-back without any idle time slots. However, when switching between different parts within the same group, at least one idle time slot must be inserted between them to prevent mixing or misidentification, which could compromise quality standards. Furthermore, transitions between different cooling parameters—i.e., fan rotation speeds—require between zero and four idle time slots, depending on the specific combination of source and target speeds. These transition periods are treated as idle time during which no orders can be processed.
In industrial-scale heat treatment, experienced operators typically create a 24 h daily schedule for all furnaces based on expert judgment—a task that often takes two hours each day. These operators consider factors such as order urgency, processing constraints, and, most importantly, their own intuition and heuristics, rather than explicit numerical indicators. Although order prioritization is performed implicitly through personal judgment, this experience-driven approach is time-consuming, heavily reliant on individual expertise, and lacks reproducibility.
1.2. Our Contribution
To overcome the aforementioned limitations, we address the scheduling problem inherent in the heat treatment process of metal parts using Quadratic Unconstrained Binary Optimization (QUBO). We formulate the problem as a QUBO model that incorporates all relevant constraints and propose an efficient method for generating high-quality, practically useful schedules.
We have also developed a decision support system that employs a QUBO solver to compute optimized schedules and present them to human operators. The system takes as input the list of orders for the next day, along with user-assigned priority levels, and automatically converts the problem into a QUBO formulation. If the generated schedule does not reflect the operator’s intentions, they can revise the priority levels and rerun the optimization, enabling a human-in-the-loop, iterative workflow that integrates field expertise with computational optimization.
This system is implemented using QUBO++ [
17], a C++ library for formulating and solving QUBO problems. QUBO++ provides an expressive and efficient API for constructing QUBO instances programmatically and includes a lightweight solver, the Easy Solver, which is based on the positive min search algorithm [
12]. This algorithm is a local search heuristic that selects a bit to flip based on the delta values of all bits, which represent the changes in the objective function. It identifies the minimum positive delta as a threshold, extracts all bits with deltas below this threshold, and randomly selects one of them to flip. This process is repeated iteratively. Unlike the well-known simulated annealing algorithm, the positive min search algorithm requires no hyperparameter tuning for temperature scheduling, which is often critical for solution quality.
In this study, we leverage QUBO++ to model and solve real-world scheduling problems in heat treatment processes and demonstrate its practical effectiveness using the Easy Solver bundled with the library. The source code of QUBO++ is publicly available (URL:
https://abs2.cs.hiroshima-u.ac.jp/, accessed on 4 August 2025).
1.3. Job-Shop Scheduling Problem and Related Works
The scheduling problem addressed in this study can be considered a variant of the Job-Shop Scheduling Problem (JSSP). The classical JSSP has been extensively studied over the decades [
18,
19] and is typically formulated as a mixed-integer programming (MIP) model [
20,
21]. Numerous metaheuristic approaches have also been proposed to tackle the inherent computational complexity of JSSP, including Genetic Algorithms [
22,
23], simulated annealing [
24,
25], Tabu Search [
26,
27], Ant Colony Optimization [
28,
29], Particle Swarm Optimization [
30], and Machine Learning techniques [
31], among others.
Quantum annealing, originally proposed by Kadowaki and Nishimori [
32] as a quantum-mechanical extension of classical simulated annealing, provides a theoretical framework for solving combinatorial optimization problems by exploiting quantum fluctuations. In particular, it is well-suited for solving Quadratic Unconstrained Binary Optimization (QUBO) problems, which offer a unified representation for a broad class of NP-hard problems. Since its introduction, QUBO-based modeling has attracted significant attention, leading to the development of various solvers—both quantum and classical. For instance, D-Wave Systems has built dedicated quantum annealers that solve QUBO problems natively, facilitating both theoretical exploration and proof-of-concept implementations.
However, in practice, the resolution and noise levels of current quantum annealers such as D-Wave Advantage 2.0 severely limit their performance. As noted in recent evaluations [
10], these devices often fail to find even good approximate solutions for nontrivial problem instances, making them unsuitable for many real-world applications. Consequently, classical solvers implemented on CPUs, GPUs, or FPGAs remain the dominant and more reliable choice for solving QUBO problems at scale.
This practical shift has encouraged the formulation of JSSP and its variants as QUBO problems using solver-agnostic techniques. A key benefit of this approach lies in its development efficiency: traditional metaheuristics such as simulated annealing or Tabu Search typically require the manual design and fine-tuning of algorithmic components for each problem variant, which can be time-consuming and costly. In contrast, once a general QUBO formulation framework is established, adapting it to new instances—such as modifying objective functions or introducing additional constraints—often requires only changes to the QUBO model itself.
This flexibility makes QUBO-based modeling particularly attractive for industrial-scale scheduling problems, where complex, evolving constraints and objectives are common. Moreover, this approach facilitates rapid adaptation across a family of similar JSSP instances, avoiding the need to develop custom algorithms for each case. Whether solved using quantum annealers or classical solvers, the QUBO formulation serves as a unified abstraction that shifts development efforts from algorithm design to model construction.
Several studies have demonstrated the feasibility of applying QUBO-based methods to job-shop and flexible job-shop scheduling problems. Denkena et al. [
33] formulated the classical JSSP as a binary quadratic model that captures precedence and machine-exclusivity constraints, and they solved it using conventional optimization techniques on benchmark instances. Carugno et al. [
34] investigated the use of D-Wave’s quantum annealer to solve QUBO-encoded JSSP instances, employing problem relaxation and minor embedding to fit within the hardware’s connectivity limitations. Schworm et al. [
35] proposed a QUBO formulation for the Flexible JSSP and demonstrated its effectiveness using quantum annealing on standard datasets, while their follow-up study [
36] introduced a multi-objective formulation to optimize both makespan and workload balance via hybrid quantum-classical computation. Fu et al. [
37] presented a QUBO model for the FJSSP and solved it using a coherent Ising machine (CIM), focusing solely on makespan minimization and reporting significant speedups compared to classical solvers.
While these studies confirm the general applicability of QUBO formulations to scheduling problems, they primarily target benchmark instances with simplified or standard constraints and objectives. In contrast, our work addresses real-world industrial scheduling in a heat-treatment context, involving domain-specific constraints such as thermal ramping, batch operations, and multi-furnace coordination. We introduce two objective functions directly reflecting factory needs—minimizing cost based on priority values and reducing idle time slots—and employ a scalable classical QUBO solver (QUBO++), allowing for practical deployment and easy adaptation to operational policy changes.
The remainder of this paper is organized as follows.
Section 2 describes the types of metal parts and daily order data handled by the operators, along with the operational constraints of the scheduling problem. Based on these constraints, the objective function for the scheduling problem is formulated.
Section 3 presents our QUBO formulation for the case of a single furnace. This formulation is then extended to handle multiple furnaces in
Section 4.
Section 5 reports the results of computational experiments conducted using real-world metal part data and a set of 10 daily orders. Finally,
Section 6 concludes the paper.
2. Scheduling Problem Formulation for the Heat Treatment Process of Metal Parts
The primary objective of this section is to formulate the scheduling problem for the heat treatment process of metal parts. For clarity, we first consider the simplified case in which only a single furnace is available. This formulation will later be extended to handle multiple furnaces.
To aid reader understanding, we begin by defining several key terms in the context of the heat treatment process at the Tsukimi Factory of Nagato Co., Ltd.:
Furnaces. The factory is equipped with multiple furnaces used for the heat treatment of metal parts. Time is discretized into 6-min slots, and each slot operates under a specific cooling parameter—one of these values: 0, 5, 8, 10, 15, 20, 30, 40, 50, or 60—which determines the required fan rotation speed during that slot.
Orders. Each order, placed by a customer company, corresponds to a specific type of metal part and specifies the quantity to be processed. The number of consecutive time slots required for an order is proportional to the specified quantity.
Parts. Each metal part belongs to a particular group, categorized according to its geometry, and is associated with a single cooling parameter.
Idle time slots for cooling. When switching from one cooling parameter to another between consecutive orders, a specific number of idle time slots is required, depending on the pair of cooling parameters involved. These values are summarized in
Table 1.
When two orders are processed consecutively, the number of required idle time slots between such orders depends on the characteristics of their associated parts, according to the following rules:
- Rule 1
No idle time slot is required if the two (consecutive) orders involve the same metal part.
- Rule 2
If the two parts are different, the required number of adjustment time slots is determined by
Table 1, based on the
current and
subsequent cooling parameters.
- Rule 3
Even if the adjustment time is zero, at least one idle time slot is required if the two parts are different but belong to the same group.
Experienced operators at the Tsukimi Factory of Nagato Co., Ltd. currently create heat treatment process schedules for the following day on the preceding day. They implicitly prioritize orders based on their importance and urgency while also attempting to minimize idle time. To formalize this decision-making process, we assign a priority value to each order, with higher values indicating greater urgency and/or importance. Orders with higher priority are intended to be scheduled earlier in the day. To reflect this, we define a cost function over time slots, where the cost increases when a high-priority order is scheduled at a later time. It is important to note that the cost defined here is not a real cost but an artificial objective value introduced to help derive a desirable schedule.
Based on these considerations—priority and idle time—we define the following two objective functions:
Total cost. Each time slot is associated with a cost, defined as the product of the slot number and the priority of the order assigned to that slot. The total cost is the sum of the costs across all scheduled time slots. Idle time slots are excluded from this calculation, as they are separately accounted for in the total idle time slots defined below.
Total idle time slots. The total number of idle time slots that occur between consecutive orders.
The goal is to minimize both the total cost and the total idle time slots in order to obtain a desirable schedule.
We define these objectives formally as follows. Let m be the number of orders, each identified by an integer ID from 0 to . Let () denote the number of time slots required to complete Order i, and let denote its priority value. Based on the properties of each part, we define as the number of required idle time slots between Order i and Order j ().
The m orders are assigned to m tracks, Track 0 through Track , to represent their processing order. Let denote the processing sequence, where Track t () processes Order .
Ignoring idle time slots for now, the start time
of Order
is given by
Order
then occupies time slots from
to
. Accordingly, the total cost
of the permutation
o is defined as
Next, we define the total idle time. Since the idle time between consecutive orders
and
is
, the total idle time
is given by
We use
Figure 2 to illustrate how the total cost and total idle time slots are computed. The first order
in Track 0 has priority
, and its cost is
. The next order
in Track 1 also has priority
, and its cost is
. The last order
in Track 2 has priority
, and its cost is
. Thus, the total cost of permutation
o is
. Clearly, orders with higher priorities should be assigned to earlier tracks to minimize the total cost. Additionally, the idle time slot between Orders
and
is
, and that between Orders
and
is
. Thus, the total idle time slots are
.
Our goal is to minimize both
and
. However, it may not be possible to minimize both simultaneously. Therefore, we introduce a weighting parameter
to balance the two objectives. Specifically, the overall objective function
with respect to permutation
o is defined as
For example, if
, then the objective function corresponding to the above-mentioned example is obtained as follows:
Clearly, when , the objective ignores idle time and minimizes only the total cost. Conversely, when is sufficiently large, the optimization focuses on minimizing idle time at the expense of total cost.
However, in practice, there is no solution that satisfies . Therefore, assigning excessively large values to in an attempt to aggressively minimize idle time is not meaningful. Since there is no formalized priority between the two objectives, a practical strategy is to begin with a moderate value (e.g., ). If the resulting solution exhibits an unacceptably high , the operator can incrementally increase and rerun QUBO++ to obtain a new solution with reduced idle time. This procedure can be repeated until a satisfactory trade-off is achieved. Thanks to the short solving time of QUBO++ (typically a few seconds), this tuning process is feasible in real-world applications.
Note that the other two parameters, and , do not require such adjustment. These parameters are used to enforce constraints rather than to balance objectives and can therefore be set to sufficiently large values—provided that they do not cause numerical overflows during QUBO computations.
3. The QUBO Formulation of the Scheduling Problem: Single Furnace
This section presents how the scheduling problem for a single furnace can be formulated as a QUBO problem.
Given a scheduling problem with
m orders, we define an
binary matrix
to represent a permutation
o, where
if and only if
. That is,
indicates that the
i-th order is assigned to the
t-th position in the schedule.
Figure 3 shows an example of a
matrix
representing the permutation
.
To ensure that
X represents a valid permutation, each row and each column must contain exactly one entry equal to 1—i.e., each row and column must be one-hot encoded. This constraint is captured by the following quadratic formula:
Assume that
X satisfies the one-hot encoding and represents a permutation
. In other words,
if
and
if
. Given that
, the number of time slots
required to process Order
(
) is given by
Using
, the starting time
of Order
is given by
The priority
of Order
is given by
The total cost
is then given by
Furthermore, from
, the idle time
required between consecutive orders
and
is
Thus, the idle time slots can be given as follows:
The objective function for the scheduling problem is given by
where
is a sufficiently large constant to enforce the one-hot constraint. Since
,
, and
are quadratic formulas of
, the resulting objective function
is a QUBO formula.
4. QUBO Formulation for Scheduling with Multiple Furnaces
In practical factory settings, multiple furnaces are often available. We therefore extend the single-furnace scheduling problem to accommodate a multi-furnace environment. In this scenario, each order must be assigned to one of several furnaces, and the scheduling problem involves determining both the assignment of orders to furnaces and the optimal processing sequence for each furnace.
We now present a method for formulating the scheduling problem with multiple furnaces as a QUBO problem. Suppose there are n furnaces, identified by integer IDs from 0 to . Recall that there are m real orders, identified by IDs from 0 to . To facilitate the QUBO formulation, we introduce a dummy order with ID m, resulting in a total of orders. Since we have n furnaces and m time slots per furnace, there are available tracks for scheduling. Among these, exactly m tracks must be assigned to real orders, and the remaining tracks will be filled with dummy orders. To prevent real orders from being scheduled after dummy orders, we assign the dummy order a large processing time, , where is a sufficiently large constant. This design ensures that dummy orders appear only after all real orders have been scheduled on each furnace. To represent the scheduling decisions, we introduce a three-dimensional array of binary variables with dimensions , where
if and only if Order i () is assigned to Furnace at track t;
if and only if the dummy order is assigned to Furnace at track t.
Note that both the required time slots and the priority of the dummy order can be set to zero, provided that is sufficiently large.
Since each furnace can process one order, including the dummy order, in each time slot, we include the following constraint for all furnaces
and time slots
t:
Moreover, each order, excluding the dummy order, must be assigned to one of the furnaces, and the following constraint must be satisfied for all Order
i (
).
These constraints must be satisfied for the valid assignment of orders to the time slots of furnaces. The following QUBO formula
takes a minimum value of 0 if these constraints are satisfied:
Next, we define the objective functions corresponding to total cost and total idle time slots. The total cost can be computed by summing over the individual furnaces as follows:
The total number of idle time slots is computed as
Finally, the objective function for multiple furnaces uses the same structure as the single-furnace objective (Equation (
1)).
Each order may have a specified set of furnaces by which it can be processed. If an order
i cannot be processed by furnace
, then the solution of the value of
must be 0 for all
t (
). This can be carried out by substituting such binary variables in
with 0. The QUBO++ toolkit [
17] has a replace function to perform these substitutions of binary variables with 0.
5. Experimental Results
This section presents the experimental results that demonstrate the feasibility of generating desirable heat treatment schedules using the QUBO formulations introduced in the previous sections.
We have developed a C++ implementation that generates QUBO formulations and solves them using the QUBO++ library [
17]. Our program takes as input two types of data: fixed metal part specifications and daily order data, which vary for each instance. It constructs a QUBO formulation based on Equation (
1) and then uses the Easy Solver included in the QUBO++ library to search for approximate solutions. The Easy Solver internally employs a heuristic based on the positive min search algorithm [
12], utilizing multicore processors for parallelism. All data used in the experiments are provided in the Appendix, and the QUBO++ library is publicly available. Together, these ensure that the experimental results in this paper can be reproduced without difficulty.
5.1. Metal Part Data and Daily Order Data
We use real-world data from the Tsukimi Factory, which operates two furnaces with IDs 1 and 3. The dataset includes 98 distinct metal parts, each described by the following attributes:
Part Name. A one- or two-letter string representing the name of the metal part.
Compatible Furnaces. Specifies which furnace(s) can process the part. The values can be “1” (only Furnace 1), “3” (only Furnace 3), or “1, 3” (both furnaces).
Group ID. An integer representing the group to which the part belongs. N/A indicates a unique structure for which no idle time slot is required between transitions, as there is no risk of mixing or misidentification.
Cooling Parameter. An integer representing the required fan rotation speed. The possible values are 0, 5, 8, 10, 15, 20, 30, 40, 50, or 60.
The daily order data varies from day to day and consists of the following fields:
Order ID. A sequential integer ID starting from 0.
Part Name. A one- or two-letter string identifying the metal part being ordered.
Time Slots. The number of consecutive time slots required to process the order.
Priority. An integer value indicating the operator-assigned priority of the order.
5.2. The Resulting Solution for the Daily Data with 10 Orders
We use actual daily order data along with the corresponding metal part information as a representative example.
Table 2 shows a real-world daily order dataset consisting of 10 orders. The corresponding metal part specifications for these orders are presented in
Table 3. Note that Orders 1 and 2 involve the same part, B. These datasets are merged into a single table, as shown in
Table A1 in
Appendix A.
We created the QUBO formulation based on Equation (
1) using the QUBO++ toolkit [
17], a domain-specific language (DSL) designed for constructing QUBO formulations and efficiently searching for solutions. All experiments were conducted on a Windows 11 PC running WSL 2 (Ubuntu 22.04.5 LTS). The system was equipped with an Intel Core i9-13900 processor (4 GHz) and 32 GB of RAM. The C++ program was compiled using g++ version 11.4.0 with the -O3 optimization flag.
The resulting QUBO instance comprises 160 binary variables, 160 linear terms, and 12,800 quadratic terms. We used the Easy Solver bundled with QUBO++ to solve the QUBO problem, using parameters
100,000,
, and
. A solution with
26,734 and
was obtained in just 1 s for most cases.
Table 4 presents the schedule derived from this solution.
Each row in the table corresponds to an order assigned to a track, with the following attributes: order ID, part name, priority value, time slot range, number of idle slots before the track, cooling parameter, group ID, and compatible furnaces. For instance, Track 6 of Furnace 1 is assigned Order 8, which processes Part H with priority 1, occupies 9 time slots from slot 114 to 122, has 1 idle slot before it, a cooling parameter of 5, group N/A, and is compatible with Furnace 1.
The orders are allocated across the two furnaces such that the workload is balanced. Moreover, higher-priority orders tend to be scheduled earlier. The total number of idle slots is 3, indicating that the obtained solution is of sufficiently high quality for practical use.
A solution with fewer idle time slots can be obtained by increasing the value of
, which gives higher priority to minimizing
.
Table 5 shows the solution computed with
. This solution contains only 1 idle time slot, indicating an improvement in idle-time efficiency. However, the total cost increases, and the schedule no longer respects the priority order of the tasks. For example, Track 2 is assigned Order 8 with priority 1, whereas in the previous solution with
, it was assigned to Track 6. This trade-off highlights the importance of balancing cost and idle time according to practical requirements. Operators can choose between such solutions, depending on their preferences or unmodeled constraints.
5.3. The Resulting Solutions for 10 Real Daily Orders
We executed our C++ program on 10 real daily orders using the parameter setting
, with the computation time limited to 10 s for each instance.
Table 6 summarizes the characteristics of the resulting QUBO formulations and their corresponding solutions. The number of orders ranges from 7 to 23, with the number of binary variables in the QUBO ranging from 80 to 644. The number of quadratic terms ranges from 2156 to 199,962. The table also reports the values of
and
for each instance.
While the objective values
and
provide a numerical assessment of solution quality, they do not capture the full picture. To better understand the scheduling behavior, we examine in detail the solution for the instance with 23 orders.
Table 7 presents the resulting schedule obtained with
. In this solution, 13 orders are assigned to Furnace 1 and 10 orders to Furnace 3. Although higher-priority orders are generally assigned to earlier tracks in both furnaces, the solution contains a total of 9 idle time slots.
Table 8 reports the time to solution (TTS) in seconds for each day using the Easy Solver of the QUBO++ toolkit, evaluated over 100 trials. Each TTS represents the time required to obtain a solution whose objective value matches the best value
. Since the solver is based on randomized heuristics, the time to reach the target value varies across trials. In most cases (Days 0–6 and 8–9), the average TTS remains below one second. For Days 1 and 9, even the maximum time is well under one second, indicating highly stable performance.
The only exception is Day 7, which showed a relatively large variance and longer average TTS (1.5510 s) when targeting the best-known value of 39,798. However, if we slightly relax the objective value to 39,808—corresponding to just one additional idle time slot—the average TTS drops significantly to 0.1419 s, with a minimum of 0.0185 and a maximum of 1.0566 s. This demonstrates that while exact optimal solutions may require a longer time in rare cases, near-optimal solutions of comparable quality can still be obtained rapidly, which is valuable for practical use.
If operators prioritize minimizing idle time over strictly following the priority order, they can increase the parameter
to assign greater weight to the
component. To explore this trade-off, we re-executed the solver with
, and the resulting schedule is shown in
Table 9. In this solution, the total number of idle time slots is reduced to 4, but at the expense of a higher cost. For instance, Order 2, originally assigned to Track 8 in the previous solution, is moved up to Track 1, violating the priority order and contributing to the increased cost.
Operators can experiment with different values of to generate multiple schedules and choose the most appropriate one based on their operational requirements. Additionally, by adjusting the priority values of specific orders, they can explore alternative scheduling outcomes and select the solution that best suits their preferences or hidden constraints.
5.4. Multiple Top Solutions for the Flexibility
The QUBO problem generated by QUBO++ may admit multiple top solutions. From a practical perspective, obtaining the single optimal solution is not necessarily essential; near-optimal solutions that are sufficiently close to the optimum are often acceptable in real-world applications. Moreover, certain implicit preferences or priorities may not be explicitly captured in the formal scheduling formulation. Therefore, it is reasonable to provide operators with several high-quality candidate solutions, from which they may select one based on domain-specific knowledge or latent constraints. The Easy Solver module included in QUBO++ supports the enumeration of multiple top-ranked solutions.
Table 10 presents the 20 best solutions identified for a scheduling instance involving 10 orders (as listed in
Table 2). For each solution, the objective values
and
are shown, along with the sequence of assigned orders and their respective priority values on each furnace track. For instance, the solution with
and
is the best among the candidates. Two additional solutions achieve the same cost value (
) but incur a slightly higher idle time (
). One of these is obtained by swapping G(1) and H(1) on Furnace 1, while the other results from swapping AM(1) and C(1) on Furnace 3. Although these are suboptimal in terms of idle time, they may still be considered acceptable alternatives depending on operational preferences.
Providing multiple candidate solutions is beneficial, as it mitigates the need for manual adjustments in cases where the optimal solution fails to meet certain unmodeled requirements. The current implementation thus enhances the usability of the system by offering flexibility at the decision-making stage.
6. Conclusions
In this study, we propose a QUBO-based formulation for scheduling in the heat treatment process of metal parts, incorporating both order priorities and idle times between orders. We developed a dedicated C++ implementation and employed our publicly available QUBO toolkit, QUBO++, to efficiently construct and solve the resulting QUBO instances. QUBO++ includes the Easy Solver tool, which utilizes a lightweight metaheuristic based on the positive min search algorithm and is optimized for multicore execution.
We conducted experiments using 10 days of real production data, which include fixed product specifications and varying daily order sets. The results demonstrated that our approach can solve practical-sized instances in a matter of seconds per run, enabling the rapid generation of high-quality schedules. Additionally, the weighting parameter allows operators to flexibly explore trade-offs between priority-based cost and idle time minimization, supporting context-aware decision-making.
Importantly, the solver can return not only the best solution but also a set of top-ranked near-optimal solutions, as specified by the user. This feature enables factory operators to evaluate multiple feasible schedules and choose the one most appropriate for their operational constraints and preferences. Operators especially valued this flexibility, noting that it aligns with real-world scheduling practices that often involve balancing competing priorities.
Although manually generated benchmark schedules were not available for the datasets used in our experiments, experienced factory operators reviewed the generated schedules. They confirmed that the proposed solutions met practical constraints and expectations, providing informal yet meaningful validation of our approach. Overall, our findings underscore the practical utility of QUBO-based modeling and the QUBO++ framework as a flexible and scalable tool for real-world industrial scheduling.
As a future direction, the integration of more advanced metaheuristic techniques—such as simulated annealing or evolutionary algorithms—into QUBO++ may further improve scalability, robustness, and solution diversity for large-scale optimization tasks.