Skip to content

Reference

Problems

Incremental Problem

# RobRecSolver.incrementalProblem — Function.

incrementalProblem(c, α, x, X, pd)

Solves incremental problem with specified costs c, parameter $α \in [0, 1]$, first stage solutions x and a list of constraints X defining a set of feasible solutions. It is subproblem of of evaluationProblem and adversarialProblem.

Check section 4 Solving the problems by MIP formulations of publication for more information about this algorithm.

Arguments

  • c: is a vector of a nonnegative nominal second stage costs.
  • α: fixed number belonging to $[0, 1]$
  • x: first stage solution.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • pd: an instance of ProblemDescriptor

source

Evaluation Problem

# RobRecSolver.evaluationProblem — Function.

evaluationProblem(C, c, d, Γ, α, x, X, pd)

Computes $Eval(\pmb{x})$ with accuracy ϵ.

Check section 4 Solving the problems by MIP formulations of publication for more information about this algorithm.

Arguments

  • C: is a vector of nonnegative first stage costs.
  • c: is a vector of a nonnegative nominal second stage costs.
  • d: is a vector of maximal deviations of the costs from their nominal values.
  • Γ: is a budget, or the amount of uncertainty, which can be allocated to the second stage costs.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • α: fixed number belonging to $[0, 1]$
  • pd: an instance of ProblemDescriptor

source

Recoverable Problem

# RobRecSolver.recoverableProblem — Function.

recoverableProblem(C, c, X, α, dg)

Solves recoverable problem $REC(c) = min_{x \in X} min_{y \in X^{\alpha}_x} (Cx + cy)$.

Check section 4 Solving the problems by MIP formulations of publication for more information about this algorithm.

Arguments

  • C: is a vector of nonnegative first stage costs.
  • c: is a vector of a nonnegative nominal second stage costs.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • α: fixed number belonging to $[0, 1]$
  • pd: an instance of ProblemDescriptor

source

Adversarial Problem

# RobRecSolver.adversarialProblem — Function.

adversarialProblem(C, c, d, Γ, X, α, pd)

Computes $Adv$ with accuracy ϵ.

Check section 5.1 Adversarial lower bound of publication for more information about this algorithm.

Arguments

  • C: is a vector of nonnegative first stage costs.
  • c: is a vector of a nonnegative nominal second stage costs.
  • d: is a vector of maximal deviations of the costs from their nominal values.
  • Γ: is a budget, or the amount of uncertainty, which can be allocated to the second stage costs.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • α: fixed number belonging to $[0, 1]$
  • pd: an instance of ProblemDescriptor

source

Selection Lower Bound

# RobRecSolver.selectionLowerBound — Function.

selectionLowerBound(C, c, d, Γ, X, α, dg)

Computes selection lower bound.

Check section 5.2 Selection lower bound of publication for more information about this algorithm.

Arguments

  • C: is a vector of nonnegative first stage costs.
  • c: is a vector of a nonnegative nominal second stage costs.
  • d: is a vector of maximal deviations of the costs from their nominal values.
  • Γ: is a budget, or the amount of uncertainty, which can be allocated to the second stage costs.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • α: fixed number belonging to $[0, 1]$
  • pd: an instance of ProblemDescriptor

source

Lagrangian Lower Bound

# RobRecSolver.lagrangianLowerBound — Function.

lagrangian_lower_bound(C, c, d, Γ, X, l, dg)

Computes Lagrangian lower bound.

Check section 5.3 Lagrangian lower bound of publication for more information about this algorithm.

Arguments

  • C: is a vector of nonnegative first stage costs.
  • c: is a vector of a nonnegative nominal second stage costs.
  • d: is a vector of maximal deviations of the costs from their nominal values.
  • Γ: is a budget, or the amount of uncertainty, which can be allocated to the second stage costs.
  • X: is a set of feasible solutions represented as a list functions, each of which accepts a list of JuMP variables as an argument and returns a JuMP linear constraint.
  • l: value of parameter $l=\lceil m(1-\alpha) \rceil$
  • pd: an instance of ProblemDescriptor

source

Additional Types and functions

There is a number of types and helper functions defined to facilitate implementation of algorithms described in publication.

# RobRecSolver.ProblemDescriptor — Type.

Base type for all problem descriptors. It is expected to has the following fields:

  • n: the size of the problem.
  • saneComputationLimit: maximum size of the problem for which computing results for adversarial lower bound, recoverable lower bound, selection lower bound or lagrangian lower bound makes sense.
  • equalCardinalityProperty: specifies if problem possess equal cardinality property.
  • cardinality: cardinality of the problem if any.

source

# RobRecSolver.KnapsackProblemDescriptor — Type.

KnapsackProblemDescriptor is an implementation ProblemDescriptor for minimum knapsack problem.

source

# RobRecSolver.AssignmentProblemDescriptor — Type.

AssignmentProblemDescriptor is an implementation ProblemDescriptor for minimum assignment problem.

source

# RobRecSolver.getProblemSize — Function.

getProblemSize(pd::ProblemDescriptor)

Returns the size of the problem.

Arguments

source

# RobRecSolver.getSaneComputationLimit — Function.

getSaneComputationLimit(pd::ProblemDescriptor)

Returns maximum size of the problem for which computing results for adversarial lower bound, recoverable lower bound, selection lower bound or lagrangian lower bound makes sense.

Arguments

source

# RobRecSolver.hasEqualCardinalityProperty — Function.

hasEqualCardinalityProperty(pd::ProblemDescriptor)

Returns whether the problem possess equal cardinality property.

Arguments

source

# RobRecSolver.getCardinality — Function.

getCardinality(pd::ProblemDescriptor)

Returns cardinality of the problem if any.

Arguments

source

# RobRecSolver.initialScenario — Function.

initialScenario(c, d, Γ)

Returns a good initial scenario $c_0$. It is used in computation of evaluationProblem and adversarialProblem.

Check section 5.1 Adversarial lower bound of publication for more information about this algorithm.

Arguments

  • c: vector of nonnegative nominal second stage costs.
  • d: vector of maximal deviations of the costs from their nominal values.
  • Γ: budget, or the amount of uncertainty, which can be allocated to the second stage costs

source

Utilities

The functions below allow customize package parameters like solver time limits or logging for different algorithms.

# RobRecSolver.loadProperties — Function.

loadProperties()

Loads properties stored in an INI file from the specified file location. To change default location set ROBRECSOLVER_CONFIG environment variable either in Julia REPL or in ~/.julia/config/startup.jl and then reload RobRecSolver package:

julia> ENV[ROBRECSOLVER_CONFIG] = "<path_to_file>"
julia> Pkg.reload("RobRecSolver")

Use default properties file Pkg.dir("RobRecSolver")/conf/config.ini as a reference.

In order to reset changes simply delete environment variable and reload RobRecSolver package.

source

# RobRecSolver.getProperty — Function.

getProperty(parameter[, parameterType, section])

Get value for key of name parameter of type parameterType from section section from either default properties files or the one specified with a path in ROBRECSOLVER_CONFIG. Argument parameterType defaults to Int and section defaults to main.

source