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: it is the shape the loop consumes (QN, UN, RN, TN, CN, XN, iter, logNormConstAggr, method), and reusing it keeps the loop body unchanged.

  • 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