SPSA

public class SPSA

Implements SPSA optimisation algorithm (Simultaneous Perturbation Stochastic Approximation). This version optimises the cells of the 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

SPSA

public SPSA()

Methods

getLossFunctionEvaluations

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

getThetaEstimate

public RealODMatrix getThetaEstimate()

Getter function for the optimisation result (OD matrix).

Returns:Estimated OD matrix.

initialise

public void initialise(RoadNetworkAssignment rna, Properties props, RealODMatrix initialTheta, double a, double A, double c, double alpha, double gamma)

Initialise the SPSA algorithm with starting values.

Parameters:
  • rna – Road network assignment.
  • props – Parameters from the config file.
  • 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:RMSN for the difference between volumes and traffic counts.

runSPSA

public void runSPSA(int maxIterations)

Run the algorithm.

Parameters:
  • maxIterations – Maximum number of iterations.