pub fn espc_optimize(
task: &PackedTask,
cost_fluent: usize,
sat: &mut SatGuidance,
seed: Option<(Vec<usize>, f64)>,
part: Option<EspcPartition>,
threads: usize,
cfg: SearchCfg,
) -> Option<EspcResult>Expand description
Run the ESPC penalty-resolution outer loop. sat must be preloaded with the
satisfaction/resource guidance and the static deadline pairs (M, D, base_val);
this function owns the per-trigger λ schedule and mutates sat.deadline’s
effective weights in place each iteration. seed is the stage-1 incumbent (used
as the anytime starting point and never lost). When part supplies ≥2
components (and FF_ESPC_MONO is unset), each iteration runs the partitioned
composition instead of the monolithic tightening B&B — far cheaper per
iteration, so the default outer cap rises 16 → 64 and many more λ adaptations
fit in the same budget. Returns the best plan found.