SPSA3

public class SPSA3

Implements SPSA optimisation algorithm (Simultaneous Perturbation Stochastic Approximation). This version optimises OD matrix and start/end node probabilities simultaneously. http://www.jhuapl.edu/SPSA/

Author:Milan Lovric

Fields

THETA_MAX_FLOW

public static final double THETA_MAX_FLOW

THETA_MAX_PROBABILITY

public static final double THETA_MAX_PROBABILITY

THETA_MIN_FLOW

public static final double THETA_MIN_FLOW

THETA_MIN_PROBABILITY

public static final double THETA_MIN_PROBABILITY

Constructors

SPSA3

public SPSA3()

Methods

getLossFunctionEvaluations

public List<Double> getLossFunctionEvaluations()

Getter function for loss function evaluations for all iterations.

Returns:Loss function evaluations for all iterations.

getThetaEstimate

public RealODMatrix getThetaEstimate()

Getter function for the optimisation result (OD matrix).

Returns:Estimated OD matrix.

getThetaEstimateEnd

public HashMap<Integer, Double> getThetaEstimateEnd()

Getter function for the optimisation result (end nodes probabilities).

Returns:Estimated end nodes probabilities.

getThetaEstimateStart

public HashMap<Integer, Double> getThetaEstimateStart()

Getter function for the optimisation result (start nodes probabilities).

Returns:Estimated start nodes probabilities.

initialise

public void initialise(RoadNetworkAssignment rna, RouteSetGenerator rsg, Properties routeChoiceParams, RealODMatrix initialTheta, HashMap<Integer, Double> initialThetaStart, HashMap<Integer, Double> initialThetaEnd, double a1, double A1, double c1, double a2, double A2, double c2, double alpha, double gamma)

Initialise the SPSA algorithm with starting values.

Parameters:
  • rna – Road network assignment.
  • rsg – Route set generator.
  • routeChoiceParams – Route choice parameters.
  • initialTheta – Initial OD matrix.
  • initialThetaStart – Initial start node probabilities.
  • initialThetaEnd – Initial end node probabilities.
  • a1 – SPSA parameter for OD estimation.
  • A1 – SPSA parameter for OD estimation.
  • c1 – SPSA parameter for OD estimation.
  • a2 – SPSA parameter for nodes probability estimation.
  • A2 – SPSA parameter for nodes probability estimation.
  • c2 – SPSA parameter for nodes probability estimation.
  • 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.

saveNodeProbabilities

public void saveNodeProbabilities(String outputFile)

Saves node probabilities to an output file.

Parameters:
  • outputFile – Output file name (with path).