Class LogisticFunctionLDBD

All Implemented Interfaces:
Function

public class LogisticFunctionLDBD extends LogisticFunctionBase
Implementation of the Multiserver Logistic Function, as given in Ong 2018: Java Algorithms for Computer Performance Analysis. Uses Method 2, with the Sum and Difference operators inside
  • Field Details

    • N

      protected int N
    • R

      protected int R
    • K

      protected int K
    • epsilon

      protected double epsilon
    • demands

      protected cern.colt.matrix.DoubleMatrix2D demands
    • sigma

      protected cern.colt.matrix.DoubleMatrix2D sigma
    • servers

      protected cern.colt.matrix.DoubleMatrix1D servers
    • pop

      protected cern.colt.matrix.DoubleMatrix1D pop
    • A

      protected cern.colt.matrix.linalg.Algebra A
    • MC

      protected MathContext MC
    • States

      protected ArrayList<solvers.queueingnet.montecarloLogistic.solver.LogisticFunctionLDBD.state> States
  • Constructor Details

  • Method Details

    • safeEvaluate

      protected BigDecimal safeEvaluate(double[] point) throws InternalErrorException
      Implements the safeEvaluate abstract method. Computes the logistic additive function at the point given by point, for multiserver networks e^(k(x))
      Specified by:
      safeEvaluate in class SafeFunction
      Parameters:
      point - Array representing point to be evaluated
      Returns:
      BigDecimal equal to the function value at that point
      Throws:
      InternalErrorException - if the operation cannot be completed
    • checkInDomain

      protected void checkInDomain(double[] point) throws InternalErrorException
      Description copied from class: SafeFunction
      Function that checks point in within the domain of the function
      Specified by:
      checkInDomain in class SafeFunction
      Parameters:
      point - Point to be checked
      Throws:
      InternalErrorException - When point is invalid
    • copy

      public Function copy() throws InternalErrorException
      Throws:
      InternalErrorException
    • calculate_stationary_point

      public void calculate_stationary_point() throws InternalErrorException
      Stationary point calculation for multi-server networks - requires CG descent. Requires the implementation of a gradient MultivariateVectorFunction and a partial gradient MultivariateFunction to be given into the optimizer class. These will then be used in the nonlinear CG algorithm to calculate the direction of descent
      Specified by:
      calculate_stationary_point in class LogisticFunctionBase
      Throws:
      InternalErrorException
    • calculate_hessian

      public void calculate_hessian() throws InternalErrorException
      Stationary point Hessian calculations for multi-server networks
      Specified by:
      calculate_hessian in class LogisticFunctionBase
      Throws:
      InternalErrorException
    • evaluateHessStat

      public double[][] evaluateHessStat(double[] stat_point) throws InternalErrorException
      Evaluate the Hessian of k(x) at the stationary point, stat_point. Will be correct iff stat-point is the correct stationary point
      Parameters:
      stat_point - stationry point to provide
      Returns:
      double[][] containing the Hessian of log(k(x))
      Throws:
      InternalErrorException
    • evaluateJac

      public double[] evaluateJac(double[] point) throws InternalErrorException
      Evaluate the Jacobian of k(x) at the given point, point Does not have to be the stat point. For use in gradient descent for finding the stationary point
      Parameters:
      point - Given point to evaluate Jacobian
      Returns:
      double[] representing Jacobian
      Throws:
      InternalErrorException