Theorem 2 — if , Johnson's rule on , gives an optimal three-stage schedule
ProvedJohnsonFlowShop.ThreeStage.johnson_three_stage_optimalLet be the processing times of items on machines 1, 2, 3, and suppose every is at least every (). Then
- there is an ordering of the items consistent with all definite preferences of Johnson's relation (IV): item precedes item whenever
- for every such ordering , the as-soon-as-possible three-machine schedule of is feasible and its total elapsed time is at most that of every feasible three-machine schedule:
Items that are indifferent (equality in the rule) may be placed in either order, provided the ordering is consistent with the definite inequalities. The rule is Johnson's two-machine rule (Theorem 1) applied to the times and .
Formalization Note The hypothesis is read globally, for all , as in the section heading "MIN MAX ". Under the pointwise reading the conclusion is false (, , : the consistent ordering takes 47, the optimum is 46). Optimality is against all feasible schedules, whose machine orders may differ, not only against permutation schedules. Part 1 makes part 2 non-vacuous.
import Mathlib import Definitions.Def_JohnsonFlowShop_ThreeStage_IsFeasible import Definitions.Def_JohnsonFlowShop_Shared_makespan import Definitions.Def_JohnsonFlowShop_ThreeStage_asapSchedule import Definitions.Def_JohnsonFlowShop_ThreeStage_JohnsonOrdered
namespace JohnsonFlowShop.ThreeStage
/-- Theorem 2 (Johnson 1954, p. 67). If every `A_i` is at least every `B_j`
(and all processing times are positive), then (i) there is an order `σ` consistent with all
definite preferences of relation (IV), and (ii) for every such order the as-soon-as-possible
three-machine schedule of `σ` is feasible and its total elapsed time is at most that of every
feasible three-machine schedule. -/
theorem johnson_three_stage_optimal {n : ℕ} (A B C : Fin n → ℝ)
(hA : ∀ i, 0 < A i) (hB : ∀ i, 0 < B i) (hC : ∀ i, 0 < C i)
(hAB : ∀ i j, B j ≤ A i) :
(∃ σ : Equiv.Perm (Fin n), JohnsonOrdered A B C σ) ∧
∀ σ : Equiv.Perm (Fin n), JohnsonOrdered A B C σ →
IsFeasible A B C (asapStart1 A B C σ) (asapStart2 A B C σ) (asapStart3 A B C σ) ∧
∀ s₁ s₂ s₃ : Fin n → ℝ, IsFeasible A B C s₁ s₂ s₃ →
Shared.makespan C (asapStart3 A B C σ) ≤ Shared.makespan C s₃ := by sorry
end JohnsonFlowShop.ThreeStage
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.