Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 3.24 KB

File metadata and controls

49 lines (32 loc) · 3.24 KB

🧮 Математическая модель оптимизации (Симплекс-метод)

1. Постановка задачи

В горнодобывающем карьере функционирует парк из $M$ экскаваторов (забоев) и $N$ самосвалов. Требуется распределить самосвалы по экскаваторам и пунктам разгрузки так, чтобы минимизировать суммарные издержки (или максимизировать объем перевозок) при выполнении производственного плана.


2. Переменные решения

Пусть $x_{ij}$ — количество рейсов (или число самосвалов типа $j$, прикрепленных к экскаватору $i$).


3. Целевая функция (Objective Function)

Минимизация суммарных затрат на транспортировку и простои:

$$\min Z = \sum_{i=1}^{M} \sum_{j=1}^{N} C_{ij} \cdot x_{ij} + \sum_{i=1}^{M} C_{\text{idle}, i} \cdot t_{\text{idle}, i}$$

Где:

  • $C_{ij}$ — себестоимость одного рейса от экскаватора $i$ самосвалом $j$ (зависит от расстояния $L_{ij}$, расхода топлива $q_j$ и стоимости ГСМ).
  • $C_{\text{idle}, i}$ — штраф за час простоя экскаватора $i$ в ожидании самосвала.
  • $t_{\text{idle}, i}$ — расчетное время простоя.

4. Система ограничений (Constraints)

  1. Ограничение по производительности экскаватора: $$\sum_{j=1}^{N} q_j \cdot x_{ij} \le Q_{\max, i} \quad \forall i \in {1, \dots, M}$$ (Суммарный объем погрузки не превышает техническую производительность экскаватора $i$ за смену).

  2. Ограничение по доступному парку самосвалов: $$\sum_{i=1}^{M} x_{ij} \le K_j \quad \forall j \in {1, \dots, N}$$ (Количество работающих самосвалов не превышает число исправных машин на линии).

  3. Ограничение по вместимости и пропускной способности пунктов разгрузки: $$\sum_{i \in S_k} \sum_{j=1}^{N} x_{ij} \le P_{\max, k} \quad \forall k \in \text{UnloadPoints}$$

  4. Условие неотрицательности: $$x_{ij} \ge 0$$


5. Программная реализация (Equation.java, Solution.java)

Реализовано с использованием библиотеки Apache Commons Math 3:

  • Класс LinearObjectiveFunction задает коэффициенты затрат.
  • LinearConstraintSet формирует матрицу ограничений.
  • Решатель SimplexSolver.optimize() находит глобальный оптимум $X^*$, который передается в TripScheduler для выдачи сменно-суточных путевых листов.