DualDecomposition.DualDecomposition
— ModuleDualDecomposition
This module implements a block model for dual Decomposition and Lagrangian dual method for solving the block model. Applications of the dual Decomposition include stochastic programming, temporal decomposition, and network decomposition.
DualDecomposition.AbstractBlockModel
— TypeBlockModel
Block model struture contrains a set of JuMP.Model
objects, each of which represents a sub-block model with the information of how to couple these block models.
DualDecomposition.AbstractLagrangeMaster
— TypeAbstractLagrangeMaster
Abstract type of Lagrangian master methods
DualDecomposition.BundleMaster
— TypeBundleMaster
Bundle method implementation of Lagrangian master method. This simply uses BundleMethod.jl package.
Arguments
constructor
: struct for bundle methodoptimizer
: optimization solver for bundle masterinner
: bundle method object
DualDecomposition.CouplingVariableKey
— TypeCouplingVariableKey
Key to map oupling variables. block_id
identifies the problem block containing the variable, and coupling_id
identifies a set of variables whose values are equal.
DualDecomposition.CouplingVariableRef
— TypeCouplingVariableRef
Coupling variable reference with key::CouplingVariableKey
.
DualDecomposition.SubgradientMaster
— TypeSubgradientMaster
Implementation of projected subgradient method
DualDecomposition.add_block_model!
— Methodadd_block_model!
Add block model model
to block_model::AbstractBlockModel
with block_id
.
DualDecomposition.add_constraints!
— Methodadd_constraints!
This function is to add any constraints to the master problem.
Arguments
LD
: Lagrangian dualmethod
: Lagrangian master
DualDecomposition.adjust_objective_function!
— MethodThis adjusts the objective function of each Lagrangian subproblem.
DualDecomposition.block_model
— Methodblock_model
This returns a JuMP.Model
object for a given block_id
.
DualDecomposition.block_model
— Methodblock_model
This returns a dictionary of JuMP.Model
objects.
DualDecomposition.block_solutions
— Methodblock_solutions
This returns a dictionary of JuMP.VariableRef
solutions.
DualDecomposition.coupling_variables
— Methodcoupling_variables
This returns the array of coupling variables in block_model::AbstractBlockModel
.
DualDecomposition.dual_objective_value
— Methoddual_objective_value
This returns the dual objective value obtained from a method.
DualDecomposition.dual_solution
— Methoddual_solution
This returns a vector of dual solution obtained from a method.
DualDecomposition.get_objective
— Methodget_objective
This returns the objective function value.
Arguments
method
: Lagrangian master
DualDecomposition.get_solution
— Methodget_solution
This returns the Lagrangian master solution.
Arguments
method
: Lagrangian master
DualDecomposition.get_times
— Methodget_times
This returns the solution times of Lagrangian master for all iterations.
Arguments
method
: Lagrangian master
DualDecomposition.has_block_model
— Methodhas_block_model
This returns true if block_model::AbstractBlockModel
has key block_id::Integer
; false otherwise.
DualDecomposition.load!
— Methodload!
This function loads the Lagrangian dual problem to the master.
Arguments
method
: Lagrangian master methodnum_coupling_variables
: number of coupling variablesnum_blocks
: number of blocks (or Lagrangian subproblems)eval_function
: function pointer to evalute Lagrangian dual functionsinit_sol
: initial solution of the Lagrangian master
DualDecomposition.num_blocks
— Methodnum_blocks
Number of blocks in block_model::AbstractBlockModel
DualDecomposition.num_coupling_variables
— Methodnum_coupling_variables
This returns the number of coupling variables in block_model::AbstractBlockModel
.
DualDecomposition.objective_function
— MethodWrappers of other functions
DualDecomposition.primal_objective_value
— Methodprimalobjectivevalue
This returns the best primal objective value obtained from a method.
DualDecomposition.primal_solution
— Methodprimal_solution
This returns a vector of the best primal solution obtained from a method.
DualDecomposition.reoptimize!
— MethodThis re-optimizes block models if not solved to local optimality
DualDecomposition.reset_objective_function!
— MethodThis resets the objective function of each Lagrangian subproblem.
DualDecomposition.run!
— Functionrun!
This runs the Lagrangian dual method for solving the block model.
DualDecomposition.run!
— Functionrun!
Empty function for AbstractMethod
DualDecomposition.run!
— Methodrun!
This runs the Lagrangian master method.
Arguments
method
: Lagrangian master
DualDecomposition.run!
— Methodrun!
This run a heuristic that simply fixes the coupling variable values.
DualDecomposition.run!
— Methodrun!
This run a rounding heuristic.
DualDecomposition.set_block_weights!
— Methodset_block_weights!
set the weights of the blocks that will be used by the primal heuristics
DualDecomposition.set_coupling_variables!
— Methodset_coupling_variables!
This sets coupling variables variables
to block_model::AbstractBlockModel
.
DualDecomposition.set_obj_limit!
— Methodsetobjlimit!
This sets the Lagrangian bound limit.
Arguments
method
: Lagrangian masterval
: objective limit value
DualDecomposition.set_variables_by_couple!
— Methodset_variables_by_couple!
This sets BlockModel.variables_by_couple
.
DualDecomposition.solve_sub_block!
— MethodThis wraps the steps to optimize a block problem.
DualDecomposition.write_file!
— Methodwrite_file!
This function writes a vector to a file.
Arguments
v
: vector to writename
: file namedir
: optional argument to give path to the file