Package jline.opt.decomposition
Class DecompositionWorkflow
java.lang.Object
jline.opt.decomposition.DecompositionWorkflow
Decomposes a joint optimization problem into per-variable-type subproblems
solved via Gauss-Seidel cycling with fixed-value propagation. An internal
topological sort (no external dependency) orders subproblems when explicit
dependencies are set. Mirrors native-Python
line_solver.opt.decomposition.DecompositionWorkflow.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddSubProblem(String name, List<DecisionVariable> variables, List<String> after) setDependency(String fromProblem, String toProblem) setSolverOptions(LineOptSolverOptions options) LQN layer-wise decomposition with default settings.solveLayered(int maxCycles, double tolerance, boolean autoFreeze, double freezeTol, List<String> frozenLayersSeed) Solve an LQN by layer, optionally freezing converged layers.solveSequential(int maxCycles, double tolerance)
-
Constructor Details
-
DecompositionWorkflow
-
-
Method Details
-
getProblem
-
getSubProblems
-
setSolverOptions
-
autoDecompose
-
setDependency
-
addSubProblem
public DecompositionWorkflow addSubProblem(String name, List<DecisionVariable> variables, List<String> after) -
solveSequential
-
solveHierarchical
-
solveLayered
LQN layer-wise decomposition with default settings. -
solveLayered
public WorkflowResult solveLayered(int maxCycles, double tolerance, boolean autoFreeze, double freezeTol, List<String> frozenLayersSeed) Solve an LQN by layer, optionally freezing converged layers. Groups decision variables by the LQN layer they perturb (host or task layer) and cycles Gauss-Seidel over the layer groups, fixing every other layer's variables at their current values while one layer is optimized. This is the LQN analogue ofsolveSequential(int, double), but the subproblems are LAYERS.Freezing has two composable sources:
frozenLayersSeed, an explicit set held fixed throughout; andautoFreeze, adaptive -- after each cycle a layer whose representative node metrics moved less thanfreezeTol(relative) is frozen and skipped, and unfrozen again if any still-active layer later moves by more thanfreezeTol.Convergence is on the full penalized objective delta between cycles, or when every layer is frozen. Falls back to
solveSequential(int, double)for a flat network. The returnedWorkflowResultcarries the extra fieldsfrozenLayers(final frozen set) andmodelEvaluations(total LINE solves). Mirrors native-PythonsolveLayered.- Parameters:
maxCycles- maximum Gauss-Seidel cyclestolerance- objective-delta convergence toleranceautoFreeze- enable adaptive layer freezingfreezeTol- relative-movement threshold for freezing a layerfrozenLayersSeed- explicit layers held fixed throughout (may be null)- Returns:
- the workflow result with LQN freezing diagnostics
-