Commit 772d001
* Add plan for #510: [Model] JobShopScheduling
* Implement #510: [Model] JobShopScheduling
* chore: remove plan file after implementation
* fix: adapt JobShopScheduling to Value trait (Metric→Value rename)
- Replace `type Metric = bool` with `type Value = Or` and return `Or(...)` from evaluate
- Remove obsolete `SatisfactionProblem` import and `sat` keyword in declare_variants!
- Update tests to use `Or(true)`/`Or(false)` assertions and `find_witness`
- Fix CLI help text test to include JobShopScheduling in num-processors list
- Remove incorrect test for ExpectedRetrievalCost latency_bound requirement
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: convert JobShopScheduling from satisfaction to optimization
- Change Value from Or to Min<u64> (minimize makespan)
- Remove deadline field — optimization finds the minimum makespan directly
- Update evaluate() to return Min(Some(makespan)) or Min(None)
- Make schedule_from_config() public for test access
- Add CLI validation for consecutive-processor constraint
- Add test for consecutive-processor rejection
- Update paper definition and figure (remove deadline references)
- Update canonical example optimal_value from true to 19
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* simplify: eliminate double flatten_tasks() and redundant resolve_alias
- Refactor evaluate() to call flatten_tasks() once, reuse for both
schedule_from_config_inner() and inline makespan computation
- Remove redundant manual resolve_alias entry for JobShopScheduling
(registry fallback already handles case-insensitive lookup)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: extract shared Lehmer-code decode utility across 7 models
Extract `decode_lehmer()` and `lehmer_dims()` into `models::misc` and
replace duplicated Lehmer-code decode logic in all 7 scheduling models:
- FlowShopScheduling
- JobShopScheduling
- MinimumTardinessSequencing
- SequencingToMinimizeMaximumCumulativeCost
- SequencingToMinimizeWeightedCompletionTime
- SequencingToMinimizeWeightedTardiness
- SequencingWithReleaseTimesAndDeadlines
Net: +46 / -109 lines.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: derive paper Gantt chart from examples.json, remove hardcoded data
Replace hardcoded blocks/makespan in the JobShopScheduling paper entry
with Typst computation that decodes the Lehmer config, runs topo-sort
longest-path scheduling, and builds Gantt blocks from examples.json.
Also derive job descriptions and machine count from the data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Xiwei Pan <xiwei.pan@connect.hkust-gz.edu.cn>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 704ed6a commit 772d001
16 files changed
Lines changed: 802 additions & 115 deletions
File tree
- docs/paper
- problemreductions-cli/src
- commands
- src
- models
- misc
- unit_tests
- models/misc
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
159 | 159 | | |
160 | 160 | | |
161 | 161 | | |
| 162 | + | |
162 | 163 | | |
163 | 164 | | |
164 | 165 | | |
| |||
5122 | 5123 | | |
5123 | 5124 | | |
5124 | 5125 | | |
| 5126 | + | |
| 5127 | + | |
| 5128 | + | |
| 5129 | + | |
| 5130 | + | |
| 5131 | + | |
| 5132 | + | |
| 5133 | + | |
| 5134 | + | |
| 5135 | + | |
| 5136 | + | |
| 5137 | + | |
| 5138 | + | |
| 5139 | + | |
| 5140 | + | |
| 5141 | + | |
| 5142 | + | |
| 5143 | + | |
| 5144 | + | |
| 5145 | + | |
| 5146 | + | |
| 5147 | + | |
| 5148 | + | |
| 5149 | + | |
| 5150 | + | |
| 5151 | + | |
| 5152 | + | |
| 5153 | + | |
| 5154 | + | |
| 5155 | + | |
| 5156 | + | |
| 5157 | + | |
| 5158 | + | |
| 5159 | + | |
| 5160 | + | |
| 5161 | + | |
| 5162 | + | |
| 5163 | + | |
| 5164 | + | |
| 5165 | + | |
| 5166 | + | |
| 5167 | + | |
| 5168 | + | |
| 5169 | + | |
| 5170 | + | |
| 5171 | + | |
| 5172 | + | |
| 5173 | + | |
| 5174 | + | |
| 5175 | + | |
| 5176 | + | |
| 5177 | + | |
| 5178 | + | |
| 5179 | + | |
| 5180 | + | |
| 5181 | + | |
| 5182 | + | |
| 5183 | + | |
| 5184 | + | |
| 5185 | + | |
| 5186 | + | |
| 5187 | + | |
| 5188 | + | |
| 5189 | + | |
| 5190 | + | |
| 5191 | + | |
| 5192 | + | |
| 5193 | + | |
| 5194 | + | |
| 5195 | + | |
| 5196 | + | |
| 5197 | + | |
| 5198 | + | |
| 5199 | + | |
| 5200 | + | |
| 5201 | + | |
| 5202 | + | |
| 5203 | + | |
| 5204 | + | |
| 5205 | + | |
| 5206 | + | |
| 5207 | + | |
| 5208 | + | |
| 5209 | + | |
| 5210 | + | |
| 5211 | + | |
| 5212 | + | |
| 5213 | + | |
| 5214 | + | |
| 5215 | + | |
| 5216 | + | |
| 5217 | + | |
| 5218 | + | |
| 5219 | + | |
| 5220 | + | |
| 5221 | + | |
| 5222 | + | |
| 5223 | + | |
| 5224 | + | |
| 5225 | + | |
| 5226 | + | |
| 5227 | + | |
| 5228 | + | |
| 5229 | + | |
| 5230 | + | |
| 5231 | + | |
| 5232 | + | |
| 5233 | + | |
| 5234 | + | |
| 5235 | + | |
| 5236 | + | |
| 5237 | + | |
| 5238 | + | |
| 5239 | + | |
| 5240 | + | |
| 5241 | + | |
| 5242 | + | |
| 5243 | + | |
| 5244 | + | |
| 5245 | + | |
| 5246 | + | |
| 5247 | + | |
| 5248 | + | |
| 5249 | + | |
| 5250 | + | |
| 5251 | + | |
| 5252 | + | |
| 5253 | + | |
| 5254 | + | |
| 5255 | + | |
| 5256 | + | |
| 5257 | + | |
| 5258 | + | |
| 5259 | + | |
| 5260 | + | |
| 5261 | + | |
| 5262 | + | |
| 5263 | + | |
| 5264 | + | |
| 5265 | + | |
| 5266 | + | |
| 5267 | + | |
| 5268 | + | |
| 5269 | + | |
| 5270 | + | |
| 5271 | + | |
| 5272 | + | |
| 5273 | + | |
| 5274 | + | |
| 5275 | + | |
| 5276 | + | |
| 5277 | + | |
| 5278 | + | |
| 5279 | + | |
| 5280 | + | |
| 5281 | + | |
| 5282 | + | |
5125 | 5283 | | |
5126 | 5284 | | |
5127 | 5285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
298 | 298 | | |
299 | 299 | | |
300 | 300 | | |
| 301 | + | |
301 | 302 | | |
302 | 303 | | |
303 | 304 | | |
| |||
643 | 644 | | |
644 | 645 | | |
645 | 646 | | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
646 | 650 | | |
647 | 651 | | |
648 | 652 | | |
649 | | - | |
| 653 | + | |
650 | 654 | | |
651 | 655 | | |
652 | 656 | | |
| |||
883 | 887 | | |
884 | 888 | | |
885 | 889 | | |
886 | | - | |
| 890 | + | |
887 | 891 | | |
888 | 892 | | |
889 | 893 | | |
| |||
0 commit comments