Skip to content

Upgrade 17 decision models to optimization versions #765

@isPANN

Description

@isPANN

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 Value from Or to Max<T> or Min<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 → ILP reduction if one exists (add objective function)
  • Update unit tests
  • Update paper entry in docs/paper/reductions.typ if applicable
  • Update canonical example in src/example_db/model_builders.rs if applicable

Notes

  • No model appears as a target in any existing reduction rule, so there are no downstream dependency concerns.
  • 6 models have existing → ILP reductions 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions