Types
KidneyExchange.BP_info — Typemutable struct BP_infoMutable structure where extra information about the branch-and-price execution is stored
Fields
LB::Float64: best primal valueUB::Float64: best dual valuenb_col_root::Int: number of columns generated at root node
KidneyExchange.BP_params — Typemutable struct BP_paramsMutable structure where the options of the branch-and-price solver are stored
Fields
optimizer::String: LP and IP solver that will be used to solve the master (default is HiGHS)verbose::Bool: true if messages are printed during the solution (default = true)is_pief::Bool: true if the chains are considered in the master model using a position-indexed extended edge formulation (default = false)fvs::Bool: true if a feedback vertex set is used to reduce the number of graph copies (default = true)reduce_vertices::Bool: true if we try deleting useless vertices in graph copies (default = true)is_column_disjoint::Bool: true if we require column disjoint columns at each column generation iteration (default = true)max_intersecting_columns::Int: true maximum number of generated columns covering each vertex (default = 6)is_tabu_list::Bool: true if we stop solving a subproblem as soon as it does not produce any positive cost column; this subproblem will be considered again when proving optimality (default = true)solve_master_IP::Bool: true if we solve the master IP to find feasible solutions (default = true)time_limit_master_IP::Float64: time limit (seconds) at each solution of the master IP (default = 10.0)freq_solve_master_IP::Int: number of new columns that must be added in the master IP between two solutions of this IP (default = 1)restart_for_IP::Bool: true if the root node can be solved twice to generate more columns when the IP master could not prove optimality of the relaxation value (default = true)nb_threads::Int: if the LP and IP solver can be called on multiple threads, specify the maximum number of threads that will be used.
KidneyExchange.BP_status — Typemutable struct BP_statusMutable structure where the results of the branch-and-price are stored
Fields
bp_info::BP_info: extra info about the branch-and-price executionstatus::String: status of solution: ONGOING, OPTIMAL or TIMELIMITobjective_value::Float64: objective value of the best solution foundrelative_gap::Float64: final relative optimality gapbest_cycles::Vector{Vector{Int}}: selected cycles in the best primal valuebest_chains::Vector{Vector{Int}}: selected chains in the best primal valuenode_count::Int: total number of branch-and-bound nodes explored during the solution processolve_time::Float64: time spent in the solution process; this might be different from the specified time limit even if status is TIME_LIMIT, since parsing and preprocessing is counted in cpu timenb_cols_last_ip::Int: number of columns in the master IP at last solution
KidneyExchange.Graph_copies — Typemutable struct Graph_copiesMutable structure describing the copies of the graph: one copy per vertex or one copy per vertex of a feedback vertex set if the option is set. It is important to note that the copies related to altruist donors always appear first in the list of copies
Fields
sources::Vector{Int}: source of each graph copyis_vertex_list::Vector{BitVector}: for each copy and each vertex, true if the vertex belongs to the copyd_to_vstar_list::Vector{Vector{Int}}: in each copy, distance from each vertex to the sourced_from_vstar_list::Vector{Vector{Int}}: in each copy, distance from each vertex to the sourcenb_copies::Int: number of graph copiesis_arc_list::Vector{BitVector}: for each copy and each arc index, true if the arc appears in the copychain_mip::Model: shared MIP model that will be solved every time a chain subproblem needs to be solved to optimality
KidneyExchange.Graph_info — Typemutable struct Graph_infoKidneyExchange.Instance — Typestruct InstanceNon-mutable structure describing the instance that is solved
Fields
graph::SimpleDiGraph: graph describing compatibilities between pairs and with altruist donorsvertex_weight::Vector{Float64}: weight of each vertexedge_weight::Matrix{Float64}: weight of each arc (0 if there is no arc)pairs::Vector{Int}: indices of the donor/patient pair verticesaltruists::Vector{Int}: indices of the altruist donor verticesnb_pairs::Int: number of donor/patient pairsnb_altruists::Int: number of altruist donorsmax_cycle_length::Int: maximum length of a feasible exchange cyclemax_chain_length::Int: maximum length of a feasible exchange chainis_vertex_weighted::Bool: true if all weights are actually on the vertices
KidneyExchange.MIP_params — Typemutable struct MIP_paramsMutable structure where the solving options of the compact formulation are stored
Fields
optimizer::String: LP and IP solver that will be used to solve the master (default is HiGHS for IPs and LPs)verbose::Bool: true if messages are printed during the solution (default = true)model_type::Mip_model: type of MIP compact model that is to be solved (default = HPIEF)fvs::Bool: true if a feedback vertex set is used to reduce the number of graph copies (default = true)reduce_vertices::Bool: true if we try deleting useless arcs in graph copies (default = true)reduce_arcs::Bool: true if we try deleting useless arcs in graph copies (default = true)symmetry_break::Bool: true if the MIP model is modified to reduce the number of optimal solutions (default = true)nb_threads::Int: if the LP and IP solver can be called on multiple threads, specify the maximum number of threads that will be used.
KidneyExchange.Mip_model — TypeMip_model
Enumerated structure specifying the considered formulation when solving a compact formulation of the kidney exchange problem
Enumerate values
HPIEF: Hybrid position-indexed extended formulationEXTENDED_EDGE: Cycles are handled with an extended edge formulation and chains are handled with position-indexed variablesCYCLE_CUT: Cycles are handled with an extended edge formulation and chains are handled with cycle cuts to avoid long cyclesRELAXED_ARC: Arc formulation where the size of cycles and chains are not considered
KidneyExchange.PoolGenerator — Typemutable struct PoolGeneratorCompatibility graph generator based on Saidman et al. (2006)
This is known colloquially as the "Saidman Generator".
KidneyExchange.Solution_status — Typemutable struct Solution_statusKidneyExchange.Subgraph_info — Typemutable struct Subgraph_infoKidneyExchange.VertexAltruist — Typestruct VertexAltruist <: KidneyExchange.VertexKidneyExchange.VertexPair — Typestruct VertexPair <: KidneyExchange.Vertex