Class FJFixedPoint

java.lang.Object
jline.solvers.fj.FJFixedPoint

public final class FJFixedPoint extends Object
Solver-agnostic driver of the fork-join fixed point.

The transformation (ModelAdapter.mmt, or ht under options.config.fork_join) turns the model into a plain network in which every fork is a router, every join a zero-service delay, and the parallelism is carried by auxiliary open classes of arrival rate (fanout-1)*forkLambda. Each pass solves that network, recomputes the synchronisation delays from the resulting metrics and updates forkLambda; the loop ends when the queue lengths stop moving.

FJFixedPoint.InnerSolve is the inner solve. Nothing in the loop reads a solver internal, so any solver whose analyzer honours that contract can be driven here: SolverMVA passes its analyzer dispatch, SolverNC the normalizing-constant analyzers. Port of matlab/src/solvers/@NetworkSolver/fjFixedPoint.m.

The carrier is MVAResult for historical reasons: it is the shape the loop already consumed when it lived inside MVARunner (QN, UN, RN, TN, CN, XN, iter, logNormConstAggr, method), and reusing it keeps the loop body identical to the one that produced today's numbers.

  • Method Details

    • run

      public static FJFixedPoint.FJOutcome run(Network model, NetworkStruct sn, SolverOptions options, FJFixedPoint.FJState state, FJFixedPoint.InnerSolve fcn, long T0)
      Runs the fork-join fixed point, or the inner solve once when the model has no fork.
      Parameters:
      model - the model being solved
      sn - its struct, already compiled
      options - the solver options
      state - the retained transformation cache and warm start
      fcn - the inner solve
      T0 - the wall-clock marker of the enclosing analyzer
      Returns:
      the merged metrics, the working struct and the updated state