Package jline.lang
Class ModelAdapter
java.lang.Object
jline.lang.ModelAdapter
Static class to transform and adapt models, providing functionality for:
- Creating tagged job models for response time analysis
- Fork-join network transformations (formerly from FJ.java)
- Model preprocessing and adaptation operations
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classResult of aggregating chains in a modelstatic classDeaggregation information for converting chain-level results back to class-levelstatic classResult of the FJ tag augmentation (fjtag).static classResult of tagging a chain in a model -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaggregateChains(Network model) aggregateChains(Network model, String suffix) Transform a multi-class model into an equivalent chain-aggregated modelstatic FESResultaggregateFES(Network model, List<Station> stationSubset) Replace a station subset with a Flow-Equivalent Server (FES) This function replaces a subset of stations in a closed product-form queueing network with a single Flow-Equivalent Server (FES).static FESResultaggregateFES(Network model, List<Station> stationSubset, FESOptions options) Replace a station subset with a Flow-Equivalent Server (FES) with optionsstatic MatrixfindPaths(NetworkStruct sn, Matrix P, int startNode, int endNode, int r, ArrayList<Integer> toMerge, Matrix QN, Matrix TN, double currentTime, Matrix fjclassmap, Matrix fjforkmap, Network nonfjmodel) Finds the response times along each path leading out of startNode up to (and not including) endNodestatic MatrixfindPathsCS(NetworkStruct sn, Matrix P, int curNode, int endNode, int curClass, ArrayList<Integer> toMerge, Matrix QN, Matrix TN, double currentTime, Matrix fjclassmap, Matrix fjforkmap, Network nonfjmodel) Finds the response times along each path leading out of curNode up to (and not including) endNode Variant for models with class switchingstatic voidFold the auxiliary-class metric columns computed on an FJ tag-augmented struct back into the original classes: queue lengths, utilizations and throughputs of the sibling classes are exact aggregates of the class they were forked from; response times are recomputed by Little's law after folding.static ModelAdapter.FJTagResultBuild a tag-augmented copy of a closed fork-join model for exact native analysis by SolverCTMC/SolverSSA.static voidValidate that a fork-join model is within the supported feature set of the native CTMC/SSA fork-join implementation: closed chains only, non-nested fork-join pairs, standard join strategy, integer tasksPerLink.static Ret.FJApproxHeidelberger-Trivedi fork-join queueing network transformation.static Ret.FJApproxFork-Join Transform approach with default forkLambda parameterstatic Ret.FJApproxFork-Join Transform approach to evaluate queueing networks including fork-join systems.static booleanrefreshServicesFromBase(Ret.FJApprox mmtResult) Re-feed a transformed model produced bymmt(jline.lang.Network)from the current service parameters of the base model it was derived from, so that the transformation can be reused across the iterations of an outer fixed point instead of being rebuilt.static NetworkremoveClass(Network model, JobClass jobclass) Returns a copy of the model with the specified job class removed, updating all station configurations, routing matrices and class-dependent parameters accordingly.static Ret.FJsortForkssort_forks(NetworkStruct sn, NetworkStruct nonfjstruct, Matrix fjforkmap, Matrix fjclassmap, Network nonfjmodel) Determines a directed acyclic graph of relationships among fork nodes.Convenience method with default parametersConvenience method with default parametersCreate a tagged version of a job chain for response time analysis
-
Constructor Details
-
ModelAdapter
public ModelAdapter()
-
-
Method Details
-
tagChain
public static ModelAdapter.TaggedChainResult tagChain(Network model, Chain chain, JobClass jobclass, String suffix) Create a tagged version of a job chain for response time analysis- Parameters:
model- The original modelchain- The chain to tagjobclass- The specific job class to tag (optional, defaults to first class in chain)suffix- The suffix to add to tagged class names (optional, defaults to ".tagged")- Returns:
- TaggedChainResult containing the tagged model and tagged job class
-
tagChain
public static ModelAdapter.TaggedChainResult tagChain(Network model, Chain chain, JobClass jobclass) Convenience method with default parameters -
tagChain
Convenience method with default parameters -
findPaths
public static Matrix findPaths(NetworkStruct sn, Matrix P, int startNode, int endNode, int r, ArrayList<Integer> toMerge, Matrix QN, Matrix TN, double currentTime, Matrix fjclassmap, Matrix fjforkmap, Network nonfjmodel) Finds the response times along each path leading out of startNode up to (and not including) endNode -
findPathsCS
public static Matrix findPathsCS(NetworkStruct sn, Matrix P, int curNode, int endNode, int curClass, ArrayList<Integer> toMerge, Matrix QN, Matrix TN, double currentTime, Matrix fjclassmap, Matrix fjforkmap, Network nonfjmodel) Finds the response times along each path leading out of curNode up to (and not including) endNode Variant for models with class switching -
ht
Heidelberger-Trivedi fork-join queueing network transformation. Transforms the queueing network containing a FJ subsystem into a queueing network without one. Fork nodes changed to Router nodes. Join nodes changed to Delay nodes. One artificial class is created for each parallel branch and for each class. Another delay is added to model the sojourn time of the original classes. -- This approach is derived by PHILIP HEIDELBERGER and KISHOR S. TRIVEDI in "Analytic Queueing Models for Programs with Internal Concurrency"- Parameters:
model- - the original network- Returns:
- - queueing network with no FJ system, the class and the fork maps for the artificial classes, and the auxiliary delay map (each join node is mapped to a corresponding auxiliary delay).
-
mmt
Fork-Join Transform approach with default forkLambda parameter -
mmt
Fork-Join Transform approach to evaluate queueing networks including fork-join systems. An equivalent network is created where the fork nodes are replaced by routers, the join nodes are replaced by delays, and the parallelism induced by a fork-join system is simulated through the addition of artificial open customer classes.- Parameters:
model- - the original queueing networkforkLambda- - the arrival rates of the artificial classes- Returns:
- - the equivalent queueing network with the fork-join systems replaced with other nodes, a mapping of the artificial classes and their corresponding original classes, a mapping of the artificial classes and their FJ systems, and the fanout of each artificial class
-
refreshServicesFromBase
Re-feed a transformed model produced bymmt(jline.lang.Network)from the current service parameters of the base model it was derived from, so that the transformation can be reused across the iterations of an outer fixed point instead of being rebuilt. SolverLN re-solves each layer once per iteration and only the rates change between iterations; the fork topology the transformation encodes does not. Rebuilding costs a full serialisation deep copy of the model each time.Three kinds of slot, each handled differently:
serviceSrc: base-derived, re-read from the base model.immediateSlots: owned by the transformation, and RESET rather than skipped -- the fork loop overwrites every join with its current synchronisation delay on each pass, so a reused model still holds the previous outer iteration's converged value. Leaving them alone silently warm-starts the fork loop.- auxiliary arrivals: owned by the forkLambda fixed point, reset to what a cold call would have set.
- Returns:
- false when the provenance cannot be applied, in which case the caller
must fall back to a cold
mmt(jline.lang.Network).
-
sort_forks
public static Ret.FJsortForks sort_forks(NetworkStruct sn, NetworkStruct nonfjstruct, Matrix fjforkmap, Matrix fjclassmap, Network nonfjmodel) Determines a directed acyclic graph of relationships among fork nodes. -
removeClass
Returns a copy of the model with the specified job class removed, updating all station configurations, routing matrices and class-dependent parameters accordingly. The original model is left unchanged.- Parameters:
model- the source network modeljobclass- the job class to remove- Returns:
- a new model without the specified class
-
aggregateChains
-
aggregateChains
Transform a multi-class model into an equivalent chain-aggregated model- Parameters:
model- Source Network model with potentially multiple classes per chainsuffix- Optional suffix for chain class names- Returns:
- AggregateChainResult containing the aggregated model, alpha, and deaggInfo
-
aggregateFES
Replace a station subset with a Flow-Equivalent Server (FES) This function replaces a subset of stations in a closed product-form queueing network with a single Flow-Equivalent Server (FES). The FES has Limited Joint Dependence (LJD) service rates where the rate for class-c in state (n1,...,nK) equals the throughput of class-c in an isolated subnetwork consisting only of the subset stations.- Parameters:
model- Closed product-form Network modelstationSubset- List of Station objects to aggregate- Returns:
- FESResult containing the FES model, FES station, and deaggregation info
-
aggregateFES
public static FESResult aggregateFES(Network model, List<Station> stationSubset, FESOptions options) Replace a station subset with a Flow-Equivalent Server (FES) with options- Parameters:
model- Closed product-form Network modelstationSubset- List of Station objects to aggregateoptions- FES aggregation options- Returns:
- FESResult containing the FES model, FES station, and deaggregation info
-
fjValidate
Validate that a fork-join model is within the supported feature set of the native CTMC/SSA fork-join implementation: closed chains only, non-nested fork-join pairs, standard join strategy, integer tasksPerLink. Mirrors matlab/src/api/fj/sn_fj_validate.m. -
fjFoldback
public static void fjFoldback(Matrix QN, Matrix UN, Matrix RN, Matrix TN, Matrix fjclassmap, int Korig) Fold the auxiliary-class metric columns computed on an FJ tag-augmented struct back into the original classes: queue lengths, utilizations and throughputs of the sibling classes are exact aggregates of the class they were forked from; response times are recomputed by Little's law after folding. Mirrors matlab/src/api/fj/sn_fj_foldback.m. The input matrices are modified in place up to column Korig; callers should extract the first Korig columns afterwards. -
fjtag
Build a tag-augmented copy of a closed fork-join model for exact native analysis by SolverCTMC/SolverSSA. For each (fork f, class r) pair with matched join j, branch b and tag t (one per chain population slot), an auxiliary transient closed class with population 0 is created. The tag identifies the origin job: the fork firing (AfterFJEvent) emits weight (tasksPerLink) siblings per branch in the tag's auxiliary classes using the lowest free tag, and the join fires only when all siblings OF THE SAME TAG are buffered, releasing one class-r job (AfterEventJoin). Mirrors matlab/src/io/@ModelAdapter/fjtag.m.
-