Source code for qlauncher.problems.optimization.jssp_utils.pyqubo_scheduler

 1from pyqubo import Array, Binary, Model
 2
 3from .scheduler import JobShopScheduler, Task
 4
 5
[docs] 6class PyQuboScheduler(JobShopScheduler): 7 array: Array 8 qubo: Binary 9 10 def __init__(self, job_dict: dict, max_time: int | None = None): 11 super().__init__(job_dict, max_time) 12 self.array = Array.create('x', self.n, vartype='BINARY') 13 self.qubo: Binary = 0 14 15 def _get_variable(self, task: Task, time: int) -> Binary: 16 return self.array[self.assignment_index[(task, time)]] 17 18 def _add_expression(self, var1: Binary, var2: Binary, lagrange_factor: float) -> None: 19 self.qubo += lagrange_factor * var1 * var2 20 21 def _add_expression_one_start(self, variables: list[Binary], lagrange_factor: float) -> None: 22 self.qubo += lagrange_factor * ((1 - sum(variables)) * (1 - sum(variables))) 23 24 def _add_variable(self, var: Binary, bias: float) -> None: 25 self.qubo += var * bias 26 27 def _get_final(self) -> Model: 28 return self.qubo.compile()