SPSA2

public class SPSA2

Implements SPSA optimisation algorithm (Simultaneous Perturbation Stochastic Approximation). This version of the algorithm keeps OD matrix constant, but optimises start and end node probabilities (the probability of a trip starting/ending at a particular node within LAD). 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

SPSA2

public SPSA2()

Methods

getLossFunctionEvaluations

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

initialise

public void initialise(RoadNetworkAssignment rna, Properties props, ODMatrixMultiKey odm, HashMap<Integer, Double> initialThetaStart, HashMap<Integer, Double> initialThetaEnd, 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.
  • odm – Origin-destination matrix.
  • initialThetaStart – Initial start node probabilities.
  • initialThetaEnd – Initial end node probabilities.
  • 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.