BlockSolverInterface

BlockSolverInterface module (dev)

The content of this section is not useful to the user of BlockDecomposition. It has implementation details about the connection of BlockDecomposition with the underlying solver. It is aimed mainly at developpers who would like to contribute to BlockDecomposition.

Decomposition data

set_constrs_decomposition!(s::AbstractMathProgSolver, data::Array)

sends to the solver s in which subproblems are the constraints. Each element of the data array is a Tuple containing (constr_name::Symbol, constr_id::Tuple, sp_type::Symbol, sp_id::Tuple). constr_name and constr_id are the name and the index of the constraint in the JuMP model. sp_type and sp_id are the type and the index of the subproblem to which the constraint is assigned.

source
set_vars_decomposition!(s::AbstractMathProgSolver, data::Array)

sends to the solver s in which subproblems are the variables. Each element of the data array is a Tuple containing (var_name::Symbol, var_id::Tuple, sp_type::Symbol, sp_id::Tuple). var_name and var_id are the name and the index of the variable in the JuMP model. sp_type and sp_id are the type and the index of the subproblem to which the variable is assigned.

source

BlockDecomposition creates the decomposition list for both constraints and variables regardless of the type of decomposition used. Types of subproblem are :

Additional data to the decomposition

set_oracles!(s::AbstractMathProgSolver, oracles::Array)

sends to the solver s the list with subproblems and oracles functions. Each element of the oracles array is a Tuple containing (sp_id::Tuple, sp_type::Symbol, oracle::Function) with oracle, the function defined by the user.

source
set_sp_mult!(s::AbstractMathProgSolver, multiplicities::Array)

sends to the solver s the multiplicity of each subproblem. Each element of the multiplicities array is a Tuple containing (sp_id::Tuple, sp_type::Symbol, mult_lb, mult_ub) with mult_lb the lower bound of the multiplicity and mult_ub the upper bound of the multiplicity.

source
set_sp_prio!(s::AbstractMathProgSolver, priorities::Array)

sends to the solver s the list of subproblem priorities. Each element of the data array is a Tuple containing (sp_id::Tuple, sp_type::Symbol, sp_prio).

source
set_var_branching_prio!(s::AbstractMathProgSolver, priorities::Array)

sends to the solver s the list of variables branching priorities. The number stored at the row i is the branching priority of the variable stored at the column i in the JuMP model.

source
set_branching_rules!(s::AbstractMathProgSolver, rules::Dict{Symbol, Any})

sends to the solver s a Dictionary rules. The key is the name of the branching rule and the content is an array of branching instances. The array contains Tuple of variables name and parameters. Parameters are stored in an array of tuple (name_of_parameter, value_of_parameter).

For instance,

rules = (:branching_rule_name => [(:x, [(:priority, 1)]), (:y, [(:priority, 1)])])

Names of branching rules depend on solvers.

source

Additional data to the model

set_objective_bounds_and_magnitude!(s::AbstractMathProgSolver, magn, lb, ub)

sends to the solver s the magnitude magn, the lower bound lb and the upper bound ub of the objective function.

source

Send to the solver s the magnitude magn, the lower bound lb and the upper bound ub of the objective function.

Costs and solutions

getcurrentcost(m::AbstractMathProgModel, vcol::Integer)

returns the current cost of the vcol ${}^{th}$ variable.

source
getdisaggregatedvalueofvariable(m::AbstractMathProgModel, vcol::Integer)

returns the disaggregated value of the vcol ${}^{th}$ variable.

source

Oracle solver

set_oraclesolution_solution(o::OracleSolverData, x::JuMP.Variable, v::Real)

Set the value of the variable x to v in the oracle solver solution stored in the OracleSolverData object o.

source
set_oraclesolution_objval(o::OracleSolverData, v::Real)

Sets the objective value stored in the OracleSolverData object o to v.

source
set_oraclesolution_newsolution(o::OracleSolverData)

creates a new solution in the oracle solver solution. It is usefull, if the user wants to return several solutions.

source
get_oracle_phaseofstageapproach(o::OracleSolverData)

Returns the phase of stage approach.

source