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 ofProblemDescriptor
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 ofProblemDescriptor
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 ofProblemDescriptor
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 ofProblemDescriptor
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 ofProblemDescriptor
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 ofProblemDescriptor
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.
#
RobRecSolver.KnapsackProblemDescriptor — Type.
KnapsackProblemDescriptor is an implementation ProblemDescriptor for minimum knapsack problem.
#
RobRecSolver.AssignmentProblemDescriptor — Type.
AssignmentProblemDescriptor is an implementation ProblemDescriptor for minimum assignment problem.
#
RobRecSolver.getProblemSize — Function.
getProblemSize(pd::ProblemDescriptor)
Returns the size of the problem.
Arguments
pd: an instance ofProblemDescriptor
#
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
pd: an instance ofProblemDescriptor
#
RobRecSolver.hasEqualCardinalityProperty — Function.
hasEqualCardinalityProperty(pd::ProblemDescriptor)
Returns whether the problem possess equal cardinality property.
Arguments
pd: an instance ofProblemDescriptor
#
RobRecSolver.getCardinality — Function.
getCardinality(pd::ProblemDescriptor)
Returns cardinality of the problem if any.
Arguments
pd: an instance ofProblemDescriptor
#
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
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.
#
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.