Batching problems in three-field notation
Lax434175.BatchProblems · concepts/Lax434175/BatchProblems.lean · lax-434175
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Theorem
The family of batching problems in a mode has the constraint fields capacity, number of jobs, processing times, release dates, deadlines and precedence constraints, and the completion-time objectives.
A problem whose contains s-batch or p-batch is one specification of the family of serial or of parallel batching. For example and are the specifications below. The concept on one family for batching joins the two modes into a single family with a batching field.
Theorem. In both modes, a specification that reduces to another describes a problem whose decision version reduces to that of the other; if it is field by field a special case, it describes a special case.
Concept map
Evidence
Lean source view on GitHub
| 1 | import Lax434175.Assembly |
| 2 | import Lax434175.Counts |
| 3 | import Lax434175.ReleaseDates |
| 4 | import Lax434175.Deadlines |
| 5 | import Lax434175.Precedence |
| 6 | import Lax434175.Thresholds |
| 7 | import Lax434175.Batching |
| 8 | |
| 9 | /-! |
| 10 | --- |
| 11 | title: Batching problems in three-field notation |
| 12 | type: theorem |
| 13 | --- |
| 14 | The family of batching problems in a mode has the constraint fields |
| 15 | capacity, number of jobs, processing times, release dates, deadlines and |
| 16 | precedence constraints, and the completion-time objectives. |
| 17 | |
| 18 | A problem whose contains s-batch or |
| 19 | p-batch is one specification of the family of serial or of parallel |
| 20 | batching. For example and |
| 21 | are the specifications below. |
| 22 | The concept on one family for batching joins the two modes into a single |
| 23 | family with a batching field. |
| 24 | |
| 25 | **Theorem.** In both modes, a specification that reduces to another |
| 26 | describes a problem whose decision version reduces to that of the other; if |
| 27 | it is field by field a special case, it describes a special case. |
| 28 | -/ |
| 29 | |
| 30 | namespace Lax434175.BatchProblems |
| 31 | open Lax434175.Problems Lax434175.Kernels Lax434175.Modules Lax434175.Assembly |
| 32 | open Lax434175 |
| 33 | |
| 34 | /-- The constraint fields of the family. -/ |
| 35 | inductive FieldName |
| 36 | | capacity |
| 37 | | jobCount |
| 38 | | processingTimes |
| 39 | | releaseDates |
| 40 | | deadlines |
| 41 | | precedence |
| 42 | deriving DecidableEq |
| 43 | |
| 44 | instance : Fintype FieldName where |
| 45 | elems := {.capacity, .jobCount, .processingTimes, .releaseDates, .deadlines, .precedence} |
| 46 | complete x := by cases x <;> decide |
| 47 | |
| 48 | /-- The batching problems of a mode. -/ |
| 49 | abbrev family (mode : Batching.Mode) : Family (Batching.kernel mode) := |
| 50 | Thresholds.family FieldName fun |
| 51 | | .capacity => Batching.capacity mode |
| 52 | | .jobCount => Counts.module _ (Batching.kernel mode).jobs |
| 53 | | .processingTimes => Batching.processingTimes mode |
| 54 | | .releaseDates => ReleaseDates.module _ |
| 55 | | .deadlines => Deadlines.module _ |
| 56 | | .precedence => Precedence.oneMachine _ |
| 57 | |
| 58 | /-- The specification `1 | β | γ` of a batching problem. -/ |
| 59 | def spec (mode : Batching.Mode) (capacity : Batching.Capacity) |
| 60 | (jobCount : Counts.Bound := .any) |
| 61 | (processingTimes : Batching.ProcessingTimes := .arbitrary) |
| 62 | (release : ReleaseDates.Value := .none) |
| 63 | (deadline : Deadlines.Value := .none) |
| 64 | (precedence : Precedence.Value := .none) |
| 65 | (objective : Objectives.Value) : Spec (family mode) where |
| 66 | module |
| 67 | | .capacity => capacity |
| 68 | | .jobCount => jobCount |
| 69 | | .processingTimes => processingTimes |
| 70 | | .releaseDates => release |
| 71 | | .deadlines => deadline |
| 72 | | .precedence => precedence |
| 73 | objective := objective |
| 74 | |
| 75 | /-- `1 | p-batch(∞) | Σw_jC_j` -/ |
| 76 | def parallel_unbounded_sumWC : Spec (family .parallel) := |
| 77 | spec _ (capacity := .unbounded) (objective := .sumWC) |
| 78 | |
| 79 | /-- `1 | p-batch, r_j | Σw_jT_j` -/ |
| 80 | def parallel_bounded_release_sumWT : Spec (family .parallel) := |
| 81 | spec _ (capacity := .bounded) (release := .releaseDates) (objective := .sumWT) |
| 82 | |
| 83 | axiom family_sound (mode : Batching.Mode) : (family mode).Sound |
| 84 | |
| 85 | axiom specialCase_of_le (mode : Batching.Mode) {s t : Spec (family mode)} : |
| 86 | s.le t → SpecialCase (problem (family mode) s) (problem (family mode) t) |
| 87 | |
| 88 | axiom reducible_of_reduces (mode : Batching.Mode) {s t : Spec (family mode)} : |
| 89 | Thresholds.Reduces s t → Reducible (problem (family mode) s) (problem (family mode) t) |
| 90 | |
| 91 | end Lax434175.BatchProblems |
| 92 |
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments