Клас SolverSALBP
- class salbpone.solver.SolverSALBP(operations_costs, precedence_graph, cycle_time, verbose=False)[source]
Bases:
objectВирішувач SALBP-1.
Забезпечує перетворення умови, формування обмежень, вирішення задачі. Для вирішення задачі лінійного програмування виконується код, який генерує змінні, що підлягають оптимізації та цільову функцію, що підлягає мінімізації:
# Ініціалізація задачі self.problem = pulp.LpProblem("Binary_Linear_Programming", pulp.LpMinimize) # Змінні x = [[pulp.LpVariable(f"x_{i + 1}_{j + 1}", cat="Binary") for j in range(self.n)] for i in range(self.n)] y = [pulp.LpVariable(f"y_{j + 1}", cat="Binary") for j in range(self.n)] # Цільова функція self.problem += eval(self.adjust_indices(self.objective_function)) # Обмеження for constraint in self.constraints: self.problem += eval(self.adjust_indices(constraint)) # Запуск оптимізації self.problem.solve()
За результатами роботи може бути:
“Знайдено оптимальне рішення” (з відображенням матриці призначення та навантаження станцій)
повідомлення “Задачу не вирішено” (з описом причин помилки)
“Рішення не існує”
“Лише рішення поза обмеженнями!” (з описом похибки та критеріїв, які не вдалось досягнути)
“Задача не формалізована, перевірте умову” (в разі порушення формулювання задачі, є непередбаченої помилкою)
- Parameters:
operations_costs (OperationsCosts) – Тривалість операцій
precedence_graph (GraphDict) – Граф залежностей операцій
cycle_time (TimeUnit) – Тривалість виробничого циклу
verbose (bool) – Режим деталізованого логування
Передбачені методи
adjust_indices(expression)Допоміжна статична функція.
generate_objective_function(m_min, m_max)Допоміжна статична функція.
Атрибути класу
Масив найранішніх станцій (для кожної операції)
Масив найпізніших станцій (для кожної операції)
Пари залежностей (перевіряєма операція та операція, яка має передувати)
Множина операцій, яка залежить від перевіряємої (по всьому графу)
Множина операцій, яка має передувати перевіряємій (по всьому графу)
Список з виразами обмежень (рівності та нерівності)
Теоретична максимальна кількість станцій, яка може бути у гіршому випадку
Теоретична мінімальна кількість станцій, яка забезпечить виконання задачі
- property E: Dict[int, int]
Масив найранішніх станцій (для кожної операції)
- property L: Dict[int, int]
Масив найпізніших станцій (для кожної операції)
- property P: Set[Tuple[int, int]]
Пари залежностей (перевіряєма операція та операція, яка має передувати)
- property PT: Dict[int, Set[int]]
Множина операцій, яка залежить від перевіряємої (по всьому графу)
- property ST: Dict[int, Set[int]]
Множина операцій, яка має передувати перевіряємій (по всьому графу)
- static adjust_indices(expression)[source]
Допоміжна статична функція. Отримує рядок, який описує обмеження чи функцію, які містять індекси змінних. Зменшує індекс на 1, щоб досягти перетворення з людського відображення індексів на індекси списків Python. :param expression: рядок з формулюванням обмеження чи функції :return: рядок з формулюванням обмеження (чи функції) зі зменшеними індексами змінних
- property constraints: List[str]
Список з виразами обмежень (рівності та нерівності)
- static generate_objective_function(m_min, m_max)[source]
Допоміжна статична функція. Генерує цільову функцію для задачі балансування збиральної лінії.
- Parameters:
m_min (int) – Мінімальна (теоретична) кількість робочих станцій
m_max (int) – Максимальна кількість робочих станцій (гірший випадок)
- Returns:
Рядок, що представляє цільову функцію
- Return type:
str
- property m_max: int
Теоретична максимальна кількість станцій, яка може бути у гіршому випадку
- property m_min: int
Теоретична мінімальна кількість станцій, яка забезпечить виконання задачі