The Scheduling Zoo, serial batching problems
Lax434175.ZooSerialBatching · concepts/Lax434175/ZooSerialBatching.lean · lax-434175
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Theorem
The 23 serial batching problems of The Scheduling Zoo, each as a specification, and the 16 relations of the zoo among them that are derived here.
A relation of the zoo states that one problem generalizes another. The 16 relations of the first list hold field by field, so that the more special problem is a special case of the more general one. The 0 relations of the second list need a threshold step, so that the decision version of the more special problem reduces to that of the more general one. Each pair lists the more general problem first.
Theorem. Every pair of the first list is a special case, and every pair of the second list is a reduction of decision versions.
Concept map
Evidence
Lean source view on GitHub
| 1 | import Lax434175.BatchFamily |
| 2 | |
| 3 | /-! |
| 4 | --- |
| 5 | title: The Scheduling Zoo, serial batching problems |
| 6 | type: theorem |
| 7 | --- |
| 8 | The 23 serial batching problems of The Scheduling Zoo, each as a |
| 9 | specification, and the 16 relations of the zoo among them that are |
| 10 | derived here. |
| 11 | |
| 12 | A relation of the zoo states that one problem generalizes another. The |
| 13 | 16 relations of the first list hold field by field, so that the more |
| 14 | special problem is a special case of the more general one. The |
| 15 | 0 relations of the second list need a threshold step, so that the |
| 16 | decision version of the more special problem reduces to that of the more |
| 17 | general one. |
| 18 | Each pair lists the more general problem first. |
| 19 | |
| 20 | **Theorem.** Every pair of the first list is a special case, and every pair |
| 21 | of the second list is a reduction of decision versions. |
| 22 | -/ |
| 23 | |
| 24 | namespace Lax434175.ZooSerialBatching |
| 25 | open Lax434175 Lax434175.Problems Lax434175.Assembly |
| 26 | |
| 27 | /-- The family of the problems listed here. -/ |
| 28 | abbrev F := BatchFamily.family |
| 29 | |
| 30 | /-- `1|prec;pj=p;s-batch|ΣCj` -/ |
| 31 | def p0 : Spec F := |
| 32 | BatchFamily.spec .serial (processingTimes := .equal) (capacity := .unbounded) |
| 33 | (precedence := ⟨.prec, .zero⟩) (objective := .sumC) |
| 34 | |
| 35 | /-- `1|pj=p;s-batch|ΣwjCj` -/ |
| 36 | def p1 : Spec F := |
| 37 | BatchFamily.spec .serial (processingTimes := .equal) (capacity := .unbounded) |
| 38 | (objective := .sumWC) |
| 39 | |
| 40 | /-- `1|chains;s-batch|ΣCj` -/ |
| 41 | def p2 : Spec F := |
| 42 | BatchFamily.spec .serial (capacity := .unbounded) (precedence := ⟨.chains, .zero⟩) |
| 43 | (objective := .sumC) |
| 44 | |
| 45 | /-- `1|chains;pj=1;s-batch|ΣwjCj` -/ |
| 46 | def p3 : Spec F := |
| 47 | BatchFamily.spec .serial (processingTimes := .unit) (capacity := .unbounded) |
| 48 | (precedence := ⟨.chains, .zero⟩) (objective := .sumWC) |
| 49 | |
| 50 | /-- `1|s-batch|ΣwjCj` -/ |
| 51 | def p4 : Spec F := |
| 52 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumWC) |
| 53 | |
| 54 | /-- `1|pj=p;s-batch;rj|ΣwjCj` -/ |
| 55 | def p5 : Spec F := |
| 56 | BatchFamily.spec .serial (processingTimes := .equal) (release := .releaseDates) |
| 57 | (capacity := .unbounded) (objective := .sumWC) |
| 58 | |
| 59 | /-- `1|pj=p;s-batch;rj|ΣwjUj` -/ |
| 60 | def p6 : Spec F := |
| 61 | BatchFamily.spec .serial (processingTimes := .equal) (release := .releaseDates) |
| 62 | (capacity := .unbounded) (objective := .sumWU) |
| 63 | |
| 64 | /-- `1|pj=p;s-batch;rj|ΣTj` -/ |
| 65 | def p7 : Spec F := |
| 66 | BatchFamily.spec .serial (processingTimes := .equal) (release := .releaseDates) |
| 67 | (capacity := .unbounded) (objective := .sumT) |
| 68 | |
| 69 | /-- `1|s-batch|ΣTj` -/ |
| 70 | def p8 : Spec F := |
| 71 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumT) |
| 72 | |
| 73 | /-- `1|s-batch|ΣUj` -/ |
| 74 | def p9 : Spec F := |
| 75 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumU) |
| 76 | |
| 77 | /-- `1|s-batch|ΣwjUj` -/ |
| 78 | def p10 : Spec F := |
| 79 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumWU) |
| 80 | |
| 81 | /-- `1|s-batch|ΣCj` -/ |
| 82 | def p11 : Spec F := |
| 83 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumC) |
| 84 | |
| 85 | /-- `1|pj=p;s-batch|ΣwjUj` -/ |
| 86 | def p12 : Spec F := |
| 87 | BatchFamily.spec .serial (processingTimes := .equal) (capacity := .unbounded) |
| 88 | (objective := .sumWU) |
| 89 | |
| 90 | /-- `1|prec;s-batch|ΣCj` -/ |
| 91 | def p13 : Spec F := |
| 92 | BatchFamily.spec .serial (capacity := .unbounded) (precedence := ⟨.prec, .zero⟩) |
| 93 | (objective := .sumC) |
| 94 | |
| 95 | /-- `1|chains;pj=1;s-batch|ΣUj` -/ |
| 96 | def p14 : Spec F := |
| 97 | BatchFamily.spec .serial (processingTimes := .unit) (capacity := .unbounded) |
| 98 | (precedence := ⟨.chains, .zero⟩) (objective := .sumU) |
| 99 | |
| 100 | /-- `1|s-batch;rj|Lmax` -/ |
| 101 | def p15 : Spec F := |
| 102 | BatchFamily.spec .serial (release := .releaseDates) (capacity := .unbounded) |
| 103 | (objective := .lmax) |
| 104 | |
| 105 | /-- `1|s-batch;rj|ΣCj` -/ |
| 106 | def p16 : Spec F := |
| 107 | BatchFamily.spec .serial (release := .releaseDates) (capacity := .unbounded) |
| 108 | (objective := .sumC) |
| 109 | |
| 110 | /-- `1|chains;pj=1;s-batch|ΣTj` -/ |
| 111 | def p17 : Spec F := |
| 112 | BatchFamily.spec .serial (processingTimes := .unit) (capacity := .unbounded) |
| 113 | (precedence := ⟨.chains, .zero⟩) (objective := .sumT) |
| 114 | |
| 115 | /-- `1|prec;s-batch|Lmax` -/ |
| 116 | def p18 : Spec F := |
| 117 | BatchFamily.spec .serial (capacity := .unbounded) (precedence := ⟨.prec, .zero⟩) |
| 118 | (objective := .lmax) |
| 119 | |
| 120 | /-- `1|s-batch(∞);rj|ΣwjUj` -/ |
| 121 | def p19 : Spec F := |
| 122 | BatchFamily.spec .serial (release := .releaseDates) (capacity := .unbounded) |
| 123 | (objective := .sumWU) |
| 124 | |
| 125 | /-- `1|s-batch(∞)|ΣwjUj` -/ |
| 126 | def p20 : Spec F := |
| 127 | BatchFamily.spec .serial (capacity := .unbounded) (objective := .sumWU) |
| 128 | |
| 129 | /-- `1|s-batch(b)|ΣwjUj` -/ |
| 130 | def p21 : Spec F := |
| 131 | BatchFamily.spec .serial (capacity := .bounded) (objective := .sumWU) |
| 132 | |
| 133 | /-- `1|s-batch(b);rj|ΣwjUj` -/ |
| 134 | def p22 : Spec F := |
| 135 | BatchFamily.spec .serial (release := .releaseDates) (capacity := .bounded) (objective := .sumWU) |
| 136 | |
| 137 | /-- The problems with their names in three-field notation. -/ |
| 138 | def problems : List (String × Spec F) := [ |
| 139 | ("1|prec;pj=p;s-batch|ΣCj", p0), |
| 140 | ("1|pj=p;s-batch|ΣwjCj", p1), |
| 141 | ("1|chains;s-batch|ΣCj", p2), |
| 142 | ("1|chains;pj=1;s-batch|ΣwjCj", p3), |
| 143 | ("1|s-batch|ΣwjCj", p4), |
| 144 | ("1|pj=p;s-batch;rj|ΣwjCj", p5), |
| 145 | ("1|pj=p;s-batch;rj|ΣwjUj", p6), |
| 146 | ("1|pj=p;s-batch;rj|ΣTj", p7), |
| 147 | ("1|s-batch|ΣTj", p8), |
| 148 | ("1|s-batch|ΣUj", p9), |
| 149 | ("1|s-batch|ΣwjUj", p10), |
| 150 | ("1|s-batch|ΣCj", p11), |
| 151 | ("1|pj=p;s-batch|ΣwjUj", p12), |
| 152 | ("1|prec;s-batch|ΣCj", p13), |
| 153 | ("1|chains;pj=1;s-batch|ΣUj", p14), |
| 154 | ("1|s-batch;rj|Lmax", p15), |
| 155 | ("1|s-batch;rj|ΣCj", p16), |
| 156 | ("1|chains;pj=1;s-batch|ΣTj", p17), |
| 157 | ("1|prec;s-batch|Lmax", p18), |
| 158 | ("1|s-batch(∞);rj|ΣwjUj", p19), |
| 159 | ("1|s-batch(∞)|ΣwjUj", p20), |
| 160 | ("1|s-batch(b)|ΣwjUj", p21), |
| 161 | ("1|s-batch(b);rj|ΣwjUj", p22)] |
| 162 | |
| 163 | /-- The relations that hold field by field: general problem, special problem. -/ |
| 164 | def specialCases : List (Spec F × Spec F) := [ |
| 165 | (p13, p0), (p4, p1), (p5, p1), (p13, p2), (p10, p9), (p2, p11), (p4, p11), (p8, p11), |
| 166 | (p16, p11), (p6, p12), (p10, p12), (p22, p19), (p10, p20), (p19, p20), (p21, p20), (p22, p21)] |
| 167 | |
| 168 | /-- The relations that need a threshold step: general problem, special problem. -/ |
| 169 | def thresholdReductions : List (Spec F × Spec F) := [ |
| 170 | ] |
| 171 | |
| 172 | axiom specialCases_hold : ∀ e ∈ specialCases, |
| 173 | SpecialCase (problem F e.2) (problem F e.1) |
| 174 | |
| 175 | axiom thresholdReductions_hold : ∀ e ∈ thresholdReductions, |
| 176 | Reducible (problem F e.2) (problem F e.1) |
| 177 | |
| 178 | end Lax434175.ZooSerialBatching |
| 179 |
Builds on
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments