-
Notifications
You must be signed in to change notification settings - Fork 4
Description
Summary
17 models in the codebase have optimization-sounding names but are implemented as decision problems (Value = Or with a bound threshold field). They should be upgraded to true optimization problems (Value = Max/Min), removing the threshold parameter and letting the solver find the optimal value directly.
Motivation: Decision versions are less useful for problem-solving — knowing "yes, there exists a solution ≤ k" is less valuable than knowing the actual optimum. Optimization versions also enable value-preserving reductions (Category A/B↑ rules) instead of threshold-only mappings.
Group A — Direct upgrade (12 models)
These have a single bound field that is a pure objective threshold. Upgrade: delete bound, change Value from Or to Max/Min.
| Model | Threshold field | Target Value | Existing → ILP rule? |
|---|---|---|---|
LongestCommonSubsequence |
bound: usize |
Max |
Yes — rewrite |
LongestCircuit |
bound: W::Sum |
Max |
No |
ShortestCommonSupersequence |
bound: usize |
Min |
No |
OptimalLinearArrangement |
bound: usize |
Min |
No |
RuralPostman |
bound: W::Sum |
Min |
No |
StackerCrane |
bound: i32 |
Min |
No |
MixedChinesePostman |
bound: W::Sum |
Min |
No |
MultipleCopyFileAllocation |
bound: i64 |
Min |
Yes — rewrite |
ExpectedRetrievalCost |
bound: f64 |
Min |
Yes — rewrite |
SumOfSquaresPartition |
bound: i64 |
Min |
Yes — rewrite |
MinimumCardinalityKey |
bound: i64 |
Min |
No |
SequencingToMinimizeMaximumCumulativeCost |
bound: i64 |
Min |
No |
Group B — Constrained optimization redesign (5 models)
These have multiple bound/constraint parameters. One parameter is a problem constraint, the other is the optimization target. Upgrade: keep the constraint parameter, remove the threshold, optimize the objective.
| Model | Constraint (keep) | Threshold (remove) | Target Value | Existing → ILP rule? |
|---|---|---|---|---|
MinMaxMulticenter |
k: usize (num centers) |
bound: W::Sum |
Min |
Yes — rewrite |
LengthBoundedDisjointPaths |
max_length: usize |
num_paths_required: usize |
Max |
No |
MinimumCutIntoBoundedSets |
size_bound: usize |
cut_bound: W::Sum |
Min |
No |
ShortestWeightConstrainedPath |
weight_bound: N::Sum |
length_bound: N::Sum |
Min (path length) |
Yes — rewrite |
CapacityAssignment |
delay_budget: u64 |
cost_budget: u64 |
Min (cost) |
Yes — rewrite |
Upgrade checklist per model
- Remove threshold field from struct
- Change
type ValuefromOrtoMax<T>orMin<T> - Update
evaluate()to return the objective value instead of threshold comparison - Update
dims()if the bound was encoded in the config space - Update
declare_variants!registration - Update or rewrite
→ ILPreduction if one exists (add objective function) - Update unit tests
- Update paper entry in
docs/paper/reductions.typif applicable - Update canonical example in
src/example_db/model_builders.rsif applicable
Notes
- No model appears as a target in any existing reduction rule, so there are no downstream dependency concerns.
- 6 models have existing
→ ILPreductions that need rewriting (feasibility ILP → optimization ILP with objective function). - Group B bicriteria decisions (ShortestWeightConstrainedPath, CapacityAssignment) follow the convention: minimize cost subject to the more natural constraint.
- This upgrade unblocks ~12 Category B↑ reduction rules where the source is already optimization (MinVC, MinDomSet, etc.) and the target can now support value-preserving reductions.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status