Parameters

Solver Parameters

The solver settings are displayed in the following table.

Parameters

Is Required

Default Value

Description

driver.initialLambdaPath

false

N/A

Filepath to initialize dual variables for algorithm restarts (optional).

driver.gamma

false

1E-3

Coefficient for quadratic objective regularizer, used by most objectives.

driver.projectionType

true

N/A

Type of projection used. Possible values are Simplex, SimplexInequality, BoxCut, BoxCutInequality and UnitBox.

driver.boxCutUpperBound

false

1

Upper bound for the box cut projection constraint (if used).

driver.objectiveClass

true

N/A

Class name of the objective function, one of MooSolverDualObjectiveFunction, MatchingSolverDualObjectiveFunction, ConstrainedMatchingSolverDualObjectiveFunction, ParallelMooSolverDualObjectiveFunction.

driver.outputFormat

false

AVRO

The format of output, can be AVRO, JSON, CSV or ORC.

driver.savePrimal

false

false

Flag to save primal variable values at the solution.

driver.verbosity

false

1

The levels of logging to be shown. We currently support 0 (concise logging) and 1 (log with increased verbosity).

driver.solverOutputPath

true

N/A

Directory path to save solution at.

input.ACblocksPath

true

N/A

Path of matrix A & c encoded as data blocks.

input.vectorBPath

true

N/A

Path of vector b.

input.format

true

N/A

The format of input data, e.g. AVRO, JSON, CSV or ORC.

optimizer.maxIter

true

N/A

The maximum number of iterations the solver will run.

optimizer.solverType

true

N/A

The type of optimizer, currently supported: AGD, LBFGS and LBFGSB.

optimizer.designInequality

false

true

True if Ax <= b, false if Ax = b or have mixed constraints.

optimizer.mixedDesignPivotNum

false

0

The pivot number if we have mixed A_1x <= b1 and A_2x = b2, i.e. how many inequality constraints come first.

optimizer.dualTolerance

true

N/A

Tolerance criteria for dual variable change.

optimizer.slackTolerance

true

N/A

Tolerance criteria for slack.

Spark Parameters

There are four regular spark parameters you can tune:

  • spark.driver.mem

  • spark.executor.mem

  • spark.executor.cores

  • spark.executor.num

The most efficient spark parameters are dependent on the problem scale and structure and there is no one-size-fits-all configuration. The default parameters usually can achieve acceptable performance, but users can definitely try tuning them if needed.