Class Source

All Implemented Interfaces:
Serializable, Copyable

public class Source extends Station implements Serializable
An abstraction of the external world jobs in open classes come from
See Also:
  • Field Details

  • Constructor Details

    • Source

      public Source(Network model, String name)
      Creates a new source node in the specified network. Initializes arrival processes for all job classes with Disabled distribution.
      Parameters:
      model - the network model to add this source to
      name - the name for this source node
  • Method Details

    • containsJobClass

      public boolean containsJobClass(JobClass jobClass)
      Checks if this source has an arrival process configured for the specified job class.
      Parameters:
      jobClass - the job class to check
      Returns:
      true if an arrival process exists for this job class, false otherwise
    • getArrivalDistribution

      public Distribution getArrivalDistribution(JobClass jobClass)
      Gets the arrival distribution for a specific job class.
      Parameters:
      jobClass - the job class to query
      Returns:
      the arrival distribution, or Disabled if none configured
    • getArrivalProcess

      public final Distribution getArrivalProcess(JobClass jobClass)
      Gets the arrival process distribution for a specific job class. This is an alias for getArrivalDistribution.
      Parameters:
      jobClass - the job class to query
      Returns:
      the arrival distribution, or Disabled if none configured
    • getSchedStrategy

      public SchedStrategy getSchedStrategy()
      Gets the scheduling strategy for this source node. Sources always use EXT (external) scheduling strategy.
      Overrides:
      getSchedStrategy in class Station
      Returns:
      the scheduling strategy (always SchedStrategy.EXT)
    • printSummary

      public void printSummary()
      Description copied from class: Node
      Prints a summary of this node's configuration to the console.
      Overrides:
      printSummary in class Node
    • removeArrivalProcess

      protected void removeArrivalProcess(JobClass jobClass)
      Removes the arrival process for a specific job class.
      Parameters:
      jobClass - the job class whose arrival process should be removed
    • removeJobClass

      public void removeJobClass(JobClass jobClass)
      Description copied from class: Node
      Removes all per-class configuration referencing the given job class from this node. The base implementation drops the class's output (routing) strategies; subclasses extend it to drop service, capacity, arrival and class-switching configuration. Called by Network.removeClass(jline.lang.JobClass).
      Overrides:
      removeJobClass in class Station
      Parameters:
      jobClass - the job class being removed from the model
    • setArrival

      public void setArrival(JobClass jobClass, Object distribution)
      Sets the arrival distribution for a specific job class. If distribution is null or Disabled, sets class capacity to 0. If a Workflow is provided, it will be converted to a PH distribution.
      Parameters:
      jobClass - the job class to configure
      distribution - the arrival distribution or workflow to set
    • setArrivalBatch

      public void setArrivalBatch(JobClass jobClass, DiscreteDistribution batchSize)
      Sets a batch-size law for a class, turning each arrival epoch of that class into the simultaneous release of a batch of jobs.

      The interarrival distribution set by setArrival(jline.lang.JobClass, java.lang.Object) continues to govern the spacing of the epochs; this governs how many jobs each epoch releases. A Geometric(a) interarrival time with a Geometric(beta) batch size is the Geo^X arrival process of a discrete-time queue, whose analytical counterpart is jline.api.qsys.Qsys_geoxgeo1.

      The batch size must be supported on {1,2,...}: an epoch that releases no job is not an arrival epoch. Batch laws are therefore rejected here if they can return zero, rather than being silently clamped.

      Parameters:
      jobClass - the job class to configure
      batchSize - the batch-size law, or null to restore single arrivals
    • getArrivalBatch

      public DiscreteDistribution getArrivalBatch(JobClass jobClass)
      Parameters:
      jobClass - the job class to query
      Returns:
      the batch-size law bound to the class, or null for single arrivals
    • setArrivalProcess

      public void setArrivalProcess(ServiceBinding arrivalProcess)
      Sets the arrival process using a service binding. Removes any existing arrival process for the same job class.
      Parameters:
      arrivalProcess - the service binding defining the arrival process
    • setMarkedArrival

      public void setMarkedArrival(MarkedMAP mmap, List<JobClass> classes)
      Binds a MarkedMAP with K marks to K open classes: mark k emits jobs of class classes.get(k-1), with all marks driven by one shared modulating chain. Mirrors MATLAB Source.setMarkedArrival.
      Parameters:
      mmap - the shared marked arrival process (M3A layout)
      classes - the K distinct open classes, ordered by mark index
    • getMarkedProcess

      public MarkedMAP getMarkedProcess()
      Returns:
      the shared MarkedMAP bound via setMarkedArrival, or null
    • getMarkedClasses

      public List<JobClass> getMarkedClasses()
      Returns:
      the classes bound to marks 1..K of the marked process, or null