SPSA4

public class SPSA4

Implements SPSA optimisation algorithm (Simultaneous Perturbation Stochastic Approximation). This version optimises Tempro level OD matrix. http://www.jhuapl.edu/SPSA/

Author:Milan Lovric

Fields

THETA_MAX

public static final double THETA_MAX

THETA_MIN

public static final double THETA_MIN

Constructors

SPSA4

public SPSA4(Properties props)

Methods

getLossFunctionEvaluations

public List<Double> getLossFunctionEvaluations()
Returns:Loss function evaluations for all iterations.

getThetaEstimate

public RealODMatrixTempro getThetaEstimate()

Getter function for the optimisation result (OD matrix).

Returns:Estimated OD matrix.

initialise

public void initialise(RoadNetworkAssignment rna, Zoning zoning, RouteSetGenerator rsg, RealODMatrixTempro initialTheta, double a, double A, double c, double alpha, double gamma)

Initialise the SPSA algorithm with starting values.

Parameters:
  • rna – Road network assignment.
  • zoning – Zoning system for tempro zones.
  • rsg – Route set generator with routes to be used in assignment.
  • initialTheta – Initial OD matrix.
  • a – SPSA parameter.
  • A – SPSA parameter.
  • c – SPSA parameter.
  • alpha – SPSA parameter.
  • gamma – SPSA parameter.

lossFunction

public double lossFunction()

Calculate the loss function of the latest theta estimate (OD matrix).

Returns:Loss function.

runSPSA

public void runSPSA(int maxIterations)

Run the algorithm.

Parameters:
  • maxIterations – Maximum number of iterations.