diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..7321bc6d --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 2235ec6bcef007102f03f0942c5b4516 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/api/classes/branch-and-bound/BranchAndBound.doctree b/.doctrees/api/classes/branch-and-bound/BranchAndBound.doctree new file mode 100644 index 00000000..7326949e Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/BranchAndBound.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallback.doctree b/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallback.doctree new file mode 100644 index 00000000..c52722f0 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallback.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.doctree b/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.doctree new file mode 100644 index 00000000..b90009f6 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/cuts/KnapsackCover.doctree b/.doctrees/api/classes/branch-and-bound/cuts/KnapsackCover.doctree new file mode 100644 index 00000000..e653a83c Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/cuts/KnapsackCover.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/cuts/index.doctree b/.doctrees/api/classes/branch-and-bound/cuts/index.doctree new file mode 100644 index 00000000..1870de9d Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/cuts/index.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/heuristics/LocalBranching.doctree b/.doctrees/api/classes/branch-and-bound/heuristics/LocalBranching.doctree new file mode 100644 index 00000000..a4a050c1 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/heuristics/LocalBranching.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/heuristics/RENS.doctree b/.doctrees/api/classes/branch-and-bound/heuristics/RENS.doctree new file mode 100644 index 00000000..d5690647 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/heuristics/RENS.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/heuristics/SimpleRounding.doctree b/.doctrees/api/classes/branch-and-bound/heuristics/SimpleRounding.doctree new file mode 100644 index 00000000..14bc72fb Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/heuristics/SimpleRounding.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/heuristics/index.doctree b/.doctrees/api/classes/branch-and-bound/heuristics/index.doctree new file mode 100644 index 00000000..2ae5fd6c Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/heuristics/index.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/index.doctree b/.doctrees/api/classes/branch-and-bound/index.doctree new file mode 100644 index 00000000..9a33257b Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/index.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/BestBound.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/BestBound.doctree new file mode 100644 index 00000000..bf089cc6 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/BestBound.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/BestEstimate.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/BestEstimate.doctree new file mode 100644 index 00000000..fad77037 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/BestEstimate.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/BreadthFirst.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/BreadthFirst.doctree new file mode 100644 index 00000000..5aa8019d Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/BreadthFirst.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/DepthFirst.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/DepthFirst.doctree new file mode 100644 index 00000000..8310ff22 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/DepthFirst.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/WorstBound.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/WorstBound.doctree new file mode 100644 index 00000000..9bebd32c Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/WorstBound.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/node-selection/index.doctree b/.doctrees/api/classes/branch-and-bound/node-selection/index.doctree new file mode 100644 index 00000000..c69e4388 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/node-selection/index.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.doctree new file mode 100644 index 00000000..317ac8e7 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/LeastInfeasible.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/LeastInfeasible.doctree new file mode 100644 index 00000000..bf86e0fd Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/LeastInfeasible.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/MostInfeasible.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/MostInfeasible.doctree new file mode 100644 index 00000000..1e95d08e Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/MostInfeasible.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/PseudoCost.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/PseudoCost.doctree new file mode 100644 index 00000000..e9111cee Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/PseudoCost.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/StrongBranching.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/StrongBranching.doctree new file mode 100644 index 00000000..90523009 Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/StrongBranching.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/UniformlyRandom.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/UniformlyRandom.doctree new file mode 100644 index 00000000..8d33446a Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/UniformlyRandom.doctree differ diff --git a/.doctrees/api/classes/branch-and-bound/variable-selection/index.doctree b/.doctrees/api/classes/branch-and-bound/variable-selection/index.doctree new file mode 100644 index 00000000..1e6988fd Binary files /dev/null and b/.doctrees/api/classes/branch-and-bound/variable-selection/index.doctree differ diff --git a/.doctrees/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.doctree b/.doctrees/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.doctree new file mode 100644 index 00000000..c6b61f68 Binary files /dev/null and b/.doctrees/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.doctree differ diff --git a/.doctrees/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.doctree b/.doctrees/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.doctree new file mode 100644 index 00000000..dbaf3f78 Binary files /dev/null and b/.doctrees/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.doctree differ diff --git a/.doctrees/api/classes/column-and-constraint-generation/index.doctree b/.doctrees/api/classes/column-and-constraint-generation/index.doctree new file mode 100644 index 00000000..47b15b6c Binary files /dev/null and b/.doctrees/api/classes/column-and-constraint-generation/index.doctree differ diff --git a/.doctrees/api/classes/column-generation/ArtificialCosts.doctree b/.doctrees/api/classes/column-generation/ArtificialCosts.doctree new file mode 100644 index 00000000..467d7683 Binary files /dev/null and b/.doctrees/api/classes/column-generation/ArtificialCosts.doctree differ diff --git a/.doctrees/api/classes/column-generation/DantzigWolfeDecomposition.doctree b/.doctrees/api/classes/column-generation/DantzigWolfeDecomposition.doctree new file mode 100644 index 00000000..dbdea9c6 Binary files /dev/null and b/.doctrees/api/classes/column-generation/DantzigWolfeDecomposition.doctree differ diff --git a/.doctrees/api/classes/column-generation/FarkasPricing.doctree b/.doctrees/api/classes/column-generation/FarkasPricing.doctree new file mode 100644 index 00000000..d0b86b08 Binary files /dev/null and b/.doctrees/api/classes/column-generation/FarkasPricing.doctree differ diff --git a/.doctrees/api/classes/column-generation/IntegerMaster.doctree b/.doctrees/api/classes/column-generation/IntegerMaster.doctree new file mode 100644 index 00000000..68677f04 Binary files /dev/null and b/.doctrees/api/classes/column-generation/IntegerMaster.doctree differ diff --git a/.doctrees/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.doctree b/.doctrees/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.doctree new file mode 100644 index 00000000..b8f7eca2 Binary files /dev/null and b/.doctrees/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.doctree differ diff --git a/.doctrees/api/classes/column-generation/index.doctree b/.doctrees/api/classes/column-generation/index.doctree new file mode 100644 index 00000000..6309ca2e Binary files /dev/null and b/.doctrees/api/classes/column-generation/index.doctree differ diff --git a/.doctrees/api/classes/column-generation/stabilization/Neame.doctree b/.doctrees/api/classes/column-generation/stabilization/Neame.doctree new file mode 100644 index 00000000..430ba44d Binary files /dev/null and b/.doctrees/api/classes/column-generation/stabilization/Neame.doctree differ diff --git a/.doctrees/api/classes/column-generation/stabilization/Wentges.doctree b/.doctrees/api/classes/column-generation/stabilization/Wentges.doctree new file mode 100644 index 00000000..34bb5cbc Binary files /dev/null and b/.doctrees/api/classes/column-generation/stabilization/Wentges.doctree differ diff --git a/.doctrees/api/classes/column-generation/stabilization/index.doctree b/.doctrees/api/classes/column-generation/stabilization/index.doctree new file mode 100644 index 00000000..b7743090 Binary files /dev/null and b/.doctrees/api/classes/column-generation/stabilization/index.doctree differ diff --git a/.doctrees/api/classes/common/Annotation.doctree b/.doctrees/api/classes/common/Annotation.doctree new file mode 100644 index 00000000..2092485c Binary files /dev/null and b/.doctrees/api/classes/common/Annotation.doctree differ diff --git a/.doctrees/api/classes/common/Column.doctree b/.doctrees/api/classes/common/Column.doctree new file mode 100644 index 00000000..8852f33b Binary files /dev/null and b/.doctrees/api/classes/common/Column.doctree differ diff --git a/.doctrees/api/classes/common/Constant.doctree b/.doctrees/api/classes/common/Constant.doctree new file mode 100644 index 00000000..2d2ffb6f Binary files /dev/null and b/.doctrees/api/classes/common/Constant.doctree differ diff --git a/.doctrees/api/classes/common/Ctr.doctree b/.doctrees/api/classes/common/Ctr.doctree new file mode 100644 index 00000000..d24f6603 Binary files /dev/null and b/.doctrees/api/classes/common/Ctr.doctree differ diff --git a/.doctrees/api/classes/common/Env.doctree b/.doctrees/api/classes/common/Env.doctree new file mode 100644 index 00000000..600f016b Binary files /dev/null and b/.doctrees/api/classes/common/Env.doctree differ diff --git a/.doctrees/api/classes/common/Expr.doctree b/.doctrees/api/classes/common/Expr.doctree new file mode 100644 index 00000000..c5160a93 Binary files /dev/null and b/.doctrees/api/classes/common/Expr.doctree differ diff --git a/.doctrees/api/classes/common/LinExpr.doctree b/.doctrees/api/classes/common/LinExpr.doctree new file mode 100644 index 00000000..2cf66eb4 Binary files /dev/null and b/.doctrees/api/classes/common/LinExpr.doctree differ diff --git a/.doctrees/api/classes/common/Model.doctree b/.doctrees/api/classes/common/Model.doctree new file mode 100644 index 00000000..0d077b43 Binary files /dev/null and b/.doctrees/api/classes/common/Model.doctree differ diff --git a/.doctrees/api/classes/common/Param.doctree b/.doctrees/api/classes/common/Param.doctree new file mode 100644 index 00000000..4b01b899 Binary files /dev/null and b/.doctrees/api/classes/common/Param.doctree differ diff --git a/.doctrees/api/classes/common/QuadExpr.doctree b/.doctrees/api/classes/common/QuadExpr.doctree new file mode 100644 index 00000000..f8ec0233 Binary files /dev/null and b/.doctrees/api/classes/common/QuadExpr.doctree differ diff --git a/.doctrees/api/classes/common/Row.doctree b/.doctrees/api/classes/common/Row.doctree new file mode 100644 index 00000000..809a2956 Binary files /dev/null and b/.doctrees/api/classes/common/Row.doctree differ diff --git a/.doctrees/api/classes/common/SolutionDual.doctree b/.doctrees/api/classes/common/SolutionDual.doctree new file mode 100644 index 00000000..970e18b7 Binary files /dev/null and b/.doctrees/api/classes/common/SolutionDual.doctree differ diff --git a/.doctrees/api/classes/common/SolutionPrimal.doctree b/.doctrees/api/classes/common/SolutionPrimal.doctree new file mode 100644 index 00000000..69735a07 Binary files /dev/null and b/.doctrees/api/classes/common/SolutionPrimal.doctree differ diff --git a/.doctrees/api/classes/common/TempCtr.doctree b/.doctrees/api/classes/common/TempCtr.doctree new file mode 100644 index 00000000..28d61f44 Binary files /dev/null and b/.doctrees/api/classes/common/TempCtr.doctree differ diff --git a/.doctrees/api/classes/common/TempVar.doctree b/.doctrees/api/classes/common/TempVar.doctree new file mode 100644 index 00000000..4cb7663d Binary files /dev/null and b/.doctrees/api/classes/common/TempVar.doctree differ diff --git a/.doctrees/api/classes/common/Var.doctree b/.doctrees/api/classes/common/Var.doctree new file mode 100644 index 00000000..486fe3c7 Binary files /dev/null and b/.doctrees/api/classes/common/Var.doctree differ diff --git a/.doctrees/api/classes/common/index.doctree b/.doctrees/api/classes/common/index.doctree new file mode 100644 index 00000000..58b31a32 Binary files /dev/null and b/.doctrees/api/classes/common/index.doctree differ diff --git a/.doctrees/api/classes/external-bilevel/MibS.doctree b/.doctrees/api/classes/external-bilevel/MibS.doctree new file mode 100644 index 00000000..f051b0b9 Binary files /dev/null and b/.doctrees/api/classes/external-bilevel/MibS.doctree differ diff --git a/.doctrees/api/classes/external-bilevel/Optimizers_MibS.doctree b/.doctrees/api/classes/external-bilevel/Optimizers_MibS.doctree new file mode 100644 index 00000000..c3dfac1c Binary files /dev/null and b/.doctrees/api/classes/external-bilevel/Optimizers_MibS.doctree differ diff --git a/.doctrees/api/classes/external-bilevel/index.doctree b/.doctrees/api/classes/external-bilevel/index.doctree new file mode 100644 index 00000000..7b4c2188 Binary files /dev/null and b/.doctrees/api/classes/external-bilevel/index.doctree differ diff --git a/.doctrees/api/classes/external-mip/GLPK.doctree b/.doctrees/api/classes/external-mip/GLPK.doctree new file mode 100644 index 00000000..e6bcdf27 Binary files /dev/null and b/.doctrees/api/classes/external-mip/GLPK.doctree differ diff --git a/.doctrees/api/classes/external-mip/Gurobi.doctree b/.doctrees/api/classes/external-mip/Gurobi.doctree new file mode 100644 index 00000000..35495cda Binary files /dev/null and b/.doctrees/api/classes/external-mip/Gurobi.doctree differ diff --git a/.doctrees/api/classes/external-mip/HiGHS.doctree b/.doctrees/api/classes/external-mip/HiGHS.doctree new file mode 100644 index 00000000..3b441cec Binary files /dev/null and b/.doctrees/api/classes/external-mip/HiGHS.doctree differ diff --git a/.doctrees/api/classes/external-mip/Mosek.doctree b/.doctrees/api/classes/external-mip/Mosek.doctree new file mode 100644 index 00000000..502ab52a Binary files /dev/null and b/.doctrees/api/classes/external-mip/Mosek.doctree differ diff --git a/.doctrees/api/classes/external-mip/Optimizers_GLPK.doctree b/.doctrees/api/classes/external-mip/Optimizers_GLPK.doctree new file mode 100644 index 00000000..8b57e630 Binary files /dev/null and b/.doctrees/api/classes/external-mip/Optimizers_GLPK.doctree differ diff --git a/.doctrees/api/classes/external-mip/Optimizers_Gurobi.doctree b/.doctrees/api/classes/external-mip/Optimizers_Gurobi.doctree new file mode 100644 index 00000000..b04b6c1d Binary files /dev/null and b/.doctrees/api/classes/external-mip/Optimizers_Gurobi.doctree differ diff --git a/.doctrees/api/classes/external-mip/Optimizers_HiGHS.doctree b/.doctrees/api/classes/external-mip/Optimizers_HiGHS.doctree new file mode 100644 index 00000000..08c9f1ee Binary files /dev/null and b/.doctrees/api/classes/external-mip/Optimizers_HiGHS.doctree differ diff --git a/.doctrees/api/classes/external-mip/Optimizers_Mosek.doctree b/.doctrees/api/classes/external-mip/Optimizers_Mosek.doctree new file mode 100644 index 00000000..aaa3ceb1 Binary files /dev/null and b/.doctrees/api/classes/external-mip/Optimizers_Mosek.doctree differ diff --git a/.doctrees/api/classes/external-mip/Osi/OsiCbc.doctree b/.doctrees/api/classes/external-mip/Osi/OsiCbc.doctree new file mode 100644 index 00000000..b3ee5d12 Binary files /dev/null and b/.doctrees/api/classes/external-mip/Osi/OsiCbc.doctree differ diff --git a/.doctrees/api/classes/external-mip/Osi/OsiClp.doctree b/.doctrees/api/classes/external-mip/Osi/OsiClp.doctree new file mode 100644 index 00000000..0a1d7ecc Binary files /dev/null and b/.doctrees/api/classes/external-mip/Osi/OsiClp.doctree differ diff --git a/.doctrees/api/classes/external-mip/Osi/OsiCplex.doctree b/.doctrees/api/classes/external-mip/Osi/OsiCplex.doctree new file mode 100644 index 00000000..d24b5a7a Binary files /dev/null and b/.doctrees/api/classes/external-mip/Osi/OsiCplex.doctree differ diff --git a/.doctrees/api/classes/external-mip/Osi/OsiSymphony.doctree b/.doctrees/api/classes/external-mip/Osi/OsiSymphony.doctree new file mode 100644 index 00000000..d549ab19 Binary files /dev/null and b/.doctrees/api/classes/external-mip/Osi/OsiSymphony.doctree differ diff --git a/.doctrees/api/classes/external-mip/Osi/index.doctree b/.doctrees/api/classes/external-mip/Osi/index.doctree new file mode 100644 index 00000000..13965117 Binary files /dev/null and b/.doctrees/api/classes/external-mip/Osi/index.doctree differ diff --git a/.doctrees/api/classes/external-mip/index.doctree b/.doctrees/api/classes/external-mip/index.doctree new file mode 100644 index 00000000..4e698d4b Binary files /dev/null and b/.doctrees/api/classes/external-mip/index.doctree differ diff --git a/.doctrees/api/classes/index.doctree b/.doctrees/api/classes/index.doctree new file mode 100644 index 00000000..8b9b7045 Binary files /dev/null and b/.doctrees/api/classes/index.doctree differ diff --git a/.doctrees/api/classes/universal-callbacks/Callback.doctree b/.doctrees/api/classes/universal-callbacks/Callback.doctree new file mode 100644 index 00000000..dfa8f7f6 Binary files /dev/null and b/.doctrees/api/classes/universal-callbacks/Callback.doctree differ diff --git a/.doctrees/api/classes/universal-callbacks/CallbackFactory.doctree b/.doctrees/api/classes/universal-callbacks/CallbackFactory.doctree new file mode 100644 index 00000000..8de93f02 Binary files /dev/null and b/.doctrees/api/classes/universal-callbacks/CallbackFactory.doctree differ diff --git a/.doctrees/api/classes/universal-callbacks/LazyCutCallback.doctree b/.doctrees/api/classes/universal-callbacks/LazyCutCallback.doctree new file mode 100644 index 00000000..9b0d5048 Binary files /dev/null and b/.doctrees/api/classes/universal-callbacks/LazyCutCallback.doctree differ diff --git a/.doctrees/api/classes/universal-callbacks/UserCutCallback.doctree b/.doctrees/api/classes/universal-callbacks/UserCutCallback.doctree new file mode 100644 index 00000000..47c7b2f8 Binary files /dev/null and b/.doctrees/api/classes/universal-callbacks/UserCutCallback.doctree differ diff --git a/.doctrees/api/classes/universal-callbacks/index.doctree b/.doctrees/api/classes/universal-callbacks/index.doctree new file mode 100644 index 00000000..7ba8f38d Binary files /dev/null and b/.doctrees/api/classes/universal-callbacks/index.doctree differ diff --git a/.doctrees/api/constants/index.doctree b/.doctrees/api/constants/index.doctree new file mode 100644 index 00000000..52b78282 Binary files /dev/null and b/.doctrees/api/constants/index.doctree differ diff --git a/.doctrees/api/constants/tolerances.doctree b/.doctrees/api/constants/tolerances.doctree new file mode 100644 index 00000000..827f41e7 Binary files /dev/null and b/.doctrees/api/constants/tolerances.doctree differ diff --git a/.doctrees/api/index.doctree b/.doctrees/api/index.doctree new file mode 100644 index 00000000..d7d179b5 Binary files /dev/null and b/.doctrees/api/index.doctree differ diff --git a/.doctrees/api/types/common/VarType.doctree b/.doctrees/api/types/common/VarType.doctree new file mode 100644 index 00000000..48df8ade Binary files /dev/null and b/.doctrees/api/types/common/VarType.doctree differ diff --git a/.doctrees/api/types/common/index.doctree b/.doctrees/api/types/common/index.doctree new file mode 100644 index 00000000..867f42fe Binary files /dev/null and b/.doctrees/api/types/common/index.doctree differ diff --git a/.doctrees/api/types/index.doctree b/.doctrees/api/types/index.doctree new file mode 100644 index 00000000..6ad84515 Binary files /dev/null and b/.doctrees/api/types/index.doctree differ diff --git a/.doctrees/api/types/universal-callbacks/CallbackEvent.doctree b/.doctrees/api/types/universal-callbacks/CallbackEvent.doctree new file mode 100644 index 00000000..b6d807d5 Binary files /dev/null and b/.doctrees/api/types/universal-callbacks/CallbackEvent.doctree differ diff --git a/.doctrees/api/types/universal-callbacks/index.doctree b/.doctrees/api/types/universal-callbacks/index.doctree new file mode 100644 index 00000000..d5e2a5dd Binary files /dev/null and b/.doctrees/api/types/universal-callbacks/index.doctree differ diff --git a/.doctrees/benchmark/index.doctree b/.doctrees/benchmark/index.doctree new file mode 100644 index 00000000..40d8caff Binary files /dev/null and b/.doctrees/benchmark/index.doctree differ diff --git a/.doctrees/developer_guide/build-the-doc.doctree b/.doctrees/developer_guide/build-the-doc.doctree new file mode 100644 index 00000000..f72b5f00 Binary files /dev/null and b/.doctrees/developer_guide/build-the-doc.doctree differ diff --git a/.doctrees/developer_guide/index.doctree b/.doctrees/developer_guide/index.doctree new file mode 100644 index 00000000..20917e68 Binary files /dev/null and b/.doctrees/developer_guide/index.doctree differ diff --git a/.doctrees/developer_guide/tests.doctree b/.doctrees/developer_guide/tests.doctree new file mode 100644 index 00000000..d1a48308 Binary files /dev/null and b/.doctrees/developer_guide/tests.doctree differ diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 00000000..560a3844 Binary files /dev/null and b/.doctrees/environment.pickle differ diff --git a/.doctrees/examples/bilevel-problem.doctree b/.doctrees/examples/bilevel-problem.doctree new file mode 100644 index 00000000..f707e88c Binary files /dev/null and b/.doctrees/examples/bilevel-problem.doctree differ diff --git a/.doctrees/examples/facility-location-problem.doctree b/.doctrees/examples/facility-location-problem.doctree new file mode 100644 index 00000000..ecfd6a27 Binary files /dev/null and b/.doctrees/examples/facility-location-problem.doctree differ diff --git a/.doctrees/examples/generalized-assignment-problem.doctree b/.doctrees/examples/generalized-assignment-problem.doctree new file mode 100644 index 00000000..0d3751bb Binary files /dev/null and b/.doctrees/examples/generalized-assignment-problem.doctree differ diff --git a/.doctrees/examples/index.doctree b/.doctrees/examples/index.doctree new file mode 100644 index 00000000..e5af2f8a Binary files /dev/null and b/.doctrees/examples/index.doctree differ diff --git a/.doctrees/examples/knapsack-problem.doctree b/.doctrees/examples/knapsack-problem.doctree new file mode 100644 index 00000000..828849df Binary files /dev/null and b/.doctrees/examples/knapsack-problem.doctree differ diff --git a/.doctrees/faq/index.doctree b/.doctrees/faq/index.doctree new file mode 100644 index 00000000..8ab19850 Binary files /dev/null and b/.doctrees/faq/index.doctree differ diff --git a/.doctrees/faq/mosek-and-eigen.doctree b/.doctrees/faq/mosek-and-eigen.doctree new file mode 100644 index 00000000..072c994c Binary files /dev/null and b/.doctrees/faq/mosek-and-eigen.doctree differ diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 00000000..94f3afec Binary files /dev/null and b/.doctrees/index.doctree differ diff --git a/.doctrees/installation/global-installation/index.doctree b/.doctrees/installation/global-installation/index.doctree new file mode 100644 index 00000000..641b86a2 Binary files /dev/null and b/.doctrees/installation/global-installation/index.doctree differ diff --git a/.doctrees/installation/global-installation/linking.doctree b/.doctrees/installation/global-installation/linking.doctree new file mode 100644 index 00000000..61cfc7b6 Binary files /dev/null and b/.doctrees/installation/global-installation/linking.doctree differ diff --git a/.doctrees/installation/index.doctree b/.doctrees/installation/index.doctree new file mode 100644 index 00000000..064bd5ab Binary files /dev/null and b/.doctrees/installation/index.doctree differ diff --git a/.doctrees/installation/local_installation.doctree b/.doctrees/installation/local_installation.doctree new file mode 100644 index 00000000..40b652a5 Binary files /dev/null and b/.doctrees/installation/local_installation.doctree differ diff --git a/.doctrees/installation/options.doctree b/.doctrees/installation/options.doctree new file mode 100644 index 00000000..e2aab218 Binary files /dev/null and b/.doctrees/installation/options.doctree differ diff --git a/.doctrees/references.doctree b/.doctrees/references.doctree new file mode 100644 index 00000000..3c727a54 Binary files /dev/null and b/.doctrees/references.doctree differ diff --git a/.doctrees/tutorials/bilevel-optimization/index.doctree b/.doctrees/tutorials/bilevel-optimization/index.doctree new file mode 100644 index 00000000..c4623c61 Binary files /dev/null and b/.doctrees/tutorials/bilevel-optimization/index.doctree differ diff --git a/.doctrees/tutorials/bilevel-optimization/modeling/index.doctree b/.doctrees/tutorials/bilevel-optimization/modeling/index.doctree new file mode 100644 index 00000000..3897adef Binary files /dev/null and b/.doctrees/tutorials/bilevel-optimization/modeling/index.doctree differ diff --git a/.doctrees/tutorials/bilevel-optimization/modeling/mibs.doctree b/.doctrees/tutorials/bilevel-optimization/modeling/mibs.doctree new file mode 100644 index 00000000..f66ee38b Binary files /dev/null and b/.doctrees/tutorials/bilevel-optimization/modeling/mibs.doctree differ diff --git a/.doctrees/tutorials/bilevel-optimization/modeling/optimistic.doctree b/.doctrees/tutorials/bilevel-optimization/modeling/optimistic.doctree new file mode 100644 index 00000000..2f604d1a Binary files /dev/null and b/.doctrees/tutorials/bilevel-optimization/modeling/optimistic.doctree differ diff --git a/.doctrees/tutorials/index.doctree b/.doctrees/tutorials/index.doctree new file mode 100644 index 00000000..cf7c72c5 Binary files /dev/null and b/.doctrees/tutorials/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.doctree new file mode 100644 index 00000000..958237e9 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-callback.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-callback.doctree new file mode 100644 index 00000000..71889e4d Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-callback.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.doctree new file mode 100644 index 00000000..8e7d6b02 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node.doctree new file mode 100644 index 00000000..ffbc891f Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/create-node.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/index.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/index.doctree new file mode 100644 index 00000000..99cca3b8 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.doctree new file mode 100644 index 00000000..62210051 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.doctree b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.doctree new file mode 100644 index 00000000..9e3020df Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.doctree new file mode 100644 index 00000000..44a59571 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.doctree new file mode 100644 index 00000000..2c2c54ba Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/index.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/index.doctree new file mode 100644 index 00000000..7fee34c1 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.doctree new file mode 100644 index 00000000..526a1132 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.doctree new file mode 100644 index 00000000..2cef8bcb Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.doctree new file mode 100644 index 00000000..6d2a43ce Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.doctree new file mode 100644 index 00000000..c2b3032a Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.doctree new file mode 100644 index 00000000..481f121c Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.doctree new file mode 100644 index 00000000..7357e648 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.doctree b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.doctree new file mode 100644 index 00000000..941a652b Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/index.doctree b/.doctrees/tutorials/mixed-integer-programming/index.doctree new file mode 100644 index 00000000..8b089c25 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/constraints.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/constraints.doctree new file mode 100644 index 00000000..03b860e6 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/constraints.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/environment.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/environment.doctree new file mode 100644 index 00000000..b1514210 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/environment.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/expressions.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/expressions.doctree new file mode 100644 index 00000000..d674c56d Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/expressions.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/index.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/index.doctree new file mode 100644 index 00000000..5568cc28 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/models.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/models.doctree new file mode 100644 index 00000000..ef7461cb Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/models.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/objective-function.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/objective-function.doctree new file mode 100644 index 00000000..29a50676 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/objective-function.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/modeling/variables.doctree b/.doctrees/tutorials/mixed-integer-programming/modeling/variables.doctree new file mode 100644 index 00000000..fc3fdfbb Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/modeling/variables.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/access-optimizer.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/access-optimizer.doctree new file mode 100644 index 00000000..63060525 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/access-optimizer.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/create-optimizer.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/create-optimizer.doctree new file mode 100644 index 00000000..86f1b53f Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/create-optimizer.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/create-universal-callback.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/create-universal-callback.doctree new file mode 100644 index 00000000..407440de Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/create-universal-callback.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/index.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/index.doctree new file mode 100644 index 00000000..5e7ab9a5 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/index.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/solving.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/solving.doctree new file mode 100644 index 00000000..1e1d9676 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/solving.doctree differ diff --git a/.doctrees/tutorials/mixed-integer-programming/optimizers/universal-callbacks.doctree b/.doctrees/tutorials/mixed-integer-programming/optimizers/universal-callbacks.doctree new file mode 100644 index 00000000..f35807b2 Binary files /dev/null and b/.doctrees/tutorials/mixed-integer-programming/optimizers/universal-callbacks.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/index.doctree b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/index.doctree new file mode 100644 index 00000000..aaffabbc Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/index.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.doctree b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.doctree new file mode 100644 index 00000000..ea3f5a37 Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.doctree b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.doctree new file mode 100644 index 00000000..141dee1c Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.doctree b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.doctree new file mode 100644 index 00000000..fa1432a2 Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/index.doctree b/.doctrees/tutorials/robust-optimization/index.doctree new file mode 100644 index 00000000..38b73832 Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/index.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/modeling/index.doctree b/.doctrees/tutorials/robust-optimization/modeling/index.doctree new file mode 100644 index 00000000..622b6a6e Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/modeling/index.doctree differ diff --git a/.doctrees/tutorials/robust-optimization/modeling/two-stage-robust.doctree b/.doctrees/tutorials/robust-optimization/modeling/two-stage-robust.doctree new file mode 100644 index 00000000..6311e7fe Binary files /dev/null and b/.doctrees/tutorials/robust-optimization/modeling/two-stage-robust.doctree differ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_sources/api/classes/branch-and-bound/BranchAndBound.rst.txt b/_sources/api/classes/branch-and-bound/BranchAndBound.rst.txt new file mode 100644 index 00000000..b44abddf --- /dev/null +++ b/_sources/api/classes/branch-and-bound/BranchAndBound.rst.txt @@ -0,0 +1,31 @@ +.. _api_BranchAndBound: + +BranchAndBound +============== + +This class is an optimizer factory which creates a new branch-and-bound algorithm. +It can be used to create customized branch-and-bound algorithms with a large degree of freedom. + +.. seealso:: + + If you are not familiar with optimizers and optimizer factories, please refer to :ref:`this page `. + +.. admonition:: Example + + Here, we create a simple branch-and-bound algorithm where branching is done on integer variables which are being + relaxed. Each node is solved by the external solver GLPK. Nodes are selected according to the "best-bound" + rule while variables are selected according to the "most-infeasible" branching rule. + + The created algorithm also incorporates sub-tree exploration of maximum depth 2. + + .. code-block:: + + model.use( + BranchAndBound() + .with_node_optimizer( GLPK::ContinuousRelaxation() ) + .with_branching_rule( MostInfeasible() ) + .with_node_selection_rule( BestBound() ) + .with_subtree_depth(2) + ); + +.. doxygenclass:: idol::BranchAndBound diff --git a/_sources/api/classes/branch-and-bound/BranchAndBoundCallback.rst.txt b/_sources/api/classes/branch-and-bound/BranchAndBoundCallback.rst.txt new file mode 100644 index 00000000..52c6f174 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/BranchAndBoundCallback.rst.txt @@ -0,0 +1,72 @@ +BranchAndBoundCallback +====================== + +This class can be used to create callbacks to run on idol's :ref:`branch-and-bound implementation `. + +.. warning:: + + BranchAndBoundCallback-s is an *advanced* feature. + + Please, make sure that what you are trying do cannot be done with + a :ref:`solver-independent callback ` first, or with pre-existing callbacks, e.g., + :ref:`UserCutCallback ` or :ref:`LazyCutCallback `. + + The advantage of using a :ref:`BranchAndBoundCallback ` instead of a standard + solver-independent :ref:`Callback ` lies in the possibility to access specific information regarding + the execution of the branch-and-bound algorithm. For instance, accessing a node's information, or the current + relaxation model being solved. + +.. admonition:: Example + + Here is an example of callback which prints out the event triggering it and, when the event corresponds to `NodeLoaded`, + prints the node's model to be solved. + + .. code-block:: + + class MyCallback : public BranchAndBoundCallbackFactory { + public: + class Strategy : public BranchAndBoundCallback { + protected: + void operator()(CallbackEvent t_event) override { + + std::cout << "MyCallback is called for " << t_event << std::endl; + + if (t_event != NodeLoaded) { + return; + } + + std::cout << "The problem being solve at node " << node().id() << std::endl; + std::cout << relaxation() << std::endl; + + } + }; + + BranchAndBoundCallback *operator()() override { + return new Strategy(); + } + + [[nodiscard]] BranchAndBoundCallbackFactory *clone() const override { + return new MyCallback(*this); + } + }; + + Then, this callback can be used as follows. + + .. code-block:: + + model.use( + BranchAndBound() + .with_node_optimizer(GLPK::ContinuousRelaxation()) + .with_branching_rule(MostInfeasible()) + .with_node_selection_rule(DepthFirst()) + .with_callback(MyCallback()); + ); + +.. hint:: + + By default, most of the objects returned by BranchAndBoundCallback methods are const. If you wish to access non-const + versions (e.g., if you want to perform non-standard updates to the relaxed model or want to change the node's current + information manually), you should use the advanced interface obtained by calling ``BranchAndBoundCallback::advanced_interface``. + +.. doxygenclass:: idol::BranchAndBoundCallback + :protected-members: diff --git a/_sources/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.rst.txt b/_sources/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.rst.txt new file mode 100644 index 00000000..a94a06f9 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.rst.txt @@ -0,0 +1,5 @@ +BranchAndBoundCallbackFactory +============================= + +.. doxygenclass:: idol::BranchAndBoundCallbackFactory + :protected-members: diff --git a/_sources/api/classes/branch-and-bound/cuts/KnapsackCover.rst.txt b/_sources/api/classes/branch-and-bound/cuts/KnapsackCover.rst.txt new file mode 100644 index 00000000..44d2fb60 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/cuts/KnapsackCover.rst.txt @@ -0,0 +1,4 @@ +Cuts::KnapsackCover +=================== + +.. doxygenclass:: idol::Cuts::KnapsackCover diff --git a/_sources/api/classes/branch-and-bound/cuts/index.rst.txt b/_sources/api/classes/branch-and-bound/cuts/index.rst.txt new file mode 100644 index 00000000..4ff9d8fa --- /dev/null +++ b/_sources/api/classes/branch-and-bound/cuts/index.rst.txt @@ -0,0 +1,10 @@ +Cutting Planes +============== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + + diff --git a/_sources/api/classes/branch-and-bound/heuristics/LocalBranching.rst.txt b/_sources/api/classes/branch-and-bound/heuristics/LocalBranching.rst.txt new file mode 100644 index 00000000..37c62452 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/heuristics/LocalBranching.rst.txt @@ -0,0 +1,4 @@ +Heuristics::LocalBranching +========================== + +.. doxygenclass:: idol::Heuristics::LocalBranching diff --git a/_sources/api/classes/branch-and-bound/heuristics/RENS.rst.txt b/_sources/api/classes/branch-and-bound/heuristics/RENS.rst.txt new file mode 100644 index 00000000..3b951da0 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/heuristics/RENS.rst.txt @@ -0,0 +1,4 @@ +Heuristics::RENS +================ + +.. doxygenclass:: idol::Heuristics::RENS diff --git a/_sources/api/classes/branch-and-bound/heuristics/SimpleRounding.rst.txt b/_sources/api/classes/branch-and-bound/heuristics/SimpleRounding.rst.txt new file mode 100644 index 00000000..0a0e0e74 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/heuristics/SimpleRounding.rst.txt @@ -0,0 +1,4 @@ +Heuristics::SimpleRounding +========================== + +.. doxygenclass:: idol::Heuristics::SimpleRounding diff --git a/_sources/api/classes/branch-and-bound/heuristics/index.rst.txt b/_sources/api/classes/branch-and-bound/heuristics/index.rst.txt new file mode 100644 index 00000000..d59a952f --- /dev/null +++ b/_sources/api/classes/branch-and-bound/heuristics/index.rst.txt @@ -0,0 +1,10 @@ +Heuristics +========== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + + diff --git a/_sources/api/classes/branch-and-bound/index.rst.txt b/_sources/api/classes/branch-and-bound/index.rst.txt new file mode 100644 index 00000000..63035c91 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/index.rst.txt @@ -0,0 +1,12 @@ +Branch-and-Bound Algorithm +========================== + +.. toctree:: + :maxdepth: 2 + :glob: + + * + variable-selection/index + node-selection/index + heuristics/index + cuts/index diff --git a/_sources/api/classes/branch-and-bound/node-selection/BestBound.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/BestBound.rst.txt new file mode 100644 index 00000000..466ba897 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/BestBound.rst.txt @@ -0,0 +1,4 @@ +BestBound +========= + +.. doxygenclass:: idol::BestBound diff --git a/_sources/api/classes/branch-and-bound/node-selection/BestEstimate.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/BestEstimate.rst.txt new file mode 100644 index 00000000..7242d970 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/BestEstimate.rst.txt @@ -0,0 +1,6 @@ +BestEstimate +============ + +The "best estimate" node selection rule was introduced in *J. J. H. Forrest, J. P. H. Hirst, J. A. Tomlin, (1974) Practical Solution of Large Mixed Integer Programming Problems with Umpire. Management Science 20(5):736-773*. + +.. doxygenclass:: idol::BestEstimate diff --git a/_sources/api/classes/branch-and-bound/node-selection/BreadthFirst.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/BreadthFirst.rst.txt new file mode 100644 index 00000000..f579e0ba --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/BreadthFirst.rst.txt @@ -0,0 +1,4 @@ +BreadthFirst +============ + +.. doxygenclass:: idol::BreadthFirst diff --git a/_sources/api/classes/branch-and-bound/node-selection/DepthFirst.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/DepthFirst.rst.txt new file mode 100644 index 00000000..31c0f920 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/DepthFirst.rst.txt @@ -0,0 +1,4 @@ +DepthFirst +========== + +.. doxygenclass:: idol::DepthFirst diff --git a/_sources/api/classes/branch-and-bound/node-selection/WorstBound.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/WorstBound.rst.txt new file mode 100644 index 00000000..3e009532 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/WorstBound.rst.txt @@ -0,0 +1,4 @@ +WorstBound +========== + +.. doxygenclass:: idol::WorstBound diff --git a/_sources/api/classes/branch-and-bound/node-selection/index.rst.txt b/_sources/api/classes/branch-and-bound/node-selection/index.rst.txt new file mode 100644 index 00000000..09ffa958 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/node-selection/index.rst.txt @@ -0,0 +1,10 @@ +Node Selection Rules +==================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + + diff --git a/_sources/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.rst.txt new file mode 100644 index 00000000..1723395c --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.rst.txt @@ -0,0 +1,4 @@ +FirstInfeasibleFound +==================== + +.. doxygenclass:: idol::FirstInfeasibleFound diff --git a/_sources/api/classes/branch-and-bound/variable-selection/LeastInfeasible.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/LeastInfeasible.rst.txt new file mode 100644 index 00000000..84dc1d37 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/LeastInfeasible.rst.txt @@ -0,0 +1,4 @@ +LeastInfeasible +=============== + +.. doxygenclass:: idol::LeastInfeasible diff --git a/_sources/api/classes/branch-and-bound/variable-selection/MostInfeasible.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/MostInfeasible.rst.txt new file mode 100644 index 00000000..e47c57c9 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/MostInfeasible.rst.txt @@ -0,0 +1,4 @@ +MostInfeasible +============== + +.. doxygenclass:: idol::MostInfeasible diff --git a/_sources/api/classes/branch-and-bound/variable-selection/PseudoCost.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/PseudoCost.rst.txt new file mode 100644 index 00000000..2ccb7772 --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/PseudoCost.rst.txt @@ -0,0 +1,4 @@ +PseudoCost +========== + +.. doxygenclass:: idol::PseudoCost diff --git a/_sources/api/classes/branch-and-bound/variable-selection/StrongBranching.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/StrongBranching.rst.txt new file mode 100644 index 00000000..8c96f18c --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/StrongBranching.rst.txt @@ -0,0 +1,4 @@ +StrongBranching +=============== + +.. doxygenclass:: idol::StrongBranching diff --git a/_sources/api/classes/branch-and-bound/variable-selection/UniformlyRandom.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/UniformlyRandom.rst.txt new file mode 100644 index 00000000..a34f4a6c --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/UniformlyRandom.rst.txt @@ -0,0 +1,4 @@ +UniformlyRandom +=============== + +.. doxygenclass:: idol::UniformlyRandom diff --git a/_sources/api/classes/branch-and-bound/variable-selection/index.rst.txt b/_sources/api/classes/branch-and-bound/variable-selection/index.rst.txt new file mode 100644 index 00000000..3d0a084c --- /dev/null +++ b/_sources/api/classes/branch-and-bound/variable-selection/index.rst.txt @@ -0,0 +1,10 @@ +Branching Rules +=============== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + + diff --git a/_sources/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.rst.txt b/_sources/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.rst.txt new file mode 100644 index 00000000..afe09bfa --- /dev/null +++ b/_sources/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.rst.txt @@ -0,0 +1,6 @@ +.. _api_Robust_ColumnAndConstraintGeneration_doxygen: + +Robust::ColumnAndConstraintGeneration +===================================== + +.. doxygenclass:: idol::Robust::ColumnAndConstraintGeneration diff --git a/_sources/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.rst.txt b/_sources/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.rst.txt new file mode 100644 index 00000000..b0b7d157 --- /dev/null +++ b/_sources/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.rst.txt @@ -0,0 +1,4 @@ +Optimizers::Robust::ColumnAndConstraintGeneration +================================================= + +.. doxygenclass:: idol::Optimizers::Robust::ColumnAndConstraintGeneration diff --git a/_sources/api/classes/column-and-constraint-generation/index.rst.txt b/_sources/api/classes/column-and-constraint-generation/index.rst.txt new file mode 100644 index 00000000..3808c7a1 --- /dev/null +++ b/_sources/api/classes/column-and-constraint-generation/index.rst.txt @@ -0,0 +1,8 @@ +Column-and-Constraint Generation Algorithm +========================================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/api/classes/column-generation/ArtificialCosts.rst.txt b/_sources/api/classes/column-generation/ArtificialCosts.rst.txt new file mode 100644 index 00000000..6fbeae5c --- /dev/null +++ b/_sources/api/classes/column-generation/ArtificialCosts.rst.txt @@ -0,0 +1,4 @@ +DantzigWolfe::ArtificialCosts +============================= + +.. doxygenclass:: idol::DantzigWolfe::ArtificialCosts diff --git a/_sources/api/classes/column-generation/DantzigWolfeDecomposition.rst.txt b/_sources/api/classes/column-generation/DantzigWolfeDecomposition.rst.txt new file mode 100644 index 00000000..918445ae --- /dev/null +++ b/_sources/api/classes/column-generation/DantzigWolfeDecomposition.rst.txt @@ -0,0 +1,9 @@ +DantzigWolfeDecomposition +========================= + +.. hint:: + + This page documents on the `DantzigWolfeDecomposition` optimizer factory. Note that there are also + :ref:`Dantzig-Wolfe Decomposition tutorials `. + +.. doxygenclass:: idol::DantzigWolfeDecomposition diff --git a/_sources/api/classes/column-generation/FarkasPricing.rst.txt b/_sources/api/classes/column-generation/FarkasPricing.rst.txt new file mode 100644 index 00000000..1de6106c --- /dev/null +++ b/_sources/api/classes/column-generation/FarkasPricing.rst.txt @@ -0,0 +1,4 @@ +DantzigWolfe::FarkasPricing +=========================== + +.. doxygenclass:: idol::DantzigWolfe::FarkasPricing diff --git a/_sources/api/classes/column-generation/IntegerMaster.rst.txt b/_sources/api/classes/column-generation/IntegerMaster.rst.txt new file mode 100644 index 00000000..caa0f997 --- /dev/null +++ b/_sources/api/classes/column-generation/IntegerMaster.rst.txt @@ -0,0 +1,9 @@ +Heuristics::IntegerMaster +========================= + +.. warning:: + + This heuristic can only be used with a :code:`BranchAndBound` optimizer in which nodes are solved by + :code:`DantzigWolfeDecomposition`. + +.. doxygenclass:: idol::Heuristics::IntegerMaster diff --git a/_sources/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.rst.txt b/_sources/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.rst.txt new file mode 100644 index 00000000..5fb77aee --- /dev/null +++ b/_sources/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.rst.txt @@ -0,0 +1,4 @@ +Optimizers::DantzigWolfeDecomposition +===================================== + +.. doxygenclass:: idol::Optimizers::DantzigWolfeDecomposition diff --git a/_sources/api/classes/column-generation/index.rst.txt b/_sources/api/classes/column-generation/index.rst.txt new file mode 100644 index 00000000..dca08d98 --- /dev/null +++ b/_sources/api/classes/column-generation/index.rst.txt @@ -0,0 +1,10 @@ +Column Generation Algorithm +=========================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + stabilization/index + diff --git a/_sources/api/classes/column-generation/stabilization/Neame.rst.txt b/_sources/api/classes/column-generation/stabilization/Neame.rst.txt new file mode 100644 index 00000000..ed2377a2 --- /dev/null +++ b/_sources/api/classes/column-generation/stabilization/Neame.rst.txt @@ -0,0 +1,4 @@ +DantzigWolfe::Neame +=================== + +.. doxygenclass:: idol::DantzigWolfe::Neame diff --git a/_sources/api/classes/column-generation/stabilization/Wentges.rst.txt b/_sources/api/classes/column-generation/stabilization/Wentges.rst.txt new file mode 100644 index 00000000..1303efa0 --- /dev/null +++ b/_sources/api/classes/column-generation/stabilization/Wentges.rst.txt @@ -0,0 +1,4 @@ +DantzigWolfe::Wentges +===================== + +.. doxygenclass:: idol::DantzigWolfe::Wentges diff --git a/_sources/api/classes/column-generation/stabilization/index.rst.txt b/_sources/api/classes/column-generation/stabilization/index.rst.txt new file mode 100644 index 00000000..25288e1e --- /dev/null +++ b/_sources/api/classes/column-generation/stabilization/index.rst.txt @@ -0,0 +1,8 @@ +Stabilization +============= + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/api/classes/common/Annotation.rst.txt b/_sources/api/classes/common/Annotation.rst.txt new file mode 100644 index 00000000..a81f38fd --- /dev/null +++ b/_sources/api/classes/common/Annotation.rst.txt @@ -0,0 +1,27 @@ +Annotation +========== + +Annotations are additional information associated to an optimization object (e.g., a constraint or a variable). +The Annotation class takes two template arguments: an optimization object type and a value type. For instance, we +can create an annotation for constraints of type :code:`unsigned int` as follows. + +.. code:: cpp + + Env env; + + const unsigned int default_value = 0; + + Annotation annotation(env, "my_annotation", default_value); + +Note that annotations are global, i.e., they do not relate to a given optimization model and can, therefore, be accessed +anywhere in the code. Thus, given a constraint called :code:`constraint`, the value of the annotation can be accessed +by calling the :code:`Ctr::get` method. + +.. code:: cpp + + std::cout << "My annotation is " << constraint.get(annotation) << std::endl; // "0", i.e., the default_value value + +Annotations are, in particular, used to give decomposition instructions to idol when designing a Branch-and-Price algorithm. +To learn more, check our `Branch-and-Price tutorials `_. + +.. doxygenclass:: idol::Annotation diff --git a/_sources/api/classes/common/Column.rst.txt b/_sources/api/classes/common/Column.rst.txt new file mode 100644 index 00000000..4f16f907 --- /dev/null +++ b/_sources/api/classes/common/Column.rst.txt @@ -0,0 +1,6 @@ +.. _api_Column: + +Column +====== + +.. doxygenclass:: idol::Column diff --git a/_sources/api/classes/common/Constant.rst.txt b/_sources/api/classes/common/Constant.rst.txt new file mode 100644 index 00000000..910e997b --- /dev/null +++ b/_sources/api/classes/common/Constant.rst.txt @@ -0,0 +1,6 @@ +.. _api_Constant: + +Constant +======== + +.. doxygenclass:: idol::Constant diff --git a/_sources/api/classes/common/Ctr.rst.txt b/_sources/api/classes/common/Ctr.rst.txt new file mode 100644 index 00000000..483b7feb --- /dev/null +++ b/_sources/api/classes/common/Ctr.rst.txt @@ -0,0 +1,6 @@ +.. _api_Ctr: + +Ctr +=== + +.. doxygenclass:: idol::Ctr diff --git a/_sources/api/classes/common/Env.rst.txt b/_sources/api/classes/common/Env.rst.txt new file mode 100644 index 00000000..42199481 --- /dev/null +++ b/_sources/api/classes/common/Env.rst.txt @@ -0,0 +1,6 @@ +.. _api_Env: + +Env +=== + +.. doxygenclass:: idol::Env diff --git a/_sources/api/classes/common/Expr.rst.txt b/_sources/api/classes/common/Expr.rst.txt new file mode 100644 index 00000000..89fb9869 --- /dev/null +++ b/_sources/api/classes/common/Expr.rst.txt @@ -0,0 +1,6 @@ +.. _api_Expr: + +Expr +==== + +.. doxygenclass:: idol::Expr diff --git a/_sources/api/classes/common/LinExpr.rst.txt b/_sources/api/classes/common/LinExpr.rst.txt new file mode 100644 index 00000000..1b8d6163 --- /dev/null +++ b/_sources/api/classes/common/LinExpr.rst.txt @@ -0,0 +1,24 @@ +.. _api_LinExpr: + +LinExpr +======= + +This class is used to represent linear expressions in the modeling interface of idol. + +It consists in a set of linear terms which represent products of keys (typically, variables) and scalars. + +.. admonition:: Example + + In this example, we create a linear expression representing the following linear expression. + + .. math:: + + 3 x_0 + 2 x_1 + + .. code-block:: cpp + + auto x = model.add_vars(Dim<1>(2), 0, Inf, Continuous, "x"); + + LinExpr lin_expr = 3 * x[0] + 2 * x[1]; + +.. doxygenclass:: idol::LinExpr diff --git a/_sources/api/classes/common/Model.rst.txt b/_sources/api/classes/common/Model.rst.txt new file mode 100644 index 00000000..30d36814 --- /dev/null +++ b/_sources/api/classes/common/Model.rst.txt @@ -0,0 +1,37 @@ +.. _api_Model: + +Model +===== + +.. admonition:: Example: + + Here is a short example which builds and solves the following optimization problem. + + .. math:: + + \begin{array}{ll} + \textrm{minimize } & -x_0 - 1.5 x_1 + 3 \\ + \textrm{subject to } & x_0 + 2 x_1 \le 1.5 \\ + & 0 \le x_0 \le 1 \\ + & 0 \le x_1 \le 1 + \end{array} + + .. code-block:: cpp + + Env env; + + Model model(env); + + auto x = model.add_vars(Dim<1>(2), 0, 1, Continuous, "x"); + + auto c = model.add_ctr(x[0] + 2 * x[1] <= 1.5); + + model.set_obj_expr(-x[0] - 1.5 * x[1] + 3); + + model.use(Gurobi()); + + model.optimize(); + + std::cout << "Best obj = " << model.get_best_obj() << std::endl; + +.. doxygenclass:: idol::Model diff --git a/_sources/api/classes/common/Param.rst.txt b/_sources/api/classes/common/Param.rst.txt new file mode 100644 index 00000000..1684f2f3 --- /dev/null +++ b/_sources/api/classes/common/Param.rst.txt @@ -0,0 +1,6 @@ +.. _api_Param: + +Param +===== + +.. doxygenclass:: idol::Param diff --git a/_sources/api/classes/common/QuadExpr.rst.txt b/_sources/api/classes/common/QuadExpr.rst.txt new file mode 100644 index 00000000..0071954b --- /dev/null +++ b/_sources/api/classes/common/QuadExpr.rst.txt @@ -0,0 +1,6 @@ +.. _api_QuadExpr: + +QuadExpr +======== + +.. doxygenclass:: idol::QuadExpr diff --git a/_sources/api/classes/common/Row.rst.txt b/_sources/api/classes/common/Row.rst.txt new file mode 100644 index 00000000..c3f40773 --- /dev/null +++ b/_sources/api/classes/common/Row.rst.txt @@ -0,0 +1,6 @@ +.. _api_Row: + +Row +=== + +.. doxygenclass:: idol::Row diff --git a/_sources/api/classes/common/SolutionDual.rst.txt b/_sources/api/classes/common/SolutionDual.rst.txt new file mode 100644 index 00000000..b9b94f30 --- /dev/null +++ b/_sources/api/classes/common/SolutionDual.rst.txt @@ -0,0 +1,6 @@ +.. _api_Solution_Dual: + +Solution::Dual +============== + +.. doxygenclass:: idol::Solution::Dual diff --git a/_sources/api/classes/common/SolutionPrimal.rst.txt b/_sources/api/classes/common/SolutionPrimal.rst.txt new file mode 100644 index 00000000..76334ab7 --- /dev/null +++ b/_sources/api/classes/common/SolutionPrimal.rst.txt @@ -0,0 +1,6 @@ +.. _api_Solution_Primal: + +Solution::Primal +================ + +.. doxygenclass:: idol::Solution::Primal diff --git a/_sources/api/classes/common/TempCtr.rst.txt b/_sources/api/classes/common/TempCtr.rst.txt new file mode 100644 index 00000000..ee27bcce --- /dev/null +++ b/_sources/api/classes/common/TempCtr.rst.txt @@ -0,0 +1,6 @@ +.. _api_TempCtr: + +TempCtr +======= + +.. doxygenclass:: idol::TempCtr diff --git a/_sources/api/classes/common/TempVar.rst.txt b/_sources/api/classes/common/TempVar.rst.txt new file mode 100644 index 00000000..a7ed4792 --- /dev/null +++ b/_sources/api/classes/common/TempVar.rst.txt @@ -0,0 +1,6 @@ +.. _api_mip_variables_TempVar: + +TempVar +======= + +.. doxygenclass:: idol::TempVar diff --git a/_sources/api/classes/common/Var.rst.txt b/_sources/api/classes/common/Var.rst.txt new file mode 100644 index 00000000..fbc83472 --- /dev/null +++ b/_sources/api/classes/common/Var.rst.txt @@ -0,0 +1,6 @@ +.. _api_Var: + +Var +=== + +.. doxygenclass:: idol::Var diff --git a/_sources/api/classes/common/index.rst.txt b/_sources/api/classes/common/index.rst.txt new file mode 100644 index 00000000..2940c6bf --- /dev/null +++ b/_sources/api/classes/common/index.rst.txt @@ -0,0 +1,12 @@ +.. _classes_common: + +Common +====== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + + diff --git a/_sources/api/classes/external-bilevel/MibS.rst.txt b/_sources/api/classes/external-bilevel/MibS.rst.txt new file mode 100644 index 00000000..8e17661d --- /dev/null +++ b/_sources/api/classes/external-bilevel/MibS.rst.txt @@ -0,0 +1,4 @@ +Bilevel::Mibs +============= + +.. doxygenclass:: idol::Bilevel::MibS diff --git a/_sources/api/classes/external-bilevel/Optimizers_MibS.rst.txt b/_sources/api/classes/external-bilevel/Optimizers_MibS.rst.txt new file mode 100644 index 00000000..286a87fe --- /dev/null +++ b/_sources/api/classes/external-bilevel/Optimizers_MibS.rst.txt @@ -0,0 +1,4 @@ +Optimizers::Bilevel::Mibs +========================= + +.. doxygenclass:: idol::Optimizers::Bilevel::MibS diff --git a/_sources/api/classes/external-bilevel/index.rst.txt b/_sources/api/classes/external-bilevel/index.rst.txt new file mode 100644 index 00000000..b2e2114f --- /dev/null +++ b/_sources/api/classes/external-bilevel/index.rst.txt @@ -0,0 +1,8 @@ +External Bilevel Solvers +======================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/api/classes/external-mip/GLPK.rst.txt b/_sources/api/classes/external-mip/GLPK.rst.txt new file mode 100644 index 00000000..393b1340 --- /dev/null +++ b/_sources/api/classes/external-mip/GLPK.rst.txt @@ -0,0 +1,6 @@ +.. _api_GLPK: + +GLPK +==== + +.. doxygenclass:: idol::GLPK diff --git a/_sources/api/classes/external-mip/Gurobi.rst.txt b/_sources/api/classes/external-mip/Gurobi.rst.txt new file mode 100644 index 00000000..e6db74d7 --- /dev/null +++ b/_sources/api/classes/external-mip/Gurobi.rst.txt @@ -0,0 +1,6 @@ +.. _api_Gurobi: + +Gurobi +====== + +.. doxygenclass:: idol::Gurobi diff --git a/_sources/api/classes/external-mip/HiGHS.rst.txt b/_sources/api/classes/external-mip/HiGHS.rst.txt new file mode 100644 index 00000000..630ba8b7 --- /dev/null +++ b/_sources/api/classes/external-mip/HiGHS.rst.txt @@ -0,0 +1,4 @@ +HiGHS +===== + +.. doxygenclass:: idol::HiGHS diff --git a/_sources/api/classes/external-mip/Mosek.rst.txt b/_sources/api/classes/external-mip/Mosek.rst.txt new file mode 100644 index 00000000..ce11678d --- /dev/null +++ b/_sources/api/classes/external-mip/Mosek.rst.txt @@ -0,0 +1,4 @@ +Mosek +===== + +.. doxygenclass:: idol::Mosek diff --git a/_sources/api/classes/external-mip/Optimizers_GLPK.rst.txt b/_sources/api/classes/external-mip/Optimizers_GLPK.rst.txt new file mode 100644 index 00000000..9f29e263 --- /dev/null +++ b/_sources/api/classes/external-mip/Optimizers_GLPK.rst.txt @@ -0,0 +1,6 @@ +.. _api_Optimizers_GLPK: + +Optimizers::GLPK +================ + +.. doxygenclass:: idol::Optimizers::GLPK diff --git a/_sources/api/classes/external-mip/Optimizers_Gurobi.rst.txt b/_sources/api/classes/external-mip/Optimizers_Gurobi.rst.txt new file mode 100644 index 00000000..85ba65fa --- /dev/null +++ b/_sources/api/classes/external-mip/Optimizers_Gurobi.rst.txt @@ -0,0 +1,4 @@ +Optimizers::Gurobi +================== + +.. doxygenclass:: idol::Optimizers::Gurobi diff --git a/_sources/api/classes/external-mip/Optimizers_HiGHS.rst.txt b/_sources/api/classes/external-mip/Optimizers_HiGHS.rst.txt new file mode 100644 index 00000000..155705fa --- /dev/null +++ b/_sources/api/classes/external-mip/Optimizers_HiGHS.rst.txt @@ -0,0 +1,4 @@ +Optimizers::HiGHS +================= + +.. doxygenclass:: idol::Optimizers::HiGHS diff --git a/_sources/api/classes/external-mip/Optimizers_Mosek.rst.txt b/_sources/api/classes/external-mip/Optimizers_Mosek.rst.txt new file mode 100644 index 00000000..3dc87036 --- /dev/null +++ b/_sources/api/classes/external-mip/Optimizers_Mosek.rst.txt @@ -0,0 +1,4 @@ +Optimizers::Mosek +================= + +.. doxygenclass:: idol::Optimizers::Mosek diff --git a/_sources/api/classes/external-mip/Osi/OsiCbc.rst.txt b/_sources/api/classes/external-mip/Osi/OsiCbc.rst.txt new file mode 100644 index 00000000..8a98a4c5 --- /dev/null +++ b/_sources/api/classes/external-mip/Osi/OsiCbc.rst.txt @@ -0,0 +1,4 @@ +OsiCbc +====== + +.. doxygenclass:: idol::OsiCbc diff --git a/_sources/api/classes/external-mip/Osi/OsiClp.rst.txt b/_sources/api/classes/external-mip/Osi/OsiClp.rst.txt new file mode 100644 index 00000000..8b924606 --- /dev/null +++ b/_sources/api/classes/external-mip/Osi/OsiClp.rst.txt @@ -0,0 +1,4 @@ +OsiClp +====== + +.. doxygenclass:: idol::OsiClp diff --git a/_sources/api/classes/external-mip/Osi/OsiCplex.rst.txt b/_sources/api/classes/external-mip/Osi/OsiCplex.rst.txt new file mode 100644 index 00000000..927ddf8e --- /dev/null +++ b/_sources/api/classes/external-mip/Osi/OsiCplex.rst.txt @@ -0,0 +1,4 @@ +OsiCplex +======== + +.. doxygenclass:: idol::OsiCplex diff --git a/_sources/api/classes/external-mip/Osi/OsiSymphony.rst.txt b/_sources/api/classes/external-mip/Osi/OsiSymphony.rst.txt new file mode 100644 index 00000000..928f06a5 --- /dev/null +++ b/_sources/api/classes/external-mip/Osi/OsiSymphony.rst.txt @@ -0,0 +1,4 @@ +OsiSymphony +=========== + +.. doxygenclass:: idol::OsiSymphony diff --git a/_sources/api/classes/external-mip/Osi/index.rst.txt b/_sources/api/classes/external-mip/Osi/index.rst.txt new file mode 100644 index 00000000..a4bb869a --- /dev/null +++ b/_sources/api/classes/external-mip/Osi/index.rst.txt @@ -0,0 +1,34 @@ +COIN-OR/Osi (Cplex, Xpress, Cbc, ...) +===================================== + +Idol can be linked with the `coin-or/Osi `_ library (*Open Solver Interface*) to use any solver having an osi interface. + +.. hint:: + + At the moment, only Cplex has been properly tested and can be used as follows. + + .. code-block:: + + model.use(OsiCplex()); + +.. hint:: + + Note that Osi can also be used with *any* Osi object by directly passing the interface as an argument. + + .. code-block:: + + model.use(Osi(OsiCpxSolverInterface())); // same as: model.use(OsiCplex()); + +.. warning:: + + Though idol has dedicated optimizers for Symphony, Cbc and Clp, it seems that the osi interface for these solvers do not + fully fulfill the interface requirement to have a stable usage. + +.. toctree:: + :maxdepth: 1 + :glob: + + * + +.. doxygenclass:: idol::Osi + diff --git a/_sources/api/classes/external-mip/index.rst.txt b/_sources/api/classes/external-mip/index.rst.txt new file mode 100644 index 00000000..6fb86245 --- /dev/null +++ b/_sources/api/classes/external-mip/index.rst.txt @@ -0,0 +1,9 @@ +External MIP solvers +==================== + +.. toctree:: + :maxdepth: 2 + :glob: + + * + Osi/index diff --git a/_sources/api/classes/index.rst.txt b/_sources/api/classes/index.rst.txt new file mode 100644 index 00000000..45ca55f1 --- /dev/null +++ b/_sources/api/classes/index.rst.txt @@ -0,0 +1,36 @@ +.. _classes: + +Class List +========== + +Mixed-Integer Programming +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 2 + :glob: + + common/index + external-mip/index + universal-callbacks/index + branch-and-bound/index + column-generation/index + +Bilevel Optimization +^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 2 + :glob: + + external-bilevel/index + +Robust Optimization +^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 2 + :glob: + + column-and-constraint-generation/index + diff --git a/_sources/api/classes/universal-callbacks/Callback.rst.txt b/_sources/api/classes/universal-callbacks/Callback.rst.txt new file mode 100644 index 00000000..7f3c2f3a --- /dev/null +++ b/_sources/api/classes/universal-callbacks/Callback.rst.txt @@ -0,0 +1,83 @@ +Callback +======== + +Callbacks are user-defined functions which are invoked during the execution of branch-and-bound algorithms at certain +key steps of the procedure. These key points are called :ref:`events ` in idol. +Callback functions can be used to monitor the algorithm's progress, control its behavior, or perform additional processing. + +UserCutCallback and LazyCutCallback +----------------------------------- + +A common use of callbacks is to implement custom cut generation procedures at each node of the branch-and-bound tree. Note that +idol offers out-of-the-box callback routines for cut separation. Namely, :ref:`UserCutCallback ` +and :ref:`LazyCutCallback `. Yet, it is totally possible to define your own cut generation procedure +by using the ``Callback::add_user_cut`` and ``Callback::add_lazy_cut`` methods inside your callback. + +In a nutshell, :ref:`UserCutCallback ` (or, similarly, ``Callback::add_user_cut``) are intended for +cuts which have a potential to improve the quality of the relaxation but whose presence in the model is not necessary for the +branch-and-bound to converge to an optimal solution. :ref:`UserCutCallback ` callbacks are called when +a non-valid solution has been found. + +:ref:`LazyCutCallback ` (or, similarly, ``Callback::add_lazy_cut``), +instead, are intended to generate constraints which should be part of the model but which were omitted in the model for some reason. +A typical reason for omitting constraints in a model's definition is the large number of such constraints. +:ref:`LazyCutCallback ` callbacks are called when a valid solution has been found. + +Creating your own callback +-------------------------- + +If you want to create your own callback, you should first create a new class which inherits the ``Callback`` class and +overrides the ``operator()(CallbackEvent)`` method. + +Note that callbacks cannot be given "as-is" to an optimizer but must be passed through a ``CallbackFactory``. A callback +factory is a class whose role is to create a new callback object whenever it is needed. Every callback factories must be +a child (or little child) of the ``CallbackFactory`` class. + +.. admonition:: Example + + We now give an example of callback which prints out every valid solution found. + + .. code-block:: + + class MyCallback : public CallbackFactory { + public: + + class Strategy { // Real callback implementation + protected: + void operator()(CallbackEvent t_event) { + + if (t_event != IncumbentSolution) { + return; + } + + std::cout << primal_solution() << std::endl; + } + } + + Callback* operator()() { // Creates a new callback object + return new Strategy(); + } + + CallbackFactory* clone() const { // Creates a copy of the callback factory + return new MyCallback(*this); + } + + } + + Later, it is then possible to use this callback in compliant optimizers like :ref:`Gurobi ` or :ref:`BranchAndBound `. + + .. code-block:: + + model.use( + Gurobi().with_callback(MyCallback(); + ); + + model.optimize(); + +.. hint:: + + Note that there also exists more advanced callbacks which are specific to idol's branch-and-bound implementation. + For these advanced feature, see :ref:`BranchAndBoundCallback `. + +.. doxygenclass:: idol::Callback + :protected-members: diff --git a/_sources/api/classes/universal-callbacks/CallbackFactory.rst.txt b/_sources/api/classes/universal-callbacks/CallbackFactory.rst.txt new file mode 100644 index 00000000..e795fb1d --- /dev/null +++ b/_sources/api/classes/universal-callbacks/CallbackFactory.rst.txt @@ -0,0 +1,7 @@ +.. _api_CallbackFactory: + +CallbackFactory +=============== + +.. doxygenclass:: idol::CallbackFactory + :protected-members: diff --git a/_sources/api/classes/universal-callbacks/LazyCutCallback.rst.txt b/_sources/api/classes/universal-callbacks/LazyCutCallback.rst.txt new file mode 100644 index 00000000..2197b5f0 --- /dev/null +++ b/_sources/api/classes/universal-callbacks/LazyCutCallback.rst.txt @@ -0,0 +1,60 @@ +.. _api_LazyCutCallback: + +LazyCutCallback +=============== + +Lazy cuts are essentially constraints which are part of an optimization model but which have been omitted in the current +definition of the model. Lazy cuts typically arise in models with a large number of constraints. Instead of enumerating +then all, it may be judicious to omit some of them to get a smaller optimization model. Then, the returned solution is +checked for feasibility against the whole set of constraints. If a violated constraint is identified, we add the +constraint to the model and resolve. If not, then all the constraints are satisfied and the solution is optimal for the +original model in which all constraints materializes. + +The LazyCutCallback can be used to implement lazy cut constraint generation on the fly, during the optimization process. + +Consider the following optimization problem: + +.. math:: + + \begin{align} + \min_x \ & c^\top x \\ + \text{s.t.} \ & x\in X, \\ + & \xi^\top x \le \xi_0 \quad (\xi_0,\xi) \in \Xi, + \end{align} + +in which assume that :math:`|\Xi|` is large (potentially infinite). The idea is to start by solving the following +relaxed master problem in which constraints associated to :math:`(\xi_0,\xi)` have been omitted. + +.. math:: + + \begin{align} + \min_x \ & c^\top x \\ + \text{s.t.} \ & x\in X. + \end{align} + +If we assume that this problem is feasible and bounded, we can denote by :math:`x^*` a solution of this problem. Then, +we search for a violated constraint ":math:`\xi^\top x \le \xi_0`" for some :math:`(\xi_0,\xi)\in\Xi`. Observe that +a constraint is violated if, and only if, the following holds: + +.. math:: + + \left(\exists(\xi_0,\xi)\in\Xi, \ \xi^\top x^* > \xi_0\right) + \Leftrightarrow + \left(\max_{(\xi_0,\xi)\in\Xi} \xi_0 - \xi^\top x^* < 0\right). + +Thus, the LazyCutCallback automatically solve the optimization problem on the right handside and checks for its value. +A new constraint is added if, and only if, + +.. math:: + \max_{\xi\in\Xi} \xi_0 - \xi^\top x^* < -\varepsilon, + +with :math:`\varepsilon` a given tolerance (by default, :code:`Tolerance::Feasibility`). + + +.. hint:: + + You may also be interested by a tutorial showing how you can implement a simple Benders Decomposition using lazy + cuts. :ref:`See Benders Decomposition tutorial `. + + +.. doxygenclass:: idol::LazyCutCallback \ No newline at end of file diff --git a/_sources/api/classes/universal-callbacks/UserCutCallback.rst.txt b/_sources/api/classes/universal-callbacks/UserCutCallback.rst.txt new file mode 100644 index 00000000..cf10e6e1 --- /dev/null +++ b/_sources/api/classes/universal-callbacks/UserCutCallback.rst.txt @@ -0,0 +1,6 @@ +.. _api_UserCutCallback: + +UserCutCallback +=============== + +.. doxygenclass:: idol::UserCutCallback \ No newline at end of file diff --git a/_sources/api/classes/universal-callbacks/index.rst.txt b/_sources/api/classes/universal-callbacks/index.rst.txt new file mode 100644 index 00000000..e97ddd7e --- /dev/null +++ b/_sources/api/classes/universal-callbacks/index.rst.txt @@ -0,0 +1,8 @@ +Universal Callbacks +=================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/api/constants/index.rst.txt b/_sources/api/constants/index.rst.txt new file mode 100644 index 00000000..b949e0b4 --- /dev/null +++ b/_sources/api/constants/index.rst.txt @@ -0,0 +1,15 @@ +.. _constants: + +Constants +========= + +Common +^^^^^^ + +.. toctree:: + :maxdepth: 1 + :glob: + + tolerances + + diff --git a/_sources/api/constants/tolerances.rst.txt b/_sources/api/constants/tolerances.rst.txt new file mode 100644 index 00000000..0fe7410d --- /dev/null +++ b/_sources/api/constants/tolerances.rst.txt @@ -0,0 +1,6 @@ +.. _api_api_tolerances: + +Tolerances and Numerics +======================= + +.. doxygenfile:: numericals.h \ No newline at end of file diff --git a/_sources/api/index.rst.txt b/_sources/api/index.rst.txt new file mode 100644 index 00000000..8676a6db --- /dev/null +++ b/_sources/api/index.rst.txt @@ -0,0 +1,12 @@ +.. _api: + +API +=== + +.. toctree:: + :maxdepth: 1 + :glob: + + classes/index + types/index + constants/index diff --git a/_sources/api/types/common/VarType.rst.txt b/_sources/api/types/common/VarType.rst.txt new file mode 100644 index 00000000..75c7d75e --- /dev/null +++ b/_sources/api/types/common/VarType.rst.txt @@ -0,0 +1,6 @@ +.. _api_variables_VarType: + +VarType +======= + +.. doxygenenum:: idol::VarType diff --git a/_sources/api/types/common/index.rst.txt b/_sources/api/types/common/index.rst.txt new file mode 100644 index 00000000..8e7da97b --- /dev/null +++ b/_sources/api/types/common/index.rst.txt @@ -0,0 +1,9 @@ +Common +====== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + diff --git a/_sources/api/types/index.rst.txt b/_sources/api/types/index.rst.txt new file mode 100644 index 00000000..64cc0da1 --- /dev/null +++ b/_sources/api/types/index.rst.txt @@ -0,0 +1,16 @@ +.. _types: + +Type List +========= + +Mixed-Integer Programming +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 2 + :glob: + + common/index + universal-callbacks/index + + diff --git a/_sources/api/types/universal-callbacks/CallbackEvent.rst.txt b/_sources/api/types/universal-callbacks/CallbackEvent.rst.txt new file mode 100644 index 00000000..0a4f03c0 --- /dev/null +++ b/_sources/api/types/universal-callbacks/CallbackEvent.rst.txt @@ -0,0 +1,4 @@ +Events +====== + +.. doxygenenum:: idol::CallbackEvent \ No newline at end of file diff --git a/_sources/api/types/universal-callbacks/index.rst.txt b/_sources/api/types/universal-callbacks/index.rst.txt new file mode 100644 index 00000000..f04d73b4 --- /dev/null +++ b/_sources/api/types/universal-callbacks/index.rst.txt @@ -0,0 +1,9 @@ +Universal Callbacks +=================== + +.. toctree:: + :maxdepth: 1 + :glob: + + * + diff --git a/_sources/benchmark/index.rst.txt b/_sources/benchmark/index.rst.txt new file mode 100644 index 00000000..827cf506 --- /dev/null +++ b/_sources/benchmark/index.rst.txt @@ -0,0 +1,13 @@ +.. _benchmark: + +Benchmark +========= + + +* A benchmark for the **Branch-and-Price** implementation is available for the `Generalized Assignment Problem `_. +* A benchmark for the **Branch-and-Bound** implementation is available for the `Knapsack Problem `_ + +.. image:: https://raw.githubusercontent.com/hlefebvr/idol-benchmark-gap/gh-pages/profile.png + +This is a performance profile computed according to :cite:`Dolan2002`. + diff --git a/_sources/developer_guide/build-the-doc.rst.txt b/_sources/developer_guide/build-the-doc.rst.txt new file mode 100644 index 00000000..4d331aef --- /dev/null +++ b/_sources/developer_guide/build-the-doc.rst.txt @@ -0,0 +1,61 @@ +.. highlight:: sh +.. _dev_build_the_doc: + +Build the doc! +============== + +This page explains how to build the documentation on a local machine. + +Dependencies +------------ + +Description +^^^^^^^^^^^ + +The documentation is built using `doxygen`_ and a bunch of other tools, in particular: + +* `doxygen`_ the C++ documentation generator; +* `Sphinx`_ the python documentation generator; +* `sphinx-rtd-theme `_ a Sphinx theme used to render the + HTML version of the documentation; +* `sphinx-sitemap `_ a Sphinx extension + to generate multi-version and multi-language sitemaps.org compliant sitemaps for the HTML version + of a Sphinx documentation; +* `sphinx-copybutton `_ a Sphinx extension which + automatically adds buttons on code-blocks environments to copy its content; +* `Breathe`_ the Sphinx plugin for integrating doxygen outputs into Sphinx. + +For a detailed description on how these tools interact, please refer to `this article `_. + +Installation guide (Ubuntu) +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +:: + + sudo apt-get install doxygen # installs the last version of doxygen + + sudo apt-get install python3-sphinx # installs the last version of Sphinx + + sudo apt-get install python3-breathe # installs the last version of Breathe + + pip3 install sphinx-sitemap sphinx-rtd-theme sphinx-copybutton # installs theme and extensions + +Build instructions +------------------ + +By default, CMake automatically creates a ``doc`` target. All you have to do to build the documentation website +is to build this target. For instance, inside a ``build`` directory, the following command can be used. + +:: + + cmake .. && make doc + +Note that you do not need to use ``make`` and use the following generic command. + +:: + + cmake --build . --target doc + +.. _doxygen: https://doxygen.nl/ +.. _Sphinx: https://www.sphinx-doc.org/en/master/ +.. _Breathe: https://github.com/breathe-doc/breathe \ No newline at end of file diff --git a/_sources/developer_guide/index.rst.txt b/_sources/developer_guide/index.rst.txt new file mode 100644 index 00000000..e222b3ee --- /dev/null +++ b/_sources/developer_guide/index.rst.txt @@ -0,0 +1,11 @@ +.. _dev: + +Developer guide +=============== + +.. toctree:: + :maxdepth: 2 + :glob: + + build-the-doc + tests \ No newline at end of file diff --git a/_sources/developer_guide/tests.rst.txt b/_sources/developer_guide/tests.rst.txt new file mode 100644 index 00000000..bd9cfb10 --- /dev/null +++ b/_sources/developer_guide/tests.rst.txt @@ -0,0 +1,91 @@ +.. _tests: + +Unit and integration tests +========================== + +This page explains how to build the unit and integration tests on a local machine. + +Dependencies +------------ + +Tests are managed by the C++ unit testing framework `Catch2 `_. + +When CMake is told to create test targets, it will automatically look for an installation of Catch2 on your +machine. If it cannot be found, CMake will attempt to download Catch2 from its GitHub repository. + + +Installation guide (Ubuntu) +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: shell + + git clone https://github.com/catchorg/Catch2.git # Clone Catch2 repository + + cd Catch2 # go inside the new directory + + cmake -Bbuild -H. -DBUILD_TESTING=OFF # Create install target + + sudo cmake --build build/ --target install # Build and install + + +Build instructions +------------------ + +By default, CMake will not create test targets nor look for Catch2. To tell CMake to generate them, you +need to set the CMake option ``BUILD_TESTS`` to ``YES``. + + +.. admonition:: Example + + The following will tell CMake to create targets for tests. + + .. code-block:: + + cmake -DBUILD_TESTS=YES .. + + For instance, we can now build all the existing tests + + .. code-block:: + + make tests + + and run them. + + .. code-block:: + + ./tests/tests + +Code coverage options +--------------------- + +Code coverage is done via ``gcov``. + +If you want to active code coverage options, you shall set the CMake option ``WITH_TEST_COVERAGE`` to ``YES``. +Note that this only has an effect when ``BUILD_TESTS`` is also set to ``YES``. + +.. admonition:: Example + + The following command will tell CMake to generate targets for tests with code coverage options. + + .. code-block:: + + cmake -DBUILD_TESTS=YES -DWITH_CODE_COVERAGE=YES .. + + Then, you should build and run the tests. + + .. code-block:: + + make tests && ./tests/tests + + Once you are there, you may generate a report to a file called ``coverage.info`` by using ``gcov``. + + .. code-block:: + + lcov --directory . --capture --output-file coverage.info + +Also note that this forces ``g++`` to be used for compiling. + +.. tip:: + + Code coverage reports are also automatically generated at every push action on idol's GitHub repository and + are available on `codecov `_. diff --git a/_sources/examples/bilevel-problem.rst.txt b/_sources/examples/bilevel-problem.rst.txt new file mode 100644 index 00000000..e72f1e4a --- /dev/null +++ b/_sources/examples/bilevel-problem.rst.txt @@ -0,0 +1,5 @@ +Toy Example +=========== + +.. literalinclude:: ../../examples/bilevel.example.cpp + :language: cpp diff --git a/_sources/examples/facility-location-problem.rst.txt b/_sources/examples/facility-location-problem.rst.txt new file mode 100644 index 00000000..ca3b050d --- /dev/null +++ b/_sources/examples/facility-location-problem.rst.txt @@ -0,0 +1,6 @@ +Facility Location Problem +========================= + + +.. literalinclude:: ../../examples/facility.example.cpp + :language: cpp diff --git a/_sources/examples/generalized-assignment-problem.rst.txt b/_sources/examples/generalized-assignment-problem.rst.txt new file mode 100644 index 00000000..c4a1f82c --- /dev/null +++ b/_sources/examples/generalized-assignment-problem.rst.txt @@ -0,0 +1,5 @@ +Generalized Assignment Problem +============================== + +.. literalinclude:: ../../examples/assignment.example.cpp + :language: cpp diff --git a/_sources/examples/index.rst.txt b/_sources/examples/index.rst.txt new file mode 100644 index 00000000..d54083dc --- /dev/null +++ b/_sources/examples/index.rst.txt @@ -0,0 +1,38 @@ +.. _examples: + +Examples +======== + +Mixed-Integer Programming +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + knapsack-problem + +Branch-and-Bound +^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + facility-location-problem + +Column Generation and Branch-and-Price +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. toctree:: + :maxdepth: 1 + + generalized-assignment-problem + +Bilevel Optimization +^^^^^^^^^^^^^^^^^^^^ + + +.. toctree:: + :maxdepth: 1 + + bilevel-problem + diff --git a/_sources/examples/knapsack-problem.rst.txt b/_sources/examples/knapsack-problem.rst.txt new file mode 100644 index 00000000..d2cd0398 --- /dev/null +++ b/_sources/examples/knapsack-problem.rst.txt @@ -0,0 +1,5 @@ +Knapsack Problem +================ + +.. literalinclude:: ../../examples/knapsack.example.cpp + :language: cpp diff --git a/_sources/faq/index.rst.txt b/_sources/faq/index.rst.txt new file mode 100644 index 00000000..2c92ff37 --- /dev/null +++ b/_sources/faq/index.rst.txt @@ -0,0 +1,10 @@ +.. _faq: + +FAQ +--- + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/faq/mosek-and-eigen.rst.txt b/_sources/faq/mosek-and-eigen.rst.txt new file mode 100644 index 00000000..ec85705a --- /dev/null +++ b/_sources/faq/mosek-and-eigen.rst.txt @@ -0,0 +1,81 @@ +Why is Eigen necessary to solve QPs and QCQPs with Mosek? +========================================================= + +In Short +-------- + +The interface of idol is based on quadratic expressions like + +.. math:: + + \sum_{j=1}^n a_{ij}x_j + \sum_{j=1}^n\sum_{k=1}^n q_{jk}^ix_jx_k \le b_i. + +The C++ interface of Mosek, instead, is based on "conic expressions" like + +.. math:: + + (x_0, \textbf{Fx}) \in \mathcal Q^n, + +where :math:`\mathcal Q^n` denotes the second-order cone and :math:`F` is some matrix related to :math:`Q^i`. + +In order to make the conversion between the Mosek interface and +the idol interface (for instance, computing the matrix :math:`F`), +one needs to compute an eigen value decomposition. +This is automatically done by idol using `Eigen `_. +This is why Eigen is necessary if one wants to use Mosek with idol to solve QPs or QCQPs. + +Detailed Answer +--------------- + +Consider the quadratic expression + +.. math:: + + \sum_{j=1}^n a_{ij}x_j + \sum_{j=1}^n\sum_{k=1}^n q_{jk}^ix_jx_k \le b_i. + +It can be written as + +.. math:: + + a_{(i)}^\top x + x^\top Q^i x \le b_i. + +The first task is to compute an eigen value decomposition of :math:`Q^i`, i.e., +to find matrices :math:`L` and :math:`D` such that :math:`Q^i = L D L^\top` +and :math:`D` is a diagonal matrix containing the eigen values of :math:`Q^i`. + +If there are more than two negative eigen values, the constraint is not convex and an exeception is thrown. + +Otherwise, we compute :math:`F` and :math:`N` so that :math:`x^\top Q^i x = \lVert Fx \rVert_2^2 + x^\top N x`. +This is done by setting :math:`F = \sqrt{D^+} L^\top` where :math:`D^+` is :math:`D` with the negative eigen values replaced by zero, +and :math:`N = L D^- L^\top`. + +Hence, we have that the constraint is expressed as + +.. math:: + + \lVert Fx \rVert_2^2 + x^\top N x \le b_i - a_{(i)}^\top x. + +If :math:`N = 0`, it can be written as + +.. math:: + + \begin{align} + & \lVert Fx \rVert_2^2 \le b_i - a_{(i)}^\top x \\ + \iff & (.5, b_i - a_{(i)}^\top x, Fx) \in\mathcal Q^{n+2}_r, + \end{align} + +where :math:`\mathcal Q^{n+2}_r` denotes the rotated second-order cone. + +Otherwise, if :math:`N` has one non-zero entry, say :math:`n_{ij}`. +Then, it must be that :math:`a_{(i)} = 0` and :math:`b_i \le 0` for the constraint to be +converted by idol. Under this assumption, the constraint can be written as + +.. math:: + + \begin{align} + & \lVert Fx \rVert_2^2 + \sqrt{-b_i}^2 \le n_{ij} x_i x_j \\ + \iff & (.5 n_{i,j} x_i, x_j, Fx, \sqrt{-b_i}) \in\mathcal Q^{n+1}_r, + \end{align} + +where it is assumed that :math:`n_{i,j} x_{i}x_{j} \ge 0` holds +(for now, a warning is printed to enlight this expectation). \ No newline at end of file diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..4c3112a2 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,158 @@ +.. raw:: html + +
+ +

A C++ framework for optimization and complex decision making

+ +

+ Idol is a powerful and flexible library designed to help you build new mathematical optimization algorithms and solve more and more challenging problems. +

+ + + Get started now +   + To installation guidelines + + +
+ +What Is Idol? +------------- + +Idol is a C++ library for **mathematical optimization** and **complex decision making**. It is designed to help you build new +algorithms easily for solving more and more challenging problems. It is a **versatile** and **powerful tool** that can be +used to solve a wide range of optimization problems, including mixed-integer linear programming (MILP), quadratically constrained +problems (MIQCQP and MIQP), bilevel problems (BO), robust optimization problems (RO and ARO) and many more. + +It is designed to be **easy to use** and to **integrate with other software**, so that you can use it +to build new algorithms and solve new problems without having to start from scratch. For instance, here is a piece of +code which create a Branch-and-Price algorithm. + +.. code:: + + const auto branch_and_price = branch_and_bound + column_generation; + +Here, `branch_and_bound` and `column_generation` are two objects which are +combined to create a new algorithm, `branch_and_price`, which can be instantiated and executed. + +Getting Started With Idol +------------------------- + +If you are new to idol, be sure to have a look at our :ref:`tutorials `. If you want to get a fast hands-on +start, have a look at our :ref:`local installation guideline `. It is the easiest installation process +one could think of since it automatically downloads the latest version of idol, and installs it locally in a sub-folder. +It's really a mater of seconds before you can start using idol. + +.. admonition:: Example + + Idol has a user-friendly interface which should look natural to people working in optimization. For instance, + here is how one solves a Knapsack Problem using the `Gurobi `_ solver. + + .. code:: cpp + + using namespace idol; + + const unsigned int n_items = 5; + const double[] profit = { 40., 50., 100., 95., 30., }; + const double[] weight = { 2., 3.14, 1.98, 5., 3., }; + const double capacity = 10.; + + Env env; + + Model model(env); + + const auto x = model.add_vars(Dim<1>(n_items), 0., 1., Binary, "x"); + + model.add_ctr(idol_Sum(j, Range(n_items), weight[j] * x[j]) <= capacity); + + model.set_obj_expr(idol_Sum(j, Range(n_items), -profit[j] * x[j]); + + model.use(Gurobi()); + + model.optimize(); + +Is This a MIP Solver? +--------------------- + +The idol library is not a MIP solver in itself. Indeed, it typically needs to call external +solvers (e.g., `GLPK `_, `Gurobi `_ or many others) +as a sub-routine of more complex algorithmic schemes (e.g., within a Branch-and-Price scheme). + +The idea is to work hand in hand with existing fine-tuned and well-engineered optimization +software to enhance their possibilities. By doing so, we aim at solving larger and more complex problems than what is currently possible, +or even problems for which theoretical evidence indicate that no MIP of reasonable size can model them completely (e.g., :math:`\Sigma_i^P`-hard problems). + +Even though idol is not a MIP solver, it can be used to solve standalone LPs, QPs, MILPs, MIQPs, and MIQCQPs though the +many external solvers it interfaces with. +A clear advantage of using idol to solve these problems is that it offers a unified and common interface to every solver. +Thus, you can write your code once and test it with different solvers! +The following solvers are currently supported by idol + +* `Gurobi `_ +* `Mosek `_ +* `GLPK `_ +* `HiGHS `_ +* `COIN-OR/Osi `_ which then gives you access to CPLEX, Symphony or any Osi compatible solver. + +Current Features +---------------- + +Interfacing External Optimization Solvers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The idol library can be used to interface external solvers like `GLPK `_ +or `Gurobi `_ to solve standalone LPs, QPs, MILPs, MIQPs, and MIQCQPs. + +It also provides classical callbacks one would need to implement when solving hard problems like generating user cuts +or lazy constraints. Simply give idol the separation model and let it handle the rest. + +Branch-and-Bound Algorithms +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Idol can be used to create a custom branch-and-bound scheme very easily in which virtually anything can be tweaked. + +* **Node-agnostic:** The B&B algorithm can work with any node type as long as the user properly + defines how nodes must be updated. A default node type is already implemented for classical variable branching. This + node type can also be inherited, e.g., to enrich the information carried out from each parent node to its children. +* **Customizable branching rules:** The default branching rules include: most infeasible, least infeasible, first + infeasible found, uniformly random, strong branching (with phases) and pseudo-cost branching. The user can create its + own branching rule if needed. +* **Customizable node selection rules:** The default node selection rules include: best estimate, best bound, worst bound, + depth first, breadth first. The user can create its own node selection rule if needed. +* **Callbacks:** The user can specify its own callback to locally or globally modify a node's problem, submit heuristic + solutions, or influence the execution of the overall tree search. +* **Sub-tree exploration**. The B&B algorithm supports sub-trees exploration to reach valid solutions to the original + problem as quick as possible. + +Column Generation and Dantzig-Wolfe Decomposition +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Idol can be used to build and custom CG algorithms with the following features. + +* **Infeasible master problem procedures:** Idol can handle infeasible master problems by resorting to Farkas pricing or + by adding artificial variables to the original problem (if this fails, idol will automatically switch to pure phase I + so as to exactly prove infeasibility). +* **Automatic pool clean up:** If the master problem contains too many variables, they can be automatically removed. + This behavior is controlled by user parameters. +* **Stabilization via dual price smoothing:** The CG procedure can be stabilized using dual price smoothing controlled + by user inputs. Default implementation include `Wentges (1997) `_ and + `Neame (2000) `_. +* **Parallel pricing:** Each pricing problem can be solved in parallel. +* **Nested column generation:** A key idea of idol is that every optimizer is seen as a black-box to solve a given optimization model. + As such, a CG algorithm can easily be "plugged in" any algorithmic phase. For instance, solving the pricing of + a CG algorithm can be done by yet another CG algorithm. + +Table of Contents +----------------- + +.. toctree:: + :maxdepth: 1 + + installation/index + tutorials/index + examples/index + api/index + faq/index + benchmark/index + developer_guide/index + references diff --git a/_sources/installation/global-installation/index.rst.txt b/_sources/installation/global-installation/index.rst.txt new file mode 100644 index 00000000..6c84c6cf --- /dev/null +++ b/_sources/installation/global-installation/index.rst.txt @@ -0,0 +1,97 @@ +.. _basics_installation: + +.. role:: bash(code) + :language: bash + +Global Installation +=================== + +This page is dedicated to the local installation of idol. It is thought for more advanced users who want to install +idol globally on their computer (e.g., in `/usr/lib`). +If you simply want to "try out" idol, we advise you to opt for a :ref:`local installation `. +The installation process is managed by the CMake build system. You will therefore need to have it +installed on your computer. + +The installation process follows the classical CMake build process "configure, build, install". + +Configure +--------- + +The first step is to create a :bash:`build` directory. +This is where the library will be compiled before being it is installed (i.e., copied) on your system. + +.. code-block:: bash + + mkdir build + cd build + +Then, you should call CMake to configure the build process. +It is at this time that we let CMake look for the necessary dependencies such as, e.g., external optimization solvers. +By default, running CMake without options will cause idol to be built without any external solver. Note that options +should be specified as follows: + +.. code-block:: bash + + cmake -D= .. + +A list of **all possible options** can be found on :ref:`this page `. + +.. admonition:: Example for Gurobi + + Here is an example of a possible CMake command which will create the necessary targets for configuring idol to interface Gurobi. + + .. code-block:: bash + + cmake -DUSE_GUROBI=YES .. + + Note that this example assumes that your environment variable :bash:`GUROBI_HOME` has been correctly configured + (see `this official Gurobi page `_). + + If you want to specify the path to the Gurobi installation folder, you can use the :bash:`GUROBI_DIR` option. + + .. code-block:: bash + + cmake -DUSE_GUROBI=YES -DGUROBI_DIR=/path/to/gurobi/install/dir .. + + +Build +----- + +Now that the build process has been configured, we can build idol by running the following command. + +.. code-block:: bash + + make idol + +This will compile the idol C++ library, and make it ready to be installed (i.e., copied) on your computer. + +If you encounter any error at this stage, please, do not hesitate to contact us on our `GitHub page `_. + +Install +------- + +To install idol on your computer, run the following command. + +.. code-block:: bash + + sudo make install + +.. hint:: + + Here, you need superuser rights to install idol globally. If you want to install idol on a specific folder, + you may also use the :bash:`CMAKE_INSTALL_PREFIX` CMake option to change the destination folder. + + .. code-block:: bash + + cmake -CMAKE_INSTALL_PREFIX=/my/custom/installation/folder .. + make install + + +Table of Contents +----------------- + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/_sources/installation/global-installation/linking.rst.txt b/_sources/installation/global-installation/linking.rst.txt new file mode 100644 index 00000000..fffca91f --- /dev/null +++ b/_sources/installation/global-installation/linking.rst.txt @@ -0,0 +1,53 @@ +.. _linking: + +.. role:: bash(code) + :language: bash + +Linking Your C++ Project +======================== + +If you have installed idol globally, you can link your C++ project with idol using CMake. +Note that if idol was locally installed, you should refer to the :ref:`local installation guideline `, +this page is **only for global installation**. + +Idol is built with and for CMake (even though it is still possible to link using :bash:`Makefile` or pure :bash:`gcc`, :bash:`clang`, ...). + +Here is a minimal :bash:`CMakeLists.txt` which creates a new executable target linked with idol. + +.. code-block:: cmake + + cmake_minimum_required(VERSION 3.22) + project(my_project) + + set(CMAKE_CXX_STANDARD 17) + + add_executable(my_target main.cpp) + + find_package(idol REQUIRED) ## Here, we search for the installed library idol + + target_link_library(my_target PUBLIC idol) ## Here, we ask CMake to link with idol + +Note that you do not need to link with any external solver if idol was already linked with one. + +The following :bash:`main.cpp` is then a minimal example. + +.. code-block:: cpp + + #include + #include + + int main(int t_argc, const char** t_argv) { + + using namespace idol; + + Env env; + + Model model(env); + + const auto x = model.add_var(0., 1., Binary, "x"); + + // ... + + return 0; + } + diff --git a/_sources/installation/index.rst.txt b/_sources/installation/index.rst.txt new file mode 100644 index 00000000..6b6e2717 --- /dev/null +++ b/_sources/installation/index.rst.txt @@ -0,0 +1,21 @@ +.. _installation: + +Installation +============ + +You are here on the installation guidelines. This page will guide through the installation process of idol. + +There are two ways to install idol: + +* :ref:`A local installation ` lets CMake automatically download and install idol a sub-folder of your + CMake project. This is the easiest way to get started with idol. +* :ref:`A global installation ` installs idol globally on your computer (e.g., in `/usr/lib`). + +.. toctree:: + :hidden: + :maxdepth: 1 + :glob: + + local_installation + global-installation/index + options diff --git a/_sources/installation/local_installation.rst.txt b/_sources/installation/local_installation.rst.txt new file mode 100644 index 00000000..3cb98df8 --- /dev/null +++ b/_sources/installation/local_installation.rst.txt @@ -0,0 +1,81 @@ +.. _installation_local: + +.. role:: bash(code) + :language: bash + +Local Installation +================== + +This page is dedicated to the local installation of idol. This is the easiest way to get your project working with +idol without installing it globally on your computer. +If you want to install idol globally, please read our :ref:`global installation guide `. + +The idea behind local installation is to let CMake download and manage the installation of idol in a sub-folder of your +project. This is done by using the CMake :bash:`FetchContent_*` directives. + +We provide here a minimal :bash:`CMakeLists.txt`. + +.. code-block:: cmake + + cmake_minimum_required(VERSION 3.23) + project(my_project) + + set(CMAKE_CXX_STANDARD 17) + + include(FetchContent) + + # Define your idol CMake options here + set(USE_GUROBI YES) # For instance, here, we specify that Gurobi will be used by idol + + # Tell CMake which version of idol you desire + FetchContent_Declare( + idol + GIT_REPOSITORY https://github.com/hlefebvr/idol.git + GIT_TAG origin/main + ) + + # Ask CMake to download idol and install it to a sub-folder + FetchContent_MakeAvailable(idol) + + # Normal executable definition + add_executable(my_target main.cpp) + + # Link your CMake target with idol as classically done + target_link_libraries(my_target PUBLIC idol) + +By default, CMake will download the latest version of idol. However, you can also explicitly specify the desired version +of idol you want to use by setting the :bash:`GIT_TAG` variable in the :bash:`FetchContent_Declare` function to the specific +version, e.g., :bash:`v0.2.4-alpha`. + +.. hint:: + + As you can see in the above example, some options must be set to tell CMake to look for external solvers. Here, we + specify that Gurobi will be used by idol. You can, of course, add other solvers such as Mosek or GLPK. + + This is done with the :bash:`set` CMake function. For instance, to set the option :bash:`MY_OPTION` to the + value :bash:`MY_VALUE`. You should add :code:`set(MY_OPTION MY_VALUE)` to your :bash:`CMakeLists.txt` file. + + A list of **all possible options** can be found on :ref:`this page `. + +Then, here is a starting :bash:`main.cpp`. + +.. code-block:: cpp + + #include + #include + + int main(int t_argc, const char** t_argv) { + + using namespace idol; + + Env env; + + Model model(env); + + const auto x = model.add_var(0., 1., Binary, "x"); + + // ... + + return 0; + } + diff --git a/_sources/installation/options.rst.txt b/_sources/installation/options.rst.txt new file mode 100644 index 00000000..83689086 --- /dev/null +++ b/_sources/installation/options.rst.txt @@ -0,0 +1,202 @@ +.. _cmake_options: + +.. role:: bash(code) + :language: bash + +List of CMake Options +===================== + +This page contains a list of all CMake options that can be used to configure idol. In particular, this is useful to +link idol with external solvers. + +.. contents:: Table of Contents + :local: + :depth: 2 + +Linking with External Solvers +----------------------------- + +Gurobi (Commercial Solver) +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To link with Gurobi, you will need to pass the :bash:`USE_GUROBI` CMake option with value :bash:`YES`. + +By default, CMake will look for Gurobi inside the folder indicated by the environment variable :bash:`GUROBI_HOME` +(see `this official Gurobi page `_). +Note that it is also possible to pass the CMake option :bash:`GUROBI_DIR=/path/to/gurobi/install/dir` in order to specify +another directory to look for Gurobi. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with Gurobi. + + .. code-block:: bash + + cmake -DUSE_GUROBI=YES -DGUROBI_DIR=/path/to/gurobi/install/dir .. + + If you are doing a *local installation*, then the same can be achieved as follows. + + .. code-block:: bash + + set(USE_GUROBI YES) + set(GUROBI_DIR /path/to/gurobi/install/dir) + + +Mosek (Commercial Solver) +^^^^^^^^^^^^^^^^^^^^^^^^^ + +To link with Mosek, you will need to pass the :bash:`USE_MOSEK` CMake option with value :bash:`YES`. + +By default, CMake will look for Mosek inside the folder indicated by the environment variable :bash:`MOSEK_HOME`. +Note that it is also possible to pass the CMake option :bash:`MOSEK_DIR=/path/to/mosek/install/dir` in order to specify +another directory to look for Mosek. + +Note that :bash:`MOSEK_HOME` (or equivalently :bash:`MOSEK_DIR`) should point to the Mosek installation folder where +folders :bash:`h` and :bash:`bin` can be found. For instance, :bash:`MOSEK_HOME=/home//mosek/10.0/tools/platform/linux64x86`. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with Mosek. + + .. code-block:: bash + + cmake -DUSE_MOSEK=YES -DMOSEK_DIR=/path/to/mosek/install/dir .. + + If you are doing a *local installation*, then the same can be achieved as follows. + + .. code-block:: bash + + set(USE_MOSEK YES) + set(MOSEK_DIR /path/to/mosek/install/dir) + +.. attention:: + + If you intend to use Mosek for solving QPs or SOCPs, please :ref:`read this `. + +GLPK (Open-Source Solver) +^^^^^^^^^^^^^^^^^^^^^^^^^ + +To link with GLPK, you will need to pass the :bash:`USE_GLPK` CMake option with value :bash:`YES`. + +By default, CMake will look for GLPK inside the folder indicated by the environment variable :bash:`GLPK_HOME` as well +as in the default installation folders :bash:`/usr/include` and :bash:`/usr/lib`. +Note that it is also possible to pass the CMake option :bash:`GLPK_DIR=/path/to/glpk/install/dir` in order to specify +another directory to look for GLPK. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with GLPK. + + .. code-block:: bash + + cmake -DUSE_GLPK=YES -DGLPK_DIR=/path/to/glpk/install/dir .. + + If you are doing a *local installation*, then the same can be achieved as follows. + + .. code-block:: bash + + set(USE_GLPK YES) + set(GLPK_DIR /path/to/glpk/install/dir) + + +HiGHS (Open-Source Solver) +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To link with GLPK, you will need to pass the :bash:`USE_HIGHS` CMake option with value :bash:`YES`. + +By default, CMake will look for HIGHS inside the default installation folders :bash:`/usr/include` and :bash:`/usr/lib`. +Note that it is also possible to pass the CMake option :bash:`HIGHS_DIR=/path/to/highs/install/dir` in order to specify +another directory to look for GLPK. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with GLPK. + + .. code-block:: bash + + cmake -DUSE_HIGHS=YES -DHIGHS_DIR=/path/to/glpk/install/dir .. + + If you are doing a *local installation*, then the same can be achieved as follows. + + .. code-block:: bash + + set(USE_HIGHS YES) + set(HIGHS_DIR /path/to/glpk/install/dir) + + +Building Examples +----------------- + +:ref:`Examples :` can be found at the root level of the idol repository, inside the directory ``examples``. + +By default, CMake will not generate targets to build these example. To tell CMake to generate these, you +need to set the CMake option ``BUILD_EXAMPLE`` to ``YES``. + +.. admonition:: Example + + The following will tell CMake to create targets for examples. + + .. code-block:: + + cmake -DBUILD_EXAMPLES=YES .. + + For instance, we can now build the Knapsack Problem example, + + .. code-block:: + + make example_knapsack + + and run it. + + .. code-block:: + + cd examples && ./example_knapsack + +Other optional dependencies +--------------------------- + +Using martinus/robin-hood-hashing hash map +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Internally, idol uses unordered maps (also called hash maps). +Unfortunately, the default :code:`std` implementation is not the best choice when +it comes to performance. To avoid this, if found relevant, users can tell idol to use the hash-map implementation of +`martinus/robin-hood-hashing `_. It's actually a header-only library, so +all you have to do is to tell CMake where the :code:`robin_hood.hpp` file is. This is done through the CMake option +:code:`ROBINHOOD_DIR=/path/to/robin_hood/folder` together with :code:`USE_ROBINHOOD=YES`. + +Note that, if :code:`ROBINHOOD_DIR` is not specified, :code:`robin_hood.hpp` is searched for in :code:`/usr/include`, +:code:`/usr/include/robin_hood/`, :code:`/usr/local/include/`, :code:`/usr/local/include/robin_hood/` and in the path +stored in the environment variable :code:`ROBINHOOD_HOME`. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with martinus's robin_hood hash map + implementation. + + .. code-block:: + + cmake -DUSE_ROBINHOOD=YES -DROBINHOOD_DIR=/path/to/robin_hood/folder .. + +Using Eigen +^^^^^^^^^^^ + +Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. +It is internally used by idol for some of its functionalities. In particular, this is *necessary* for solving QPs and SOCPs +with the Mosek solver. + +Since Eigen is a header-only library, all you have to do is to tell CMake where the :code:`Eigen` folder is. This is done +through the CMake option :code:`EIGEN_DIR=/path/to/eigen/folder` together with :code:`USE_EIGEN=YES`. + +.. admonition:: Example + + The following will create an :bash:`install` target which will install idol with Eigen. + + .. code-block:: + + cmake -DUSE_EIGEN=YES -DEIGEN_DIR=/path/to/eigen/folder .. + +Building Unit and Integration Tests +----------------------------------- + +To build tests for idol, please refer to this :ref:`developer page `. \ No newline at end of file diff --git a/_sources/references.rst.txt b/_sources/references.rst.txt new file mode 100644 index 00000000..c8779726 --- /dev/null +++ b/_sources/references.rst.txt @@ -0,0 +1,7 @@ +References +========== + +The implementation of idol is based on a lot of scientific publications. Here is a selected subset. + +.. bibliography:: + :all: diff --git a/_sources/tutorials/bilevel-optimization/index.rst.txt b/_sources/tutorials/bilevel-optimization/index.rst.txt new file mode 100644 index 00000000..ce9bbc9e --- /dev/null +++ b/_sources/tutorials/bilevel-optimization/index.rst.txt @@ -0,0 +1,15 @@ +.. _bilevel: + +Bilevel Optimization +==================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. + + +.. toctree:: + :maxdepth: 3 + :glob: + + modeling/index diff --git a/_sources/tutorials/bilevel-optimization/modeling/index.rst.txt b/_sources/tutorials/bilevel-optimization/modeling/index.rst.txt new file mode 100644 index 00000000..80534045 --- /dev/null +++ b/_sources/tutorials/bilevel-optimization/modeling/index.rst.txt @@ -0,0 +1,13 @@ +Modeling +======== + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 1 + :glob: + + optimistic + mibs diff --git a/_sources/tutorials/bilevel-optimization/modeling/mibs.rst.txt b/_sources/tutorials/bilevel-optimization/modeling/mibs.rst.txt new file mode 100644 index 00000000..730c217e --- /dev/null +++ b/_sources/tutorials/bilevel-optimization/modeling/mibs.rst.txt @@ -0,0 +1,6 @@ +Solving Bilevel Problems with Coin-OR/MibS [TODO] +================================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/bilevel-optimization/modeling/optimistic.rst.txt b/_sources/tutorials/bilevel-optimization/modeling/optimistic.rst.txt new file mode 100644 index 00000000..7170b2fa --- /dev/null +++ b/_sources/tutorials/bilevel-optimization/modeling/optimistic.rst.txt @@ -0,0 +1,7 @@ +Modeling an Optimistic Bilevel Problem [TODO] +============================================= + + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/index.rst.txt b/_sources/tutorials/index.rst.txt new file mode 100644 index 00000000..899a81b5 --- /dev/null +++ b/_sources/tutorials/index.rst.txt @@ -0,0 +1,36 @@ +.. _tutorials: + +Tutorials +========= + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +Mixed-Integer Programming +------------------------- + +.. toctree:: + :maxdepth: 3 + :glob: + + mixed-integer-programming/index + +Robust Optimization +------------------- + +.. toctree:: + :maxdepth: 3 + :glob: + + robust-optimization/index + + +Bilevel Optimization +-------------------- + +.. toctree:: + :maxdepth: 3 + :glob: + + bilevel-optimization/index diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.rst.txt new file mode 100644 index 00000000..c0573535 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.rst.txt @@ -0,0 +1,6 @@ +Creating Your Own Branching Rule (Advanced) [TODO] +================================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-callback.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-callback.rst.txt new file mode 100644 index 00000000..aec7ac3d --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-callback.rst.txt @@ -0,0 +1,8 @@ +.. _tutorial_create_bb_callback: + +Create Your Own Callback (Advanced) [TODO] +========================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.rst.txt new file mode 100644 index 00000000..e0c4c853 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.rst.txt @@ -0,0 +1,6 @@ +Creating Your Own Node Selection Rule (Advanced) [TODO] +======================================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node.rst.txt new file mode 100644 index 00000000..2a76e7d3 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/create-node.rst.txt @@ -0,0 +1,6 @@ +Creating Your Own Node Class (Advanced) [TODO] +============================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/index.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/index.rst.txt new file mode 100644 index 00000000..8ab23168 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/index.rst.txt @@ -0,0 +1,17 @@ +Branch-and-Bound Algorithm +========================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 1 + :glob: + + write-branch-and-bound + user-cuts-lazy-constraints + create-callback + create-node + create-branching-rule + create-node-selection-rule diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.rst.txt new file mode 100644 index 00000000..8bca1539 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.rst.txt @@ -0,0 +1,6 @@ +Adding User Cuts and Lazy Constraints [TODO] +============================================ + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.rst.txt b/_sources/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.rst.txt new file mode 100644 index 00000000..c031523b --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.rst.txt @@ -0,0 +1,6 @@ +Writing an LP-based Branch-and-Bound [TODO] +=========================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.rst.txt new file mode 100644 index 00000000..cd4142a3 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.rst.txt @@ -0,0 +1,8 @@ +.. _tutorial_column_generation: + +Modeling and Solving A Dantzig-Wolfe Reformulation [TODO] +========================================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.rst.txt new file mode 100644 index 00000000..0c900feb --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.rst.txt @@ -0,0 +1,6 @@ +Using In-Out Stabilization [TODO] +================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/index.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/index.rst.txt new file mode 100644 index 00000000..9f54893c --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/index.rst.txt @@ -0,0 +1,17 @@ +Column Generation and Branch-and-Price Algorithm +================================================ + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 1 + :glob: + + dantzig-wolfe + in-out-stabilization + writing-branch-and-price + integer-master + strong-branching + writing-branch-and-cut-and-price diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.rst.txt new file mode 100644 index 00000000..d0fbaf72 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.rst.txt @@ -0,0 +1,6 @@ +The Integer Master Heuristic [TODO] +=================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.rst.txt new file mode 100644 index 00000000..d5095acd --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.rst.txt @@ -0,0 +1,298 @@ +.. _tutorials_dantzig_wolfe_gap: + +.. role:: cpp(code) + :language: cpp + +Branch-and-Price 101 +==================== + +In this section, we will show how to use the Branch-and-Price solver to solve the *Generalized Assignment Problem* (GAP) +using an external solver to solve each sub-problem. + +.. hint:: + + This tutorial regards the `advanced topic` of Column Generation and Dantzig-Wolfe decomposition. + Rudimentary notions in the following subjects are recommended: + + - `Column Generation and Branch-and-Price algorithms `_ + - `Dantzig-Wolfe decomposition `_ + - `Generalized Assignment Problem `_. + +.. seealso:: + + A `Benchmark on Generalized Assignment Problem `_ is + available. + +Mathematical Models +------------------- + +In this section, we assume that the reader is familiar with GAP. +Let :math:`m` be the number of agents and let :math:`n` be the number of tasks to be performed. + +Let :math:`c_{ij}` be the cost for assigning task :math:`j` to agent :math:`i`, :math:`w_{ij}` be the resource +consumption of task :math:`j` when performed by agent :math:`i` and let :math:`t_i` be the resource capacity of agent +:math:`i`. + +Original Formulation +^^^^^^^^^^^^^^^^^^^^ + +The Generalized Assignment Problem (GAP) can be modeled as + +.. math:: + + \min_x \quad & \sum_{i=1}^m\sum_{j=1}^n c_{ij} x_{ij} \\ + \textrm{s.t.} \quad & \sum_{j=1}^n w_{ij} x_{ij} \le t_i & i=1,...,m, \\ + & \sum_{i=1}^m x_{ij} = 1 & j = 1,...,n, \\ + & x_{ij}\in\{0,1\} & i=1,...,m, j=1,...,n. + +Here, variable :math:`x_{ij}` encodes the assignment decision and equals 1 if and only if task :math:`j` is assigned to +agent :math:`i`. + +Dantzig-Wolfe Reformulation +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Let us enumerate the list of all feasible assignments, i.e., let + +.. math:: + + \{\bar x^e_{ij} \}_{e\in E} = \left\{ x \in \{ 0,1 \}^{mn} : \sum_{j=1}^n w_{ij}x_{ij} \le t_i \quad i=1,...,m \right\}, + +in which :math:`E` denotes a list for their indices. The Dantzig-Wolfe reformulation of GAP reads + +.. math:: + + \min_{\lambda} \quad & \sum_{e\in E} \lambda_e\left( \sum_{i=1}^m\sum_{j=1}^n c_{ij}\bar x_{ij}^e \right) \\ + \textrm{s.t.} \quad & \sum_{e\in E} \lambda_e \left( \sum_{i=1}^m \bar x_{ij}^e \right) = 1 & j=1,...,n, \\ + & \sum_{e\in E} \lambda_e = 1, \\ + & \lambda_e \in \{ 0, 1 \} & \forall e\in E. + +Though this model contains an exponential number of variables (i.e., columns) it can be solved efficiently using +Column Generation and Branch-and-price. In such a case, the pricing problem is a Knapsack Problem. + +Automatic Reformulation +----------------------- + +The simplest way to solve a problem using Column Generation and idol is through its automatic reformulation feature. +To use this, one simply needs to give the *original space formulation* of the problem +and to indicate which constraints should be moved to the pricing problem (here, the knapsack constraints). + +The Original Formulation +^^^^^^^^^^^^^^^^^^^^^^^^ + +To read an instance for GAP, we first need to include the header file located in :code:`"idol/problems/generalized-assignment-problem/GAP_Instance.h"`. +This will allow us to use idol's instance parser for GAP. +Assuming that the instance file is named :code:`instance.txt`, it can be loaded as follows. + +.. code-block:: cpp + + const auto instance = Problems::GAP::read_instance("instance.txt"); + + const unsigned int n_agents = instance.n_agents(); + const unsigned int n_jobs = instance.n_jobs(); + +We are now ready to model our problem (for more details, refer to :ref:`this tutorial on modeling `) + +.. code-block:: cpp + + // Create optimization environment + Env env; + + // Create model + Model model(env); + + // Create assignment variables (x_ij binaries) + auto x = model.add_vars(Dim<2>(n_agents, n_jobs), 0., 1., Binary, "x"); + + // Create knapsack constraints (i.e., capacity constraints) + for (unsigned int i = 0 ; i < n_agents ; ++i) { + model.add_ctr(idol_Sum(j, Range(n_jobs), instance.resource_consumption(i, j) * x[i][j]) <= instance.capacity(i), "capacity_" + std::to_string(i)); + } + + // Create assignment constraints + for (unsigned int j = 0 ; j < n_jobs ; ++j) { + model.add(idol_Sum(i, Range(n_agents), x[i][j]) == 1, "assignment_" + std::to_string(j)); + } + + // Set the objective function + model.set_obj_expr(idol_Sum(i, Range(n_agents), idol_Sum(j, Range(n_jobs), instance.cost(i, j) * x[i][j]))); + +Giving Decomposition Instructions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We are now at the crucial step of indicating which constraint should be moved to the pricing problem. In idol, this is done by using +*annotations*. Annotations are additional information associated to an optimization object (e.g., a constraint or a variable). +Note that annotations are global, i.e., they do not relate to a given optimization model. + +Every annotation is formed with two template arguments: an optimization object type and a value type. Here, we want to add +annotations to constraints, thus, the optimization object type must be :code:`Ctr`. The value type can typically be any desired +type. Here, however, the Dantzig-Wolfe decomposition needs an annotation corresponding to an :code:`unsigned int` which corresponds +to the sub-problem index to which the constraint shall be moved to. Thus, we create the annotation as follows. + +.. code-block:: cpp + + Annotation decomposition(env, "decomposition", MasterId); + +Here, we pass three arguments to the constructor of :code:`Annotation`. First, we pass the optimization +environment which will store the annotation. Then, a name (mandatory) is given to the annotation, here, "decomposition". +Finally, a default value is given and equals "MasterId". This will tell idol that constraints which have not been annotated +should remain in the master problem. + +Now, observe how the annotation is applied to the capacity constraints. + +.. code:: cpp + + for (unsigned int i = 0 ; i < n_agents ; ++i) { + Ctr capacity = model.add_ctr(idol_Sum(j, Range(n_jobs), instance.resource_consumption(i, j) * x[i][j]) <= instance.capacity(i), "capacity_" + std::to_string(i)); + capacity.set(decomposition, i); // <-- Annotating the capacity constraint + } + +Here, the first capacity constraint is moved to the first pricing problem (id: 0), +the second constraint to the second pricing problem (id: 1), and so on. + +Note that another decomposition would be materialized as follows. + +.. code:: cpp + + for (unsigned int i = 0 ; i < n_agents ; ++i) { + Ctr capacity = model.add_ctr(idol_Sum(j, Range(n_jobs), instance.resource_consumption(i, j) * x[i][j]) <= instance.capacity(i), "capacity_" + std::to_string(i)); + capacity.set(decomposition, 0); // <-- Annotating the capacity constraint + } + +Here, all the knapsack constraints would be moved to the same pricing problem (id: 0). + +Creating the Branch-and-Price Algorithm +--------------------------------------- + +Now that the desired decomposition has been specified, we can specify the desired optimizer to solve our model. +Here, we want to solve our problem using a Branch-and-Price algorithm, i.e., a Branch-and-Bound algorithm where each node +in the Branch-and-Bound tree is solved by a Dantzig-Wolfe decomposition. + +To begin with, we need to give some specification about how each sub-problem will be solved. In other words, we need +to specify the optimizer(s) used for pricing during the column generation process. This is done by first creating a +:code:`DantzigWolfe::SubProblem` object. + +.. code:: cpp + + const auto sub_problem_specifications = DantzigWolfe::SubProblem() + .add_optimizer(Gurobi()); + +Then, we can create our Column Generation algorithm (factory) in the following way. + +.. code:: cpp + + const auto column_generation = DantzigWolfeDecomposition(decomposition) + .with_master_optimizer(Gurobi::ContinuousRelaxation()) + .with_default_sub_problem_spec(sub_problem_specifications); + +Here, we are solving the relaxed master problem using Gurobi. We also define our default sub-problem specifications to +be the one we just defined. + +Our remaining task is to embed our Column Generation routine inside of a Branch-and-Bound algorithm. +This can be done as follows. + +.. code:: cpp + + const auto branch_and_bound = BranchAndBound() + /* Each node is solved by Column Generation */ + .with_node_optimizer(column_generation) + + /* Variables are selected for branching using the most-infeasible rule */ + .with_branching_rule(MostInfeasible()) + + /* Nodes are selected using the best-bound rule */ + .with_node_selection_rule(BestBound()) + + /* The algorithm will run with a time limit of 3600 */ + .with_time_limit(3600) + + ); + +Then, we can tell idol to use this algorithm for solving our model by using the :code:`Model::use` method. + +.. code:: cpp + + model.use(branch_and_bound); + +Finally, one can simply call the :code:`Model::optimize` method as follows. + +.. code:: cpp + + model.optimize(); + + +That's it! The problem is being solved by column generation, and possibly branching on fractional variables. + +.. hint:: + + Note that it is possible to obtain logs using the `with_log_level` method on the desired optimizer. + For instance, one may want to have + logs for the branch-and-bound optimizer. Then, one should do as follows. + + .. code:: cpp + + model.use( + BranchAndBound() + + /* ... omitting identical details */ + + .with_log_level(Info, Blue) + ); + +The rest remains unchanged and one can use :code:`Model::optimize` to solve the problem and retrieve the solution +through methods like :code:`Model::get_status` and :code:`Model::get_var_primal`. + +.. admonition:: Example + + Here, we can solve our model using a Dantzig-Wolfe decomposition. + + .. code-block:: + + model.optimize(); + + std::cout << save_primal(model) << std::endl; + + This will produce the following output (e.g.). + + .. code-block:: text + + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [branch-and-bound] + [2023-04-07 13:45:44] [info] [branch-and-bound] + [2023-04-07 13:45:44] [info] [branch-and-bound] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + [2023-04-07 13:45:44] [info] [dantzig-wolfe] + + +----------------------- + | Status: Optimal + | Reason: Proved + | ObjVal: -233.00 + | Values: + | x_1_7 = 1.00 + | x_2_0 = 1.00 + | x_2_1 = 1.00 + | x_1_4 = 1.00 + | x_1_5 = 1.00 + | x_0_6 = 1.00 + | x_0_2 = 1.00 + | x_0_3 = 1.00 + +----------------------- diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.rst.txt new file mode 100644 index 00000000..d8817e27 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.rst.txt @@ -0,0 +1,15 @@ +.. _tutorials_dantzig_wolfe_heuristic: + +.. role:: cpp(code) + :language: cpp + +Heuristic Pricing (to come) +=========================== + +Hey, you've implemented your first Branch-and-Price algorithm and are curious about how to use your own heuristic for +pricing during the Column Generation algorithm? Then you are at the right place! If not, make sure to check the +`Generalized Assignment Problem tutorial <_tutorials_dantzig_wolfe>`_. + +.. warning:: + + This tutorial is still under construction. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.rst.txt new file mode 100644 index 00000000..8e2eaafa --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.rst.txt @@ -0,0 +1,15 @@ +.. _tutorials_dantzig_wolfe_stabilization: + +.. role:: cpp(code) + :language: cpp + +In-Out Stabilization (to come) +============================== + +Hey, you've implemented your first Branch-and-Price algorithm and are curious about how to stabilize your Column +Generation algorithm? Then you are at the right place! If not, make sure to check the +`Generalized Assignment Problem tutorial <_tutorials_dantzig_wolfe>`_. + +.. warning:: + + This tutorial is still under construction. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.rst.txt new file mode 100644 index 00000000..e0c3793e --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.rst.txt @@ -0,0 +1,198 @@ +Using Strong Branching +====================== + +.. contents:: Table of Contents + :local: + :depth: 2 + +Basics +------ + +Strong Branching is a technique that falls into the category of *variable selection rules*, a crucial aspect of +Branch-and-Bound algorithms. + +More specifically, the task is to decide which variable to branch on at each node of the Branch-and-Bound tree, i.e, +among a set of branching candidates whose value must be integer, one must +decide which variable with fractional value in the current solution of the relaxation to choose for creating +child nodes. + +The most common rule is the so-called *Most-Infeasible* rule, which selects a variable whose fractional +part is closest to `0.5`. Unfortunately, this rule performs badly in practice. Most importantly, if solving a node is +computationally hard, it makes sense to spend some time in carefully choosing the variable to branch on. This is typically +the case when nodes are solved using Column Generation. + +.. info:: + + Clearly, Strong Branching is not only used in the context of column generation. It is a general technique that can be + used in any context where solving a node is computationally expensive. Thus, this tutorial is not specific to the + context of column generation, though we will use it as an example. + +The idea of Strong Branching is to evaluate the effect of branching on a variable before branching actually happens. + +To be more clear, let :math:`C` be a set of indices for branching candidates at a given node, i.e., for each :math:`j\in C`, +:math:`x_j` is an integer variable in the original problem but with :math:`x_j^*\notin\mathbb Z` at the current node. +Strong Branching tries to evaluate the effect of applying branching constraints :math:`x_j \le \lfloor x_j^* \rfloor` and +:math:`x_j \ge \lceil x_j^* \rceil` to the current node. To do so, it solves, before branching happens, and for each :math:`j\in C`, +both the left and right child node. Let :math:`z_i^\le` and :math:`z_i^\ge` denote the (optimal) value of the +left and right nodes if branching is performed on :math:`x_j`. The "effect of branching on :math:`x_j`" is then estimated by +computing a score, noted :math:`\text{Score}(j)`, based on :math:`z_j^\le` and :math:`z_j^\ge`. Then Strong Branching +selects the variable with an index :math:`j^*` such that (for minimization problems) + +.. math:: + + j^* \in \text{argmax}\{ \text{Score}(j) : j\in C \}. + +Empirically, Strong Branching is known to produce substantially smaller Branch-and-Bound trees compared to other +branching rules. Unfortunately, computing :math:`\text{Score}(j)` typically requires a lot of time. To avoid this, +several techniques have been designed such as *Restricted Strong Branching* and *Strong Branching with Phases* (see below). + +For more details, please refer to :cite:`ACHTERBERG200542`. + +Scoring Functions +^^^^^^^^^^^^^^^^^ + +Two common scoring functions :math:`\text{Score}(j)` are found in the literature. The *linear* formula :cite:`Linderoth1999` + +.. math:: + + \text{LinearScore}(j) := (1 - \mu) \min(\Delta_j^\le, \Delta_j^\ge) + \mu \max(\Delta_j^\le, \Delta_j^\ge), + +and the *product* formula + +.. math:: + + \text{ProductScore}(j) := \max(\Delta_j^\le, \varepsilon) \max(\Delta_j^\ge, \varepsilon), + +in which :math:`\Delta_j^\le := z_j^\le - z^*` and :math:`\Delta_j^\ge := z_j^\ge - z^*` with :math:`z^*` denoting the +(optimal) value of the current node. Parameters :math:`\mu\in[0,1]` and :math:`\varepsilon > 0` are given. +In idol, :math:`\mu = 1/6` and :math:`\varepsilon = 10^{-6}`. + +Variants +^^^^^^^^ + +There are several variants of Strong Branching. The most common ones are: + +* **Full Strong Branching** denotes the standard Strong Branching rule which solves all :math:`2|C|` nodes at each branching + decision. The drawback of this approach is that it may take a lot of time to solve all these sub-problems before branching + actually happens. +* **Restricted Strong Branching** is an attempt to reduce the computational burden of Full Strong Branching. The idea is to + consider only a maximum of :math:`K` branching candidates at each branching decision instead of the whole set :math:`C`. + Thus, :math:`C` is replaced by a smaller set :math:`R\subseteq C` such that :math:`|R| = K` with :math:`K` fixed. + The "restricted branching candidate set" :math:`R` is created by taking the :math:`K` first variables selected by, yet + another, branching rule, e.g., the most-infeasible rule. +* **Strong Branching with Look Ahead** is similar to *Restricted Strong Branching* yet differs from it by not specifying a + fixed size for the "restricted branching candidate set" :math:`R`. Instead, it considers a look ahead parameter, noted + :math:`L`, and applies the Full Strong Branching rule. However, if the branching candidate does not change after :math:`L` + iterations, the algorithm stops and the current branching candidate is returned. +* **Strong Branching with Phases** is a combination of the above three approaches which applies different schemes depending + on the level of the current node in the Branch-and-Bound tree. Additionally, it allows to solve each node only approximately + by, e.g., imposing a maximum number of iterations for the underlying Column Generation algorithm. + +Implementation +-------------- + +This section explains how to use the Strong Branching rule in idol. +It is based on the Generalized Assignment Problem example from the :ref:`Column Generation `. +More specifically, we will assume that you have a variable +:code:`model` of type :code:`Model` which has a decomposable structure specified by the annotation :code:`(Annotation) decomposition`. + +Full Strong Branching +^^^^^^^^^^^^^^^^^^^^^ + +Recall that the Branch-and-Price algorithm is created by the following code. + +.. code:: cpp + + const auto column_generation = + DantzigWolfeDecomposition(decomposition) + .with_master_optimizer(Gurobi::ContinuousRelaxation()) + .with_default_sub_problem_spec( + DantzigWolfe::SubProblem() + .add_optimizer(Gurobi()) + ); + +Now, we will show how to use Strong Branching as a branching rule. This is done while creating our Branch-and-Bound algorithm. In +particular, we will use the :code:`StrongBranching` class to define our branching rule. We can, for instance, simply +declare + +.. code:: cpp + + const auto branching_rule = + StrongBranching(); + +which will create a new Full Strong Branching rule. Just like any other branching rule, it can be used by calling the +:code:`BranchAndBound::with_branching_rule` method. + +.. code:: cpp + + const auto branch_and_bound = + BranchAndBound() + .with_branching_rule(branching_rule) + .with_node_selection_strategy(BestBound()); + +Then, we can write a Branch-and-Price algorithm and solve our problem as follows. + +.. code:: cpp + + const auto branch_and_price = branch_and_bound + column_generation; + + model.use(branch_and_price); + + model.optimize(); + +Beware that here, we only implemented Full Strong Branching which, as we saw, is not computationally convenient... +Let's see how to implemented Restricted Strong Branching. + +Restricted Strong Branching +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To implement Restricted Branching, one simply needs to call the :code:`StrongBranching::with_max_n_variables` method. +This is done as follows. + +.. code:: cpp + + const auto branching_rule = + StrongBranching() + .with_max_n_variables(50); + +Here, we set the maximum number of considered variables equal to :math:`K = 50`. + +Phases +^^^^^^ + +In this section, we will discuss how to implement phases with the strong branching rule. This is done by using the +:code:`StrongBranching::add_phase` method. This method takes three arguments: a phase type, which is used to indicate +how each node should be solved, e.g., with some iteration limit, a maximum number of variables to consider, for restricted +strong branching, and a maximum depth, used to trigger the phase based on the level of the current node in the Branch-and-Bound +tree. + +Here is an instance of strong branching with phases which, for nodes whose level is below or equal to 3, applies Full +Strong Branching, then switches to Restricted Strong Branching with :math:`K = 30` and which solves nodes with an iteration +limit of 20. + +.. code:: cpp + + const auto branching_rule = + StrongBranching() + .add_phase(StrongBranchingPhases::WithNodeOptimizer(), std::numeric_limits::max(), 3) + .add_phase(StrongBranchingPhases::WithIterationLimit(20), 30, std::numeric_limits::max()); + +Observe how we used :code:`std::numeric_limits::max()` to remove restrictions on the number of +considered variables and on the maximum depth for the final phase. Note that, by default, if no phase is triggered for a +given depth, e.g., because it was not specified, Full Strong Branching is applied. Here, however, we make sure that the +second phase is always triggered. + +Changing the Scoring Function +----------------------------- + +The scoring function can be changed by calling the :code:`StrongBranching::with_scoring_function` method. This method +takes a scoring function as an argument. The scoring function is a sub-class of :code:`NodeScoreFunction` and can be +:code:`Linear` or :code:`Product`. + +By default, idol uses the product scoring function. To change it to the linear scoring function, one can simply write + +.. code:: + + const auto branching_rule = + StrongBranching() + .with_scoring_function(NodeScoreFunctions::Linear()); diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.rst.txt new file mode 100644 index 00000000..8d6500ff --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.rst.txt @@ -0,0 +1,6 @@ +Writing A Branch-and-Cut-and-Price Algorithm [TODO] +=================================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.rst.txt b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.rst.txt new file mode 100644 index 00000000..04ac0519 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.rst.txt @@ -0,0 +1,6 @@ +Writing A Branch-and-Price Algorithm [TODO] +=========================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/index.rst.txt b/_sources/tutorials/mixed-integer-programming/index.rst.txt new file mode 100644 index 00000000..6784b537 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/index.rst.txt @@ -0,0 +1,17 @@ +.. _mip: + +Mixed-Integer Programming +========================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 2 + :glob: + + modeling/index + optimizers/index + branch-and-bound/index + dantzig-wolfe/index diff --git a/_sources/tutorials/mixed-integer-programming/modeling/constraints.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/constraints.rst.txt new file mode 100644 index 00000000..aa159efc --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/constraints.rst.txt @@ -0,0 +1,106 @@ +.. _api_constraints: + +Constraints +----------- + +.. contents:: Table of Contents + :local: + :depth: 2 + +Creating Constraints +^^^^^^^^^^^^^^^^^^^^ + +Similarly to variables, constraints are easily created and added to a given ``Model``. + +Constraints can be created by calling the constructor of the :ref:`Ctr ` class and added to a model by means of +:cpp:`Model::add` or by calling the :cpp:`Model::add_ctr` method. See for instance. + +.. code:: + + Env env; + Model model(env); + + Var x_0(env, 0., Inf, Continuous, "x_0"); + Var x_1(env, 0., Inf, Continuous, "x_1"); + Ctr constraint(env, x_0 + x_1 >= 1); + + model.add(x_0); + model.add(x_1); + model.add(constraint); + +A more compact version of this code is obtained by making use of the ``Model::add_vars`` and ``Model::add_ctr`` methods. + +.. code-block:: cpp + + Env env; + Model model(env); + + const auto x = model.add_vars(Dim<1>(2), 0., Inf, Continuous, "x"); + const auto constraint = model.add_ctr(x[0] + x[1] >= 1); + +As you can see, a constraint is created using the pattern :code:`{expression} {sign} {expression}` where + +* :code:`{sign}` is one of :code:`<=`, :code:`>=` and :code:`==`; +* :code:`{expression}` is an expression, i.e., an instance of :code:`Expr`. + +Actually, the pattern :code:`{expression} {sign} {expression}` only creates a "temporary" constraint, i.e., a constraint +which is not associated to any model. This is why we need to add it to a model by calling the :code:`Model::add_ctr` method. +Temporary constraints are objects of the class :ref:`TempCtr `. An equivalent code would be. + +.. code:: cpp + + Env env; + Model model(env); + + const auto x = model.add_vars(Dim<1>(2), 0., Inf, Continuous, "x"); + const auto temporary_constraint = TempCtr(Row(x[0] + x[1], 1), GreaterThan); + + model.add_ctr(temporary_constraint); + +Here, we used the class :ref:`Row ` to create the row associated to the constraint. The sign of the constraint is +specified by the second argument of the constructor of the :ref:`TempCtr ` class, and can take values +:code:`LessThan`, :code:`GreaterThan` and :code:`EqualTo`. + +Accessing Constraints +^^^^^^^^^^^^^^^^^^^^^ + +Information about a given constraint in a model can be accessed by calling the corresponding methods of the model. +The type of a constraint can be accessed by calling the :cpp:`Model::get_ctr_type` method. The row of a constraint can be +accessed by calling the :cpp:`Model::get_ctr_row` method. + +If a given model has been solved and feasibility could be proved (or better, optimality), the dual value of a constraint +can be accessed by calling the :cpp:`Model::get_ctr_dual` method. +For infeasible models, a Farkas certificate (dual ray) can be accessed by calling the :cpp:`Model::get_ctr_farkas` method. + +The :cpp:`Model::has` method can be used to check if a given constraint is in the model. + +The current index of a constraint in the model can be accessed by calling the :cpp:`Model::get_ctr_index` method. +Beware, however, that the index may change if the model is modified. + +For more details, see the :ref:`Model ` class. + +Modifying Constraints +^^^^^^^^^^^^^^^^^^^^^ + +The type of a constraint can be modified by calling the :cpp:`Ctr::set_ctr_type` method. +The value of the right-hand side of a constraint can be modified by calling the :cpp:`Ctr::set_rhs` method. + +The row of a constraint in the model can be modified by calling the :cpp:`Ctr::set_row` method. +For instance. + +.. code:: cpp + + Row row; + row.set_rhs(2); + row.linear().set(x, coefficient_for_x_in_constraint); + row.linear().set(y, coefficient_for_y_in_constraint); + + constraint.set_ctr_row(constraint, row); + +For more details, see the :ref:`Model ` class. + +Removing Constraints +^^^^^^^^^^^^^^^^^^^^ + +A constraint can be removed from a model by calling the :cpp:`Model::remove` method. + diff --git a/_sources/tutorials/mixed-integer-programming/modeling/environment.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/environment.rst.txt new file mode 100644 index 00000000..7017cfbf --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/environment.rst.txt @@ -0,0 +1,14 @@ +The Environment +--------------- + +Every optimization object (such as variables and constraints) are managed by an "optimization environment". +It is the environment that controls the death and life of such objects. It is also through the environment that idol +manages the different versions each optimization object may have during the execution of your program. + +Typically, only one environment should be used by your code. Yet, it is not forbidden to have several environments at the same time (not advised). + +Environments are objects of the :ref:`Env ` class, and can be created as follows. + +.. code-block:: + + Env env; // Creates a new optimization environment. diff --git a/_sources/tutorials/mixed-integer-programming/modeling/expressions.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/expressions.rst.txt new file mode 100644 index 00000000..b1b55c88 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/expressions.rst.txt @@ -0,0 +1,80 @@ +Expressions +----------- + +An expression generically refers to any mathematical expression involving variables or constraints. In idol, expressions +are represented by the :ref:`Expr ` class. + +An expression can be created by adding, subtracting or multiplying variables with constants or other expressions. For instance, +the following code creates the mathematical expression :math:`1 + 3 x_0 + x_1 + x_0 + 2 x_0 x_1`. + +.. code:: cpp + + const Expr expr = 1 + 3 * x[0] + x[1] + x[0] + 2 * x[0] * x[1]; + + std::cout << expr << std::endl; // "1 + 4 * x[0] + 1 * x[1] + 2 * x[0] * x[1]" + +Expressions are composed of three parts: + +* A constant (or offset) which is an instance of the :ref:`Constant ` class; +* A linear part which is an instance of the :ref:`LinExpr ` class; +* A quadratic part which is an instance of the :ref:`QuadExpr ` class. + +Each of these parts can be accessed using the methods :cpp:`Expr::constant`, :cpp:`Expr::linear` and :cpp:`Expr::quadratic`, respectively. +For instance, consider the following code. + +.. code-block:: cpp + + for (const auto& [var, coefficient] : expr.linear()) { + std::cout << var << " is multiplied by " << coefficient << std::endl; + } + +This code iterates over the linear part of the expression and prints the variables and their coefficients. + + +.. admonition:: About constants in expressions + + Without going into too much detail, we should here precise that each constant multiplying a variable in an :cpp:`Expr`, + as well as the offset constant, can actually be composite. For instance, this is the case when a variable is multiplied by + a parameter which is considered fixed in the current model but cannot be evaluated at the time the expression is created. + + Creating such "parameters" can be done by prepending a variable with the ``!`` symbol. This will automatically + create an instance of the :ref:`Param ` class. + For instance, the following code creates + a constant which involves the variables :math:`\xi_0` and :math:`\xi_1`, viewed as parameters. + + .. code-block:: + + Env env; + const Model model(env); + const auto x = model.add_vars(Dim<1>(2), 0., Inf, Continuous, "x"); + + const Model model2(env); + const auto xi = model2.add_vars(Dim<1>(2), 0., 1., Continuous, "xi"); + + const Expr expr = (1 + 2 * !xi[0]) * x[0] + 3 * !xi[1] * x[1]; + + Here, ``1 + 2 * !xi_0`` is an instance of the ``Constant`` object and can be used as follows. + + .. code-block:: + + Constant constant = 1 + 2 * !xi_0; + + std::cout << constant.numerical() << std::endl; // output: 1 + + for (const auto& [param, coeff] : constant) { + std::cout << coeff << " * " << param << std::endl; // output: 2 * !xi_0 + } + + Note that a parameter can be turned back into a variable by calling the :cpp:`Param::as` template method. + See, for instance. + + .. code-block:: cpp + + const auto param = !xi[0]; + + if (param.is()) { + const auto var = param.as(); + // do somthing with the variable + } + + Parameters can be variables or constraints. diff --git a/_sources/tutorials/mixed-integer-programming/modeling/index.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/index.rst.txt new file mode 100644 index 00000000..ebd207c1 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/index.rst.txt @@ -0,0 +1,30 @@ +.. _mip_modeling: + +.. role:: cpp(code) + :language: cpp + +Modeling +======== + +This page introduces the basic concepts of modeling optimization problems in idol. +We will discuss how to create optimization models and add variables, constraints and objective functions to that model. +We will also see how to access the different components of an existing model. + + +All classes which are used for modeling (standard) optimization problems can be accessed by including :code:`#include `. + +To simplify things, we will use the :code:`namespace idol` in the following examples. This dispenses us from prefixing +every class with :code:`idol::`. For instance, we will use :code:`Model` instead of :code:`idol::Model`. + +Let's get started. + +.. toctree:: + :maxdepth: 1 + :glob: + + environment + models + variables + expressions + constraints + objective-function diff --git a/_sources/tutorials/mixed-integer-programming/modeling/models.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/models.rst.txt new file mode 100644 index 00000000..fd8ee2a6 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/models.rst.txt @@ -0,0 +1,86 @@ +Models +------ + +The :ref:`Model ` class is used to represent a (standard) optimization model, i.e., a mathematical program of the form + +.. math:: + + \begin{align} + \min_x \ & c^\top x + x^\top D x + c_0 \\ + \text{s.t.} \ & a_{(i)}^\top x + x^\top Q^i x \le b_i \quad i=1,\dotsc,m \\ + & x_j \in \mathbb Z \quad j=1,\dotsc,p + \end{align} + +Here, :math:`x_j` are the decision variables of this optimization problem while matrices :math:`c, D, A` and :math:`Q^i` are given +input parameters for this model. Additionally, variables :math:`x_j` having :math:`j\in\{ 1,\dotsc,p \}` have to be integer-valued. + + +.. contents:: Table of Contents + :local: + :depth: 2 + +Creating a Model +^^^^^^^^^^^^^^^^ + +A Model is created by calling the constructor of the :cpp:`Model` class. Note that it is necessary to pass an environment +to the constructor. + +The following code creates a new optimization model. + +.. code-block:: cpp + + Env env; + Model model(env); + +We can now define our decision variables and constraints, and add an objective function to our model. +This is detailed in the :ref:`Variables `, :ref:`Constraints ` and :ref:`Objective ` sections. + +Reading a Model from a File +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +A Model can also be created by reading a model from a file (typically, an MPS or an LP file). +To do this, idol relies on an external solver. The following code reads a model from a file using Gurobi. + +.. code-block:: cpp + + Env env; + auto model = Gurobi::read_from_file(env, "/path/to/model.mps"); + // auto model = GLPK::read_from_file(env, "/path/to/model.mps"); + +Writing a Model to a File +^^^^^^^^^^^^^^^^^^^^^^^^^ + +To write an optimization model to a file, the easiest way is again to rely on an external solver. +This is done by attaching a solver to a model, then by calling the :code:`Model::write` method. + +.. code:: + + Env env; + Model model = some_function_creating_my_model(env); // this is assumed to create the desired optimization model + + model.use(Gurobi()); // We will use Gurobi as the optimizer + + model.write("instance.lp"); // Creates a new file "instance.lp" storing the model + +Iterating over the Variables and Constraints +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The :ref:`Model ` class provides methods to iterate over the variables and constraints of the model. +See for instance, the following example. + +.. code-block:: cpp + + for (const auto& var : model.vars()) { + std::cout << "Variable " << var.name() << " belongs to the model." << std::endl; + } + + for (const auto& ctr : model.ctrs()) { + std::cout << "Constraint " << ctr.name() << " belongs to the model." << std::endl; + } + +The number of variables and constraints can be obtained by doing the following. + +.. code:: cpp + + std::cout << "Nb. of variables: " << model.vars().size() << std::endl; + std::cout << "Nb. of constraints: " << model.ctrs().size() << std::endl; diff --git a/_sources/tutorials/mixed-integer-programming/modeling/objective-function.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/objective-function.rst.txt new file mode 100644 index 00000000..b697101d --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/objective-function.rst.txt @@ -0,0 +1,45 @@ +.. _api_objective_functions: + +Objective Functions +=================== + +.. contents:: Table of Contents + :local: + :depth: 2 + +Adding an Objective Function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The objective function of an optimization model can specified by the ``Model::set_obj_expr`` method. The objective function is a linear expression of the decision variables. + +Here is an example which sets the objective function to :math:`-x_0 + 2 x_1`; + +.. code-block:: + + model.set_obj_expr(-x_0 + 2 * x_1); + +Accessing the Objective Function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The objective function can be accessed using the ``Model::get_obj_expr`` method. +The objective sense can be accessed using the ``Model::get_obj_sense`` method. + +If a given model has been solved, the best objective function value can be accessed using the ``Model::get_best_obj`` method. +The best bound can be accessed using the ``Model::get_best_bound`` method. + +Changing the Optimization Sense +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To change the optimization sense, use the ``Model::set_obj_sense`` method. +The optimization sense can be either ``Minimize`` or ``Maximize``. For instance, + +.. code:: cpp + + model.set_obj_sense(Maximize); + +Alternatively, one can use the constructor of the ``Model`` class to set the optimization sense. + +.. code:: cpp + + Env env; + Model model(env, Maximize); // Creates a model for maximization diff --git a/_sources/tutorials/mixed-integer-programming/modeling/variables.rst.txt b/_sources/tutorials/mixed-integer-programming/modeling/variables.rst.txt new file mode 100644 index 00000000..1f625947 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/modeling/variables.rst.txt @@ -0,0 +1,149 @@ +.. _api_variables: + +Variables +--------- + +Variables are the decision variables of an optimization problem. They are the objects that we want to find the best +values for, with respect to some objective function given the specified constraints. + +.. contents:: Table of Contents + :local: + :depth: 2 + +Creating Variables +^^^^^^^^^^^^^^^^^^^ + +There are mainly two ways to create variables in idol. The first one is to use the :ref:`Var ` class directly, and the +second one is to use the :cpp:`Model::add_var` method. + +Using the :cpp:`Var` class directly creates a variable that is not associated to any model. We will there need to add it +explicitly to a model. This is done by calling the :cpp:`Model::add` method. See for instance the following code which +creates a continuous variable :math:`x`, with bounds :math:`[0,\infty)`, and adds it to the model. + +.. code:: cpp + + Var x(env, 0., Inf, Continuous, "x"); + + model.add(x); // Variable x is added to the model + +Note that a variable may belong to several models at the same time. Each version of the variable in each model is then independent. +For instance, one could do the following. + +.. code:: cpp + + Var x(env, 0., Inf, Continuous, "x"); + + model.add(x); + + Model model2(env); + model2.add(x); + model2.set_var_ub(x, 10.); + +In this example, the variable :math:`x` is added to two different models. The upper bound of :math:`x` in the second model +is then set to 10. The upper bound of :math:`x` in the first model is not affected by this change. + +A more straightforward way to create variables is to call the ``add_var`` method of the ``Model`` class. +For instance, one can do: + +.. code-block:: cpp + + const auto x = model.add_var(0, Inf, Continuous, "x"); + +Here, we do not need to repeat the environment since the model's environment is used by default. Moreover, we do not need to +explicitly add the variable to the model since it is done automatically by the ``add_var`` method. + +Again, a variable may belong to several models at the same time. And we can do as follows. + +.. code:: cpp + + const auto x = model.add_var(0, Inf, Continuous, "x"); + + Model model2(env); + model2.add(x); + model2.set_var_ub(x, 10.); + +Note that an even more compact version of the previous code is obtained by using the ``Model::add`` method with additional +parameters. For instance, the following code is equivalent to the previous one. + +.. code:: cpp + + const auto x = model.add(0, Inf, Continuous, "x"); + + Model model2(env); + model2.add(x, TempVar(0, 10, Continuous)); + +Here, we used the class :ref:`TempVar ` to create a temporary variable. A temporary variable is a variable +which has not been instantiate yet. It is only a "template" of a variable specifying its bounds and type. Here, we therefore +add the variable :math:`x` to the second model and directly set its attributes (bounds and type) accordingly. + +Creating Several Variables at Once +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sometimes, you will find it convenient to create several variables at once. This can be done by calling the ``Var::make_vector`` +function, or the ``Model::add_vars`` method. These functions require +an extra parameter specifying the dimension of the new variable. + +For instance, the following code creates variables :math:`y_{ij}` with :math:`i=1,...,K` and :math:`j=1,...,T`. + +.. code:: cpp + + const auto y = Var::make_vector(env, Dim<2>(K, T), 0., Inf, Continuous, "y"); + + model.add_vector(y); + + std::cout << y[0][0] << std::endl; // "y_0_0" + +Similarly, one could use the more direct ``Model::add_vars`` method. + +.. code:: cpp + + const auto y = model.add_vars(Dim<2>(K, T), 0., Inf, Continuous, "y"); + + std::cout << y[0][0] << std::endl; // "y_0_0" + +Integer and binary variables can be created by setting the type of the variable to :cpp:`Integer` and :cpp:`Binary` respectively. + +Accessing Variables +^^^^^^^^^^^^^^^^^^^ + +Information about a given variable in a model can be accessed by calling the corresponding methods of the model. For instance, +one can access the lower bound of a variable by calling the :cpp:`Model::get_var_lb` method. Similarly, the upper bound of a +variable can be accessed by calling the :cpp:`Model::get_var_ub` method. The type of a variable can be accessed by calling the +:cpp:`Model::get_var_type` method. The column of a variable in the model can be accessed by calling the :cpp:`Model::get_var_column` +method. + +If a given model has been solved and feasibility could be proved (or better, optimality), the value of a variable +can be accessed by calling the :cpp:`Model::get_var_primal` method. +When applicable, its reduced cost can be accessed by calling the :cpp:`Model::get_var_reduced_cost` method. +Similarly, for unbounded models, a primal ray can be accessed by calling the :cpp:`Model::get_var_ray` method. + +The :cpp:`Model::has` method can be used to check if a given variable is in the model. + +The current index of a variable in the model can be accessed by calling the :cpp:`Model::get_var_index` method. +Beware, however, that the index may change if the model is modified. + +For more details, see the :ref:`Model ` class. + +Modifying Variables +^^^^^^^^^^^^^^^^^^^ + +The bounds of a variable can be modified by calling the :cpp:`Model::set_var_lb` and :cpp:`Model::set_var_ub` methods. +The type of a variable can be modified by calling the :cpp:`Model::set_var_type` method. + +The column of a variable in the model can be modified by calling the :cpp:`Model::set_var_column` method. +For instance. + +.. code:: cpp + + Column column(objective_coefficient_for_x); + column.linear().set(constraint1, constraint1_coefficient_for_x); + column.linear().set(constraint2, constraint2_coefficient_for_x); + + model.set_var_column(x, column); + +For more details, see the :ref:`Model ` class. + +Removing Variables +^^^^^^^^^^^^^^^^^^ + +A variable can be removed from a model by calling the :cpp:`Model::remove` method. diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/access-optimizer.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/access-optimizer.rst.txt new file mode 100644 index 00000000..bc018a79 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/access-optimizer.rst.txt @@ -0,0 +1,32 @@ +Getting Access to The Underlying Optimizer +========================================== + +In some situations, you may want to access the underlying optimizer. +For instance, this could be the case if you want to get optimizer-specific information which are not exposed by the :code:`Model` interface. + +In this case, you can use the :code:`Model::optimizer` method. Note that this method +will return a reference of type :code:`Optimizer&`. + +To access optimizer-specific routines, you will need to cast the reference to the appropriate optimizer type. +This is made easier by the :code:`Optimizer::as` and :code:`Optimizer::is` methods, which allow you to cast the optimizer to a specific type or check if it is of a specific type. + +For instance, the following code shows how to access the underlying Gurobi optimizer of model. + +.. code:: + + Env env; + Model model(env); + const auto x = model.add_var(0.0, 1.0, Continuous, Column(-1), "x"); + + model.use(Gurobi()); + model.optimize(); + + auto& gurobi_optimizer = model.optimizer().as(); // Cast the optimizer to "Optimizers::Gurobi" + + GRBVar& var = gurobi_optimizer[x]; // Access the optimizer-specific routines + +.. warning:: + + A common mistake is to try to cast the optimizer to the wrong type. In particular, to cast optimizer to its + optimizer factory type (e.g., :code:`Gurobi` instead of :code:`Optimizers::Gurobi`). + This will result in a runtime error. diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/create-optimizer.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/create-optimizer.rst.txt new file mode 100644 index 00000000..f5f2e67b --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/create-optimizer.rst.txt @@ -0,0 +1,6 @@ +Creating Your Own Optimizer (Advanced) [TODO] +============================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/create-universal-callback.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/create-universal-callback.rst.txt new file mode 100644 index 00000000..105d953e --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/create-universal-callback.rst.txt @@ -0,0 +1,214 @@ +.. _tutorial_create_callback: + +Creating Your Own Universal Callback +==================================== + +In this page, we will show you how to create your own universal callback. +Universal callbacks are callbacks which are not specific to a particular solver. In that sense, they are generic and can be +used with any solver. + +Note that there are also solver-specific callbacks, which are specific to a particular solver. +If you are looking for this, you can refer to :ref:`this page `. + +Creating your own callback can useful if you want to create a callback that is not included in the +default set of callbacks implemented in idol. +If you are looking for quick and easy-to-use callbacks for separating user cuts or lazy constraints, +you can refer to :ref:`this page `. + +.. contents:: Table of Contents + :local: + :depth: 2 + +Basics +^^^^^^ + +Creating your callback is done by creating a sub-class of the :ref:`Callback ` class and overriding the +:code:`Callack::operator()` method. It is this method that will be called by the solver at each iteration. + +Note, however, that callbacks cannot be given "as-is" to an optimizer but must be passed through a :ref:`CallbackFactory `. A callback +factory is a class whose role is to create a new callback object whenever it is needed. Every callback factories must be +a child (or little child) of the :ref:`CallbackFactory ` class. + +The following code shows how to create a callback factory and a callback that prints the value of the primal solution at each +iteration. + +.. code:: cpp + + class MyCallback : public CallbackFactory { + public: + + class Strategy { // Real callback implementation + protected: + void operator()(CallbackEvent t_event) { + + if (t_event != IncumbentSolution) { + return; + } + + std::cout << primal_solution() << std::endl; + } + } + + Callback* operator()() { // Creates a new callback object + return new Strategy(); + } + + CallbackFactory* clone() const { // Creates a copy of the callback factory + return new MyCallback(*this); + } + + } + +As you can see, the callback factory has two important methods: :code:`operator()` and :code:`clone()`. The :code:`operator()` +method is used to create a new callback object, while the :code:`clone()` method is used to create a copy of the callback factory. + +The nested class :code:`Strategy` is the actual callback implementation. It is a sub-class of the :ref:`Callback ` class and +overrides the :code:`operator()` method. In this example, the callback prints the value of the primal solution whenever the event +triggering the callback is :code:`IncumbentSolution`. In other words, this callback will print out all incumbent solutions found by the solver. + +As for the :ref:`UserCutCallback ` and :ref:`LazyConstraintCallback ` classes, +our new callback can be added to an optimizer as follows. + +.. code:: cpp + + model.use( + Gurobi().add_callback(MyCallback()) + ); + + model.optimize(); + +A Simple Example: Knapsack Cover Cuts +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. hint:: + + This section is dedicated to the "advanced topic" of knapsack cover inequalities. + Rudimentary notions on `Knapsack problems `_ and + `Cover inequalities `_ are recommended. + + +In this example, we will show how to create a callback that separates knapsack cover cuts. A knapsack cover cut is a valid inequality +for the knapsack problem. It is defined as follows: + +.. math:: + + \sum_{i \in C} x_i \leq |C| - 1 + + +where :math:`C` defines a cover of the knapsack, i.e., a set of items such that the sum of their weights is greater than the capacity of the knapsack. + +Given a solution :math:`\hat x` to the continuous relaxation of the knapsack problem, we can check whether it violates a cover inequality. +This is done by solving the following separation problem. + +.. math:: + + \begin{align} + \max_{z} \ & (1 - \hat x)^\top z & \ge 1 \\ + \text{s.t.} \ & w^\top z \ge W + 1, \\ + & z\in\{0,1\}^n. + \end{align} + +A cover inequality is violated if and only if the optimal objective value of this problem is strictly less than 1. +In such a case, a new cut should be added. + +We will write a callback that separates knapsack cover cuts. + +To this end, we first create our knapsack problem model. This is done as follows. + +.. code:: cpp + + Env env; + Model knapsack(env, Maximize); + + const auto x = knapsack.add_vars(Dim<1>(n), 0, 1, Binary, "x"); + + knapsack.add_ctr(idol_Sum(i, Range(n_items), w[i] * x[i]) <= W); + knapsack.set_obj_expr(idol_Sum(i, Range(n_items), p[i] * x[i])); + +Then, we create our callback factory. It is this factory that will be used to create a new callback object when needed. +Since we need to pass some parameters to the callback, we will use the constructor of the callback factory to pass these parameters. +This is done as follows. + +.. code:: cpp + + + class KnapsackCover : public CallbackFactory { + const std::vector m_x; + const std::vector m_weights; + const std::vector m_profits; + const double m_capacity; + public: + KnapsackCover(const std::vector& t_x, + const std::vector& t_weights, + const std::vector& t_profits, + double t_capacity) + : m_x(t_x), m_weights(t_weights), m_profits(t_profits), m_capacity(t_capacity) {} + + class Strategy; + + Callback* operator()() { // Creates a new callback object + return new Strategy(m_x, m_weights, m_profits, m_capacity); + } + + CallbackFactory* clone() const { // Creates a copy of the callback factory + return new MyCallback(*this); + } + + } + +The real implementation of the callback is done in the nested class :code:`Strategy`. +This class is a sub-class of the :ref:`Callback ` class and is defined as follows. + +.. code:: cpp + + class KnapsackCover::Strategy { // Real callback implementation + const std::vector m_x; + const std::vector m_weights; + const std::vector m_profits; + const double m_capacity; + protected: + Strategy(const std::vector& t_x, + const std::vector& t_weights, + const std::vector& t_profits, + double t_capacity) + : m_x(t_x), m_weights(t_weights), m_profits(t_profits), m_capacity(t_capacity) {} + + void operator()(CallbackEvent t_event) { + + if (t_event != InvalidSolution) { + return; + } + + auto& env = parent().env(); + const auto fractional_point = primal_solution(); + + Model separation(env, Maximize); + + const auto z = separation.add_vars(Dim<1>(m_x.size()), 0, 1, Binary, "z"); + separation.add_ctr(idol_Sum(i, Range(m_x.size()), m_weights[i] * z[i]) >= m_capacity + 1); + separation.set_obj_expr(idol_Sum(i, Range(m_x.size()), (1 - fractional_point[i]) * z[i])); + + separation.use(Gurobi()); + + separation.optimize(); + + if (separation.get_best_obj() < 1) { + return; + } + + const auto cut = idol_Sum(i, Range(m_x.size()), separation.get_var_primal(z[i]) * (1 - x[i])) >= 1; + + add_user_cut(cut); + + } + } + +Finally, we can add our callback to the optimizer as follows. + +.. code:: + + knapsack.use( + Gurobi::Continuous().add_callback(KnapsackCover(x, w, p, W)) + ); + + knapsack.optimize(); diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/index.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/index.rst.txt new file mode 100644 index 00000000..ee6368a7 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/index.rst.txt @@ -0,0 +1,120 @@ +.. _mip_optimizers: + +.. role:: cpp(code) + :language: cpp + +Optimizers +========== + +This page discusses the concept of optimizers and optimizer factories in idol. +We will discuss how to set up an optimizer for solving a model and how to access the solution of the model. + +In idol, an optimizer is a class that is responsible for solving a given optimization problem. +It is created by an optimizer factory, which is a class that is responsible for assembling and creating optimizers. + +We start with an example. Consider the following code, which models a simple knapsack problem: + +.. code:: cpp + + Env env; + Model model(env, Maximize); + const auto x = model.add_vars(Dim<1>(3), 0, 1, Binary, "x"); + model.add_ctr(x[0] + 2 * x[1] + 3 * x[2] <= 5); + model.set_obj_expr(x[0] + x[1] + x[2]); + +The code creates a model with three binary variables, and adds a constraint and an objective function to it. +Currently, the model does not have an optimizer, so it cannot be solved. +Calling :code:`model.optimize()` will result in an exception being thrown. + +To set up an optimizer, we need to call the :code:`Model::use` method, which takes an optimizer factory as an argument. +For instance, let us use the :ref:`GLPK ` optimizer factory, which creates an optimizer using GLPK to solve our model: + +.. code:: cpp + + model.use(GLPK()); + +Here, we assume that idol was linked with the GLPK library during installation. +Now, calling :code:`model.optimize()` will cause the optimizer factory to create an optimizer, which will solve the model. +Since we are using the :ref:`GLPK ` optimizer factory, an instance of :ref:`Optimizers::GLPK ` +will be created and used to solve the model. + +Note that we can modify the model after setting up the optimizer. The optimizer will be updated accordingly. For instance. + +.. code:: + + model.add_ctr(x[0] + x[1] <= 1); // Add a new constraint + model.optimize(); // The optimizer will solve the model with the new constraint + +Idol provides several optimizer factories, each of which creates an optimizer using a different solvers or implementing different algorithms. +For instance, the :ref:`Gurobi ` optimizer factory creates an optimizer using the Gurobi solver, +while the :ref:`BranchAndBound ` optimizer factory creates an optimizer implementing a branch-and-bound algorithm. + +Typically, users only work with optimizer factories, and do not need to create optimizers directly. +Passing arguments to an optimizer is always possible at creation time through the optimizer factory. +For instance, here is a small example of how to pass a time limit to the GLPK optimizer: + +.. code:: + + model.use(GLPK().with_time_limit(10)); // add time limit of 10 seconds + +As it can be seen, arguments are given by calling the :code:`with_` method of the optimizer factory, followed by the name of the argument. + + +In some cases, it is useful to nest optimizers to, e.g., to use an optimizer to solve a sub-problem of another optimization problem. +The process of nesting optimizers is straightforward and follows the same pattern as setting up an optimizer for a model. + +For instance, consider the following code, which implements a simple branch-and-bound algorithm to solve our knapsack problem: + +.. code:: cpp + + model.use( + /* The overall algorithm is a branch-and-bound */ + BranchAndBound() + + /* Each node is solved by the continuous relaxation of the problem, with GLPK */ + .with_node_solver(GLPK::ContinuousRelaxation()) + + /* Variables are selected for branching using the most-infeasible rule */ + .with_branching_rule(MostInfeasible()) + + /* Nodes are selected using the best-bound rule */ + .with_node_selection_rule(BestBound()) + + /* Turn on logs */ + .with_logs(true) + + /* The algorithm will run with a time limit of 3600 */ + .with_time_limit(3600) + ) + ); + +In this example, we create a branch-and-bound algorithm to solve the model, and we use GLPK to solve the continuous relaxation of the problem at each node. +Also note that we can nest optimizers as many times as we want with no restrictions. + +To simplify the writing of complex optimizer factories, it may be useful to use temporary variables to store intermediate results. +For instance. + +.. code:: cpp + + const auto continuous_relaxation = GLPK::ContinuousRelaxation().with_logs(true); + const auto branching_rule = MostInfeasible(); + const auto node_selection_rule = BestBound(); + + const auto branch_and_bound = BranchAndBound() + .with_node_solver(continuous_relaxation) + .with_branching_rule(branching_rule) + .with_node_selection_rule(node_selection_rule) + .with_logs(true) + .with_time_limit(3600); + + model.use(branch_and_bound); + +.. toctree:: + :maxdepth: 1 + :glob: + + solving + access-optimizer + universal-callbacks + create-universal-callback + create-optimizer diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/solving.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/solving.rst.txt new file mode 100644 index 00000000..70750f5e --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/solving.rst.txt @@ -0,0 +1,139 @@ +Solving a Model and Accessing the Solution +========================================== + +.. contents:: Table of Contents + :local: + :depth: 2 + +Solving a Model +^^^^^^^^^^^^^^^ + +This page shoes how to solve a model and access the solution. +The reader should be familiar with the concept of optimizer and optimizer factories. If this is not the case, +please refer to the page on :ref:`Optimizers `. + +Let us consider the following code. + +.. code:: cpp + + using namespace idol; + + const unsigned int n_items = 5; + const double[] profit = { 40., 50., 100., 95., 30., }; + const double[] weight = { 2., 3.14, 1.98, 5., 3., }; + const double capacity = 10.; + + Env env; + Model model(env, Maximize); + + const auto x = model.add_vars(Dim<1>(n_items), 0., 1., Binary, "x"); + model.add(idol_Sum(j, Range(n_items), weight[j] * x[j] ) <= capacity); + model.set_obj_expr(idol_Sum(j, Range(n_items), profit[i] * x[i]); + +This code creates a model for the knapsack problem. As described in the page on :ref:`this page `, +we now set up an optimizer and solve the model. We use GLPK. + +.. code:: cpp + + model.use(GLPK()); + +Solving the model is done by a single class to the :code:`optimize` method. + +.. code:: cpp + + model.optimize(); + +Then, idol provides several methods to access the solution. + +First, :code:`get_status` and :code:`get_reason` return the status and the reason of the solution. +The status can be, for instance, :code:`Optimal` or :code:`Infeasible`. The reason provides more details about the status. +For instance, if the status is :code:`Infeasible`, the reason can be that the original problem is infeasible (:code:`Proved`), +or that the solver reached a time limit before finding a feasible solution (:code:`TimeLimit`). + +The best objective value found can be accessed using :code:`get_best_obj`. This is the best objective value among feasible solutions considered during the execution of the algorithm. +The best objective value bound can be accessed using :code:`get_best_bound`. For instance, this can be a dual bound. +The methods :code:`get_relative_gap` and :code:`get_absolute_gap` return the relative and absolute optimality gaps, respectively. +See :ref:`this page ` for more details about gaps and tolerances. + +The methods :code:`get_var_primal` and :code:`get_var_ray` return the primal value and the (primal) ray value of a given variable, respectively. +Note that primal values are only accessible if the model has status :code:`Feasible`, :code:`SubOptimal` or :code:`Optimal`. +Similarly, a primal ray is only accessible if the model has status :code:`Unbounded`. + +The methods :code:`get_ctr_dual` and :code:`get_ctr_farkas` return the dual value and the Farkas certificate value of a given constraint, respectively. +Note that dual values are only accessible if the model is continuous and has status :code:`Optimal` or :code:`Feasible`. +Similarly, a Farkas certificate is only accessible if the model has status :code:`Infeasible`. + +Saving a Solution +^^^^^^^^^^^^^^^^^ + +Sometimes, you will find it useful to save a solution to access it later. idol provides the following functions to do so: +:code:`save_primal`, :code:`save_ray`, :code:`save_dual` and :code:`save_farkas`. +Each of these functions takes a model as argument and returns an object of the class :ref:`Solution::Primal ` or :ref:`Solution::Primal ` depending on the function. +The returned object stores the results of corresponding calls to :code:`get_var_primal`, :code:`get_var_ray`, :code:`get_ctr_dual` or :code:`get_ctr_farkas` methods. + +.. admonition:: Example + + This example shows how to solve a model using HiGHS and retrieves some piece of information about its solution. + + .. code-block:: + + model.use(HiGHS()); + + model.optimize(); + + const auto status = model.get_status(); + + if (status == Optimal) { + + std::cout << "Optimal solution found!" << std::endl; + + const auto primal_values = save_primal(model); + + std::cout << primal_values << std::endl; + + } else { + + std::cout << "An optimal solution could not be found." << std::endl; + + std::cout << "HiGHS returned status " << status << std::endl; + + std::cout << "The reason for this status is " << model.get_reason() << std::endl; + + if (status == Feasible) { + + std::cout << "The optimality gap is " << model.get_relative_gap() * 100 << " %" << std::endl; + + } else if (status == Unbounded) { + + std::cout << "An unbounded ray is" << std::endl; + + const auto primal_ray = save_ray(model); + + std::cout << primal_ray << std::endl; + + } else if (status == Infeasible) { + + std::cout << "A Farkas certificate is" << std::endl; + + const auto farkas = save_farkas(model); + + std::cout << farkas << std::endl; + + } + + } + +Saving a Projected Solution +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In a more advanced solution scheme, you may deal with extended formulations of an original model, and may want to save +the projected solution on the original problem space. +In such a case, you can use the functions :code:`save_*` with an additional argument to specify the original model. +For instance. + +.. code:: cpp + + const auto primal_values = save_primal(original_model, higher_dimensional_model); + +This code will return an object of the class :ref:`Solution::Primal ` storing the results of corresponding calls to :code:`get_var_primal` methods on the higher dimensional model +for the original model variables. diff --git a/_sources/tutorials/mixed-integer-programming/optimizers/universal-callbacks.rst.txt b/_sources/tutorials/mixed-integer-programming/optimizers/universal-callbacks.rst.txt new file mode 100644 index 00000000..6c0046a0 --- /dev/null +++ b/_sources/tutorials/mixed-integer-programming/optimizers/universal-callbacks.rst.txt @@ -0,0 +1,259 @@ +.. _tutorial_user_lazy_cuts: + +Adding User Cuts and Lazy Constraints +===================================== + +.. contents:: Table of Contents + :local: + :depth: 2 + +Introduction +^^^^^^^^^^^^ + +When solving a mixed-integer program (MIP), the underlying optimizers typically make use of a branch-and-cut algorithm. +This algorithm iteratively solves a(n LP) relaxation of the problem, and then adds cuts to the problem to strengthen the relaxation. +Typically, these cuts are generated by the solver itself. However, the user can also add his or her own cuts to the problem. +This is useful when the user has domain-specific knowledge that can be used to strengthen the relaxation. + +Classically, there are two types of cuts that can be added to a MIP: user cuts and lazy constraints. + +* **User cuts** are cuts which are not necessary to define the feasible region of the problem, but which can be used to strengthen the relaxation. As a matter of fact, *User cuts never cut off feasible solutions to the original problem*. +* **Lazy constraints** are constraints which are necessary to define the feasible region of the problem but are either unlikely to be violated or impractical to generate in advance. Lazy constraints are only added to the problem if they are violated by a current solution. + +In both cases, user cuts and lazy constraints are added to the problem within a callback function, given to the optimizer. +Then, the optimizer will call this callback function at each node of the branch-and-cut tree, allowing to look for violated cuts and constraints that can be added to the problem. + +Though it is possible for the user to create his or her own callback functions, +the idol library provides a simple way to add user cuts and lazy constraints to a MIP, using the :ref:`UserCutCallback ` and :ref:`LazyCutCallback ` classes. +In case you are interested in creating your own callback functions, you can refer to :ref:`this page `. + +Now, both classes are derived from the :ref:`CallbackFactory ` class, and are used to create callback objects that can be passed to the optimizer. +They both have a similar interface: First, the user defines a model for the separation problem (i.e., the problem that will be solved to generate the cuts or constraints), +and the corresponding cut to be added to the original problem. +Then, the user creates a callback factory object, and passes the model and the cut to the factory. +The user also specifies which optimizer should be used to solve the separation problem. +Finally, the user passes the callback factory to the optimizer, which will manage the execution of the callback. + +The main difference between the two classes is that the :ref:`UserCutCallback ` class is called +whenever an invalid solution is found, e.g., a point which violates integer requirements, while the :ref:`LazyCutCallback ` class is called +whenever a new valid solution is found to check that it satisfies all the lazy constraints. + +In the next section, we will show how to implement + +* a simple separation procedure for knapsack cover inequalities using the :ref:`UserCutCallback `, and +* a straightforward Bender's decomposition algorithm using the :ref:`LazyCutCallback ` class. + +.. contents:: Table of Contents + :local: + :depth: 2 + +An Example of User Cuts: Knapsack Cover Inequalities +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. hint:: + + This section is dedicated to the "advanced topic" of knapsack cover inequalities. + Rudimentary notions on `Knapsack problems `_ and + `Cover inequalities `_ are recommended. + +Consider the following knapsack problem. + +.. math:: + + \begin{align} + \max_{x} \ & p^\top x \\ + \text{s.t.} \ & w^\top x \le W, \\ + & x\in\{0,1\}^n. + \end{align} + +Here, :math:`x` is a binary vector, :math:`p` is a vector of profits, :math:`w` is a vector of weights, and :math:`W` is the capacity of the knapsack. + +It is well-known that the knapsack problem can be strengthened by adding cover inequalities. A cover inequality is a constraint of the form + +.. math:: + + \sum_{i\in C} x_i \le |C| - 1, + +where :math:`C` defines a cover of the knapsack, i.e., a set of items such that the sum of their weights is greater than the capacity of the knapsack. + +Given a solution :math:`\hat x` to the continuous relaxation of the knapsack problem, we can check whether it violates a cover inequality. +This is done by solving the following separation problem. + +.. math:: + + \begin{align} + \max_{z} \ & (1 - \hat x)^\top z & \ge 1 \\ + \text{s.t.} \ & w^\top z \ge W + 1, \\ + & z\in\{0,1\}^n. + \end{align} + +A cover inequality is violated if and only if the optimal objective value of this problem is strictly less than 1. +In such a case, a new cut should be added. + +As anticipated, we need to define three different things: + +- the original problem, i.e., the problem to be solved by the branch-and-cut algorithm; +- the feasible region of the separation problem, i.e., the set of all cover inequalities; +- the shape of the cuts to be added. + +Defining the original problem is straightforward and can be done as follows. + +.. code:: cpp + + Env env; + Model knapsack(env, Maximize); + + const auto x = knapsack.add_vars(Dim<1>(n), 0, 1, Binary, "x"); + + knapsack.add_ctr(idol_Sum(i, Range(n_items), w[i] * x[i]) <= W); + knapsack.set_obj_expr(idol_Sum(i, Range(n_items), p[i] * x[i])); + +Similarly, the feasible region of the separation problem can be defined as follows. + +.. code:: cpp + + Model cover(env); + + const auto z = cover.add_vars(Dim<1>(n), 0, 1, Binary, "z"); + + cover.add_ctr(idol_Sum(i, Range(n_items), w[i] * z[i]) >= W + 1); + +Finally, we need to define the cuts to be added to the original problem for a given cover inequality :math:`C`. +**Cuts are always expressed as if they were part of the original problem**. What we mean by this is that, here, :math:`x` +should be seen as a *variable* while :math:`z` should be seen as a *constant*. + +We therefore have, for a given :math:`z`, + +.. code:: cpp + + const auto cover_cut = idol_Sum(i, Range(n_items), !z[i] * x[i]) <= idol_Sum(i, Range(n_items), 1 - !z[i]); + +See how the z variables are "turned into" constants by prepending them with an "!" symbol. + +We are now ready to create the callback factory and pass it to the optimizer. This is done as follows. + +.. code:: cpp + + knapsack.use( + Gurobi::Continuous() + .add_callback( + UserCutCallback(cover, cover_cut) + .with_separation_optimizer(Gurobi()) + ) + ); + + knapsack.optimize(); + +Here, we solve the continuous relaxation of the knapsack problem using the Gurobi optimizer, and add the cover inequalities using the :ref:`UserCutCallback `. + +An Example of Lazy Cut Constraints: Benders Optimality Cuts +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. hint:: + + This section is dedicated to the "advanced topic" of Benders Decomposition. + Rudimentary notions on `Linear Programming duality `_ and + `Benders Decomposition `_ the following subjects are recommended. + +We will base our example on the following model taken from `Blanco, V., (2016), Benders Decomposition, MINLP School: Theory +and Applications `_. + +.. math:: + + \begin{align} + \min_{x,y} \ & 2 x_0 + 3x_1 + 2y \\ + \text{s.t.} \ & x_0 + 2x_1 + y \ge 3, \\ + & 2x_0 - x_1 + 3y \ge 4, \\ + & x\ge 0, y\in \mathbb N. + \end{align} + +The Benders reformulation of this problem, by considering :math:`y` as the complicating variable, leads to + +.. math:: + + \begin{align} + \min_{y,z} \ & 2y + z \\ + \text{s.t.} \ & z \ge \lambda_1 ( 3 - y ) + \lambda_2(4 - 3y) \qquad \forall \lambda \in \Lambda, \\ + & z \ge 0, y\in\mathbb N, + \end{align} + +with :math:`\Lambda` defined as the set of all dual feasible points, i.e., those :math:`\lambda\in\mathbb R^2_+` such that + +.. math:: + + \begin{align} + & \lambda_0 + 2 \lambda_1 \le 2, \\ + & 2\lambda_0 - \lambda_1 \le 3. + \end{align} + +Now, we will show how to implement the Benders decomposition algorithm using the :ref:`LazyCutCallback ` class. +This will be done so that constraints :math:`z \ge \hat \lambda_1 ( 3 - y ) + \hat \lambda_2(4 - 3y)` are added to the master problem +whenever a violated Benders cut is found. + +As anticipated, we need to define three different things: + +- the master problem, i.e., the problem to be solved at each node of the branch-and-cut tree; +- the dual space :math:`\Lambda`, i.e., the feasible region of the separation problem; +- the shape of the cuts to be added. + +Defining the master problem is straightforward and can be done as follows. + +.. code:: cpp + + + Env env; + + Model master(env); + + const auto y = master.add_var(0, Inf, Integer, "y"); + const auto z = master.add_var(0, Inf, Continuous, "z"); + + master.set_obj_expr(2 * y + z); + +Similarly, the dual space :math:`\Lambda` can be defined as follows. + + +.. code:: + + Model dual_space(env); + + const auto lambda = dual_space.add_vars(Dim<1>(2), 0, Inf, Continuous, "lambda"); + + dual_space.add_ctr(lambda[0] + 2 + lambda[1] <= 2); + dual_space.add_ctr(2 * lambda[0] - lambda[1] <= 3); + + +Finally, we need to define the cuts to be added to the master problem for a given dual variable :math:`\lambda`. +**Cuts are always expressed as if they were part of the master problem**. What we mean by this is that, here, :math:`y` +should be seen as a *variable* while :math:`\lambda` should be seen as a *constant*. + +We therefore have, for a given :math:`\lambda`, + +.. code:: + + const auto benders_cut = z >= !lambda[0] * (3 - y) + !lambda[1] * (4 - 3 * y); + +See how the lambda variables are "turned into" constants by prepending them with an "!" symbol. + +We are now ready to create the callback factory and pass it to the optimizer. This is done as follows. + +.. code:: + + master.use( + Gurobi() + .add_callback( + LazyCutCallback(dual_space, benders_cut) + .with_separation_optimizer(Gurobi()) + ) + .with_lazy_cut(true) + ); + + master.optimize(); + +That's it! The optimizer will now call the callback function at each node of the branch-and-cut tree, and add the cuts to the master problem whenever a violated constraint is found. + +.. info:: + + Here, we added a call to :code:`Gurobi::with_lazy_cut`. This is because the Gurobi optimizer does not support lazy cuts by default + and one needs to explicitly enable them. + diff --git a/_sources/tutorials/robust-optimization/column-and-constraint-generation/index.rst.txt b/_sources/tutorials/robust-optimization/column-and-constraint-generation/index.rst.txt new file mode 100644 index 00000000..616bb4fc --- /dev/null +++ b/_sources/tutorials/robust-optimization/column-and-constraint-generation/index.rst.txt @@ -0,0 +1,14 @@ +Column-and-Constraint-Generation Algorithm +========================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 1 + :glob: + + write-ccg + trust-region-stabilization + writing-separator diff --git a/_sources/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.rst.txt b/_sources/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.rst.txt new file mode 100644 index 00000000..ebde19db --- /dev/null +++ b/_sources/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.rst.txt @@ -0,0 +1,6 @@ +Using Trust Region Stabilization [TODO] +======================================= + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.rst.txt b/_sources/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.rst.txt new file mode 100644 index 00000000..c532d447 --- /dev/null +++ b/_sources/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.rst.txt @@ -0,0 +1,6 @@ +Writing a Column-and-Constraint-Generation Algorithm [TODO] +=========================================================== + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.rst.txt b/_sources/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.rst.txt new file mode 100644 index 00000000..be7243d9 --- /dev/null +++ b/_sources/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.rst.txt @@ -0,0 +1,6 @@ +Writing Your Own Separator (Advanced) [TODO] +============================================ + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_sources/tutorials/robust-optimization/index.rst.txt b/_sources/tutorials/robust-optimization/index.rst.txt new file mode 100644 index 00000000..2be1b7a5 --- /dev/null +++ b/_sources/tutorials/robust-optimization/index.rst.txt @@ -0,0 +1,11 @@ +.. _robust: + +Robust Optimization +=================== + +.. toctree:: + :maxdepth: 3 + :glob: + + modeling/index + column-and-constraint-generation/index diff --git a/_sources/tutorials/robust-optimization/modeling/index.rst.txt b/_sources/tutorials/robust-optimization/modeling/index.rst.txt new file mode 100644 index 00000000..fc27e195 --- /dev/null +++ b/_sources/tutorials/robust-optimization/modeling/index.rst.txt @@ -0,0 +1,12 @@ +Modeling +======== + +.. warning:: + + This is a work in progress. Thank you for your understanding. + +.. toctree:: + :maxdepth: 1 + :glob: + + two-stage-robust diff --git a/_sources/tutorials/robust-optimization/modeling/two-stage-robust.rst.txt b/_sources/tutorials/robust-optimization/modeling/two-stage-robust.rst.txt new file mode 100644 index 00000000..7760ceb0 --- /dev/null +++ b/_sources/tutorials/robust-optimization/modeling/two-stage-robust.rst.txt @@ -0,0 +1,7 @@ +Modeling a Two-Stage Robust Problem [TODO] +========================================== + + +.. warning:: + + This is a work in progress. Thank you for your understanding. diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..81415803 --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..f316efcb --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000..f1916ec7 --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000..2ea7ff3e --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000..dbe1aaad --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 00000000..c718cee4 --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 00000000..19a446a0 --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/design.css b/_static/design.css new file mode 100644 index 00000000..eb9b0e6b --- /dev/null +++ b/_static/design.css @@ -0,0 +1,156 @@ + +html { + scroll-behavior: smooth; +} + +.wy-nav-content { + font-family: -apple-system, BlinkMacSystemFont, + "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + line-height: 2.5em; +} + +* { + font-weight:300; +} + +h1, h2, h3, h4, h5, h6 { + font-weight:300; + font-family: -apple-system, BlinkMacSystemFont, + "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; +} + +.my-button { + display: inline-block; + box-sizing: border-box; + padding: 0.3em 1em; + margin: 5px; + font-family: inherit; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: gray; + text-decoration: none; + vertical-align: baseline; + cursor: pointer; + background-color: #f7f7f7; + border-width: 0; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); + appearance: none; +} + +.my-button:visited { + color: gray; +} + +.wy-nav-content-wrap { + background-color:#fcfcfc; +} + +.wy-nav-side { + border-right: 1px solid #eeebee; + background-color:#f5f6fa; +} + +.wy-menu-vertical a { + color: #404040; +} + +.wy-side-nav-search { + background-color: initial; + margin-bottom: 20px; + + #rtd-search-form { + border-top: 1px solid #e1e4e5; + margin-top: 10px; + padding-top: 20px; + } + + a { + color: #404040; + font-family: -apple-system, BlinkMacSystemFont, + "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + font-weight:800; + font-size :2.25em; + overflow-wrap: break-word; + } + + a:before { + content: ""; + } + +} + +.wy-menu-vertical li.toctree-l1.current > a { + border-top : 1px solid #efefef; + border-bottom : 1px solid #efefef; +} + +.wy-side-nav-search input[type=text] { + border-color: #e1e4e5; +} + +.toctree-l1 a:hover { + background-color:white; +} + +.rst-content div[class^=highlight], .rst-content pre.literal-block { + border: 1px solid #e1e4e5; + border-radius: 4px; + padding: 12px; + background-color: #f8f8f8; +} + +.admonition { + border-left:4px solid #6ab0de; + border-radius:4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 3px 10px rgba(0, 0, 0, 0.08); +} + +.rst-content .admonition-title, .wy-alert-title, +.rst-content .note .admonition-title, .rst-content .note .wy-alert-title, .rst-content .seealso .admonition-title, .rst-content .seealso .wy-alert-title, .rst-content .wy-alert-info.admonition-todo .admonition-title, .rst-content .wy-alert-info.admonition-todo .wy-alert-title, .rst-content .wy-alert-info.admonition .admonition-title, .rst-content .wy-alert-info.admonition .wy-alert-title, .rst-content .wy-alert-info.attention .admonition-title, .rst-content .wy-alert-info.attention .wy-alert-title, .rst-content .wy-alert-info.caution .admonition-title, .rst-content .wy-alert-info.caution .wy-alert-title, .rst-content .wy-alert-info.danger .admonition-title, .rst-content .wy-alert-info.danger .wy-alert-title, .rst-content .wy-alert-info.error .admonition-title, .rst-content .wy-alert-info.error .wy-alert-title, .rst-content .wy-alert-info.hint .admonition-title, .rst-content .wy-alert-info.hint .wy-alert-title, .rst-content .wy-alert-info.important .admonition-title, .rst-content .wy-alert-info.important .wy-alert-title, .rst-content .wy-alert-info.tip .admonition-title, .rst-content .wy-alert-info.tip .wy-alert-title, .rst-content .wy-alert-info.warning .admonition-title, .rst-content .wy-alert-info.warning .wy-alert-title, .rst-content .wy-alert.wy-alert-info .admonition-title, .wy-alert.wy-alert-info .rst-content .admonition-title, .wy-alert.wy-alert-info .wy-alert-title { + background-color: initial; + color:#6ab0de; + padding:15px; +} + +.rst-content .attention, .warning { + border-left:4px solid #f0ad4e; +} + +.rst-content .danger { + border-left:4px solid #d9534f; + + .admonition-title { + background-color: initial; + color:#d9534f; + } +} + +.hint { + border-left:4px solid #1abc9c; +} + +.rst-content .hint .admonition-title, .rst-content .hint .wy-alert-title, .rst-content .important .admonition-title, .rst-content .important .wy-alert-title, .rst-content .tip .admonition-title, .rst-content .tip .wy-alert-title, .rst-content .wy-alert-success.admonition-todo .admonition-title, .rst-content .wy-alert-success.admonition-todo .wy-alert-title, .rst-content .wy-alert-success.admonition .admonition-title, .rst-content .wy-alert-success.admonition .wy-alert-title, .rst-content .wy-alert-success.attention .admonition-title, .rst-content .wy-alert-success.attention .wy-alert-title, .rst-content .wy-alert-success.caution .admonition-title, .rst-content .wy-alert-success.caution .wy-alert-title, .rst-content .wy-alert-success.danger .admonition-title, .rst-content .wy-alert-success.danger .wy-alert-title, .rst-content .wy-alert-success.error .admonition-title, .rst-content .wy-alert-success.error .wy-alert-title, .rst-content .wy-alert-success.note .admonition-title, .rst-content .wy-alert-success.note .wy-alert-title, .rst-content .wy-alert-success.seealso .admonition-title, .rst-content .wy-alert-success.seealso .wy-alert-title, .rst-content .wy-alert-success.warning .admonition-title, .rst-content .wy-alert-success.warning .wy-alert-title, .rst-content .wy-alert.wy-alert-success .admonition-title, .wy-alert.wy-alert-success .rst-content .admonition-title, .wy-alert.wy-alert-success .wy-alert-title { + background-color: initial; + color:#1abc9c; +} + +.rst-content .attention .admonition-title, +.rst-content .caution .admonition-title, +.rst-content .warning .admonition-title { + background-color: initial; + color:#f0ad4e; +} + +.fa-exclamation-circle:before, .rst-content .admonition-title:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before { + content: ""; +} + + diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..4d67807d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..7e4c114f --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 00000000..027576e3 --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 00000000..c4c6022f --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 00000000..cd1c674f --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 00000000..1fddb6ee --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 00000000..d96755fd Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 00000000..7107cec9 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..9c2afde4 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #ffffff; } +.highlight .c { color: #888888 } /* Comment */ +.highlight .err { color: #FF0000; background-color: #FFAAAA } /* Error */ +.highlight .k { color: #008800; font-weight: bold } /* Keyword */ +.highlight .o { color: #333333 } /* Operator */ +.highlight .ch { color: #888888 } /* Comment.Hashbang */ +.highlight .cm { color: #888888 } /* Comment.Multiline */ +.highlight .cp { color: #557799 } /* Comment.Preproc */ +.highlight .cpf { color: #888888 } /* Comment.PreprocFile */ +.highlight .c1 { color: #888888 } /* Comment.Single */ +.highlight .cs { color: #cc0000; font-weight: bold } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #003388; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #333399; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #6600EE; font-weight: bold } /* Literal.Number */ +.highlight .s { background-color: #fff0f0 } /* Literal.String */ +.highlight .na { color: #0000CC } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #BB0066; font-weight: bold } /* Name.Class */ +.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #880000; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #FF0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0066BB; font-weight: bold } /* Name.Function */ +.highlight .nl { color: #997700; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #007700 } /* Name.Tag */ +.highlight .nv { color: #996633 } /* Name.Variable */ +.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #6600EE; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #6600EE; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #005588; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #4400EE; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { background-color: #fff0f0 } /* Literal.String.Affix */ +.highlight .sb { background-color: #fff0f0 } /* Literal.String.Backtick */ +.highlight .sc { color: #0044DD } /* Literal.String.Char */ +.highlight .dl { background-color: #fff0f0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #DD4422 } /* Literal.String.Doc */ +.highlight .s2 { background-color: #fff0f0 } /* Literal.String.Double */ +.highlight .se { color: #666666; font-weight: bold; background-color: #fff0f0 } /* Literal.String.Escape */ +.highlight .sh { background-color: #fff0f0 } /* Literal.String.Heredoc */ +.highlight .si { background-color: #eeeeee } /* Literal.String.Interpol */ +.highlight .sx { color: #DD2200; background-color: #fff0f0 } /* Literal.String.Other */ +.highlight .sr { color: #000000; background-color: #fff0ff } /* Literal.String.Regex */ +.highlight .s1 { background-color: #fff0f0 } /* Literal.String.Single */ +.highlight .ss { color: #AA6600 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0066BB; font-weight: bold } /* Name.Function.Magic */ +.highlight .vc { color: #336699 } /* Name.Variable.Class */ +.highlight .vg { color: #dd7700; font-weight: bold } /* Name.Variable.Global */ +.highlight .vi { color: #3333BB } /* Name.Variable.Instance */ +.highlight .vm { color: #996633 } /* Name.Variable.Magic */ +.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..92da3f8b --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,619 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlinks", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..8a96c69a --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/api/classes/branch-and-bound/BranchAndBound.html b/api/classes/branch-and-bound/BranchAndBound.html new file mode 100644 index 00000000..e342b122 --- /dev/null +++ b/api/classes/branch-and-bound/BranchAndBound.html @@ -0,0 +1,719 @@ + + + + + + + BranchAndBound — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/BranchAndBoundCallback.html b/api/classes/branch-and-bound/BranchAndBoundCallback.html new file mode 100644 index 00000000..940546ff --- /dev/null +++ b/api/classes/branch-and-bound/BranchAndBoundCallback.html @@ -0,0 +1,348 @@ + + + + + + + BranchAndBoundCallback — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.html b/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.html new file mode 100644 index 00000000..d474e425 --- /dev/null +++ b/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.html @@ -0,0 +1,177 @@ + + + + + + + BranchAndBoundCallbackFactory — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/cuts/KnapsackCover.html b/api/classes/branch-and-bound/cuts/KnapsackCover.html new file mode 100644 index 00000000..95e6c644 --- /dev/null +++ b/api/classes/branch-and-bound/cuts/KnapsackCover.html @@ -0,0 +1,208 @@ + + + + + + + Cuts::KnapsackCover — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/cuts/index.html b/api/classes/branch-and-bound/cuts/index.html new file mode 100644 index 00000000..0280c306 --- /dev/null +++ b/api/classes/branch-and-bound/cuts/index.html @@ -0,0 +1,161 @@ + + + + + + + Cutting Planes — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/heuristics/LocalBranching.html b/api/classes/branch-and-bound/heuristics/LocalBranching.html new file mode 100644 index 00000000..f0ef36ce --- /dev/null +++ b/api/classes/branch-and-bound/heuristics/LocalBranching.html @@ -0,0 +1,200 @@ + + + + + + + Heuristics::LocalBranching — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/heuristics/RENS.html b/api/classes/branch-and-bound/heuristics/RENS.html new file mode 100644 index 00000000..91833834 --- /dev/null +++ b/api/classes/branch-and-bound/heuristics/RENS.html @@ -0,0 +1,200 @@ + + + + + + + Heuristics::RENS — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/heuristics/SimpleRounding.html b/api/classes/branch-and-bound/heuristics/SimpleRounding.html new file mode 100644 index 00000000..f5d3668a --- /dev/null +++ b/api/classes/branch-and-bound/heuristics/SimpleRounding.html @@ -0,0 +1,187 @@ + + + + + + + Heuristics::SimpleRounding — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/heuristics/index.html b/api/classes/branch-and-bound/heuristics/index.html new file mode 100644 index 00000000..d656e586 --- /dev/null +++ b/api/classes/branch-and-bound/heuristics/index.html @@ -0,0 +1,165 @@ + + + + + + + Heuristics — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/index.html b/api/classes/branch-and-bound/index.html new file mode 100644 index 00000000..66da70db --- /dev/null +++ b/api/classes/branch-and-bound/index.html @@ -0,0 +1,195 @@ + + + + + + + Branch-and-Bound Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/BestBound.html b/api/classes/branch-and-bound/node-selection/BestBound.html new file mode 100644 index 00000000..7912e121 --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/BestBound.html @@ -0,0 +1,189 @@ + + + + + + + BestBound — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/BestEstimate.html b/api/classes/branch-and-bound/node-selection/BestEstimate.html new file mode 100644 index 00000000..645f4354 --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/BestEstimate.html @@ -0,0 +1,190 @@ + + + + + + + BestEstimate — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/BreadthFirst.html b/api/classes/branch-and-bound/node-selection/BreadthFirst.html new file mode 100644 index 00000000..8964408a --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/BreadthFirst.html @@ -0,0 +1,189 @@ + + + + + + + BreadthFirst — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/DepthFirst.html b/api/classes/branch-and-bound/node-selection/DepthFirst.html new file mode 100644 index 00000000..86534d8b --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/DepthFirst.html @@ -0,0 +1,189 @@ + + + + + + + DepthFirst — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/WorstBound.html b/api/classes/branch-and-bound/node-selection/WorstBound.html new file mode 100644 index 00000000..1ac32c6e --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/WorstBound.html @@ -0,0 +1,189 @@ + + + + + + + WorstBound — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/node-selection/index.html b/api/classes/branch-and-bound/node-selection/index.html new file mode 100644 index 00000000..41579df6 --- /dev/null +++ b/api/classes/branch-and-bound/node-selection/index.html @@ -0,0 +1,169 @@ + + + + + + + Node Selection Rules — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.html b/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.html new file mode 100644 index 00000000..7e230a64 --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.html @@ -0,0 +1,213 @@ + + + + + + + FirstInfeasibleFound — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/LeastInfeasible.html b/api/classes/branch-and-bound/variable-selection/LeastInfeasible.html new file mode 100644 index 00000000..085beb0f --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/LeastInfeasible.html @@ -0,0 +1,213 @@ + + + + + + + LeastInfeasible — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/MostInfeasible.html b/api/classes/branch-and-bound/variable-selection/MostInfeasible.html new file mode 100644 index 00000000..a5d5a87c --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/MostInfeasible.html @@ -0,0 +1,213 @@ + + + + + + + MostInfeasible — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/PseudoCost.html b/api/classes/branch-and-bound/variable-selection/PseudoCost.html new file mode 100644 index 00000000..adbd281c --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/PseudoCost.html @@ -0,0 +1,213 @@ + + + + + + + PseudoCost — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/StrongBranching.html b/api/classes/branch-and-bound/variable-selection/StrongBranching.html new file mode 100644 index 00000000..02471ebc --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/StrongBranching.html @@ -0,0 +1,233 @@ + + + + + + + StrongBranching — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/UniformlyRandom.html b/api/classes/branch-and-bound/variable-selection/UniformlyRandom.html new file mode 100644 index 00000000..2b73aee8 --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/UniformlyRandom.html @@ -0,0 +1,218 @@ + + + + + + + UniformlyRandom — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/branch-and-bound/variable-selection/index.html b/api/classes/branch-and-bound/variable-selection/index.html new file mode 100644 index 00000000..18958a61 --- /dev/null +++ b/api/classes/branch-and-bound/variable-selection/index.html @@ -0,0 +1,171 @@ + + + + + + + Branching Rules — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.html b/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.html new file mode 100644 index 00000000..d5023860 --- /dev/null +++ b/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.html @@ -0,0 +1,491 @@ + + + + + + + Robust::ColumnAndConstraintGeneration — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.html b/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.html new file mode 100644 index 00000000..1ee2aef6 --- /dev/null +++ b/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.html @@ -0,0 +1,431 @@ + + + + + + + Optimizers::Robust::ColumnAndConstraintGeneration — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-and-constraint-generation/index.html b/api/classes/column-and-constraint-generation/index.html new file mode 100644 index 00000000..5ee2d196 --- /dev/null +++ b/api/classes/column-and-constraint-generation/index.html @@ -0,0 +1,153 @@ + + + + + + + Column-and-Constraint Generation Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/ArtificialCosts.html b/api/classes/column-generation/ArtificialCosts.html new file mode 100644 index 00000000..c7b3fbcb --- /dev/null +++ b/api/classes/column-generation/ArtificialCosts.html @@ -0,0 +1,228 @@ + + + + + + + DantzigWolfe::ArtificialCosts — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/DantzigWolfeDecomposition.html b/api/classes/column-generation/DantzigWolfeDecomposition.html new file mode 100644 index 00000000..08527297 --- /dev/null +++ b/api/classes/column-generation/DantzigWolfeDecomposition.html @@ -0,0 +1,520 @@ + + + + + + + DantzigWolfeDecomposition — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/FarkasPricing.html b/api/classes/column-generation/FarkasPricing.html new file mode 100644 index 00000000..80232010 --- /dev/null +++ b/api/classes/column-generation/FarkasPricing.html @@ -0,0 +1,208 @@ + + + + + + + DantzigWolfe::FarkasPricing — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/IntegerMaster.html b/api/classes/column-generation/IntegerMaster.html new file mode 100644 index 00000000..4eeb1055 --- /dev/null +++ b/api/classes/column-generation/IntegerMaster.html @@ -0,0 +1,268 @@ + + + + + + + Heuristics::IntegerMaster — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.html b/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.html new file mode 100644 index 00000000..311ea5d7 --- /dev/null +++ b/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.html @@ -0,0 +1,438 @@ + + + + + + + Optimizers::DantzigWolfeDecomposition — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/index.html b/api/classes/column-generation/index.html new file mode 100644 index 00000000..3961d942 --- /dev/null +++ b/api/classes/column-generation/index.html @@ -0,0 +1,161 @@ + + + + + + + Column Generation Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/column-generation/stabilization/Neame.html b/api/classes/column-generation/stabilization/Neame.html new file mode 100644 index 00000000..0b225d88 --- /dev/null +++ b/api/classes/column-generation/stabilization/Neame.html @@ -0,0 +1,208 @@ + + + + + + + DantzigWolfe::Neame — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/stabilization/Wentges.html b/api/classes/column-generation/stabilization/Wentges.html new file mode 100644 index 00000000..da57e60d --- /dev/null +++ b/api/classes/column-generation/stabilization/Wentges.html @@ -0,0 +1,208 @@ + + + + + + + DantzigWolfe::Wentges — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/column-generation/stabilization/index.html b/api/classes/column-generation/stabilization/index.html new file mode 100644 index 00000000..4a1c907b --- /dev/null +++ b/api/classes/column-generation/stabilization/index.html @@ -0,0 +1,162 @@ + + + + + + + Stabilization — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/common/Annotation.html b/api/classes/common/Annotation.html new file mode 100644 index 00000000..6ff4826a --- /dev/null +++ b/api/classes/common/Annotation.html @@ -0,0 +1,319 @@ + + + + + + + Annotation — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Column.html b/api/classes/common/Column.html new file mode 100644 index 00000000..80320d48 --- /dev/null +++ b/api/classes/common/Column.html @@ -0,0 +1,479 @@ + + + + + + + Column — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Constant.html b/api/classes/common/Constant.html new file mode 100644 index 00000000..39007bf7 --- /dev/null +++ b/api/classes/common/Constant.html @@ -0,0 +1,548 @@ + + + + + + + Constant — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Ctr.html b/api/classes/common/Ctr.html new file mode 100644 index 00000000..9685f9f5 --- /dev/null +++ b/api/classes/common/Ctr.html @@ -0,0 +1,368 @@ + + + + + + + Ctr — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Env.html b/api/classes/common/Env.html new file mode 100644 index 00000000..e5c771a1 --- /dev/null +++ b/api/classes/common/Env.html @@ -0,0 +1,223 @@ + + + + + + + Env — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Expr.html b/api/classes/common/Expr.html new file mode 100644 index 00000000..d5e20de9 --- /dev/null +++ b/api/classes/common/Expr.html @@ -0,0 +1,340 @@ + + + + + + + Expr — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/LinExpr.html b/api/classes/common/LinExpr.html new file mode 100644 index 00000000..e7fb9d39 --- /dev/null +++ b/api/classes/common/LinExpr.html @@ -0,0 +1,406 @@ + + + + + + + LinExpr — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Model.html b/api/classes/common/Model.html new file mode 100644 index 00000000..5b4a14f0 --- /dev/null +++ b/api/classes/common/Model.html @@ -0,0 +1,1758 @@ + + + + + + + Model — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Param.html b/api/classes/common/Param.html new file mode 100644 index 00000000..aac15a62 --- /dev/null +++ b/api/classes/common/Param.html @@ -0,0 +1,307 @@ + + + + + + + Param — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/QuadExpr.html b/api/classes/common/QuadExpr.html new file mode 100644 index 00000000..56e2b4ae --- /dev/null +++ b/api/classes/common/QuadExpr.html @@ -0,0 +1,230 @@ + + + + + + + QuadExpr — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Row.html b/api/classes/common/Row.html new file mode 100644 index 00000000..f21e5f0e --- /dev/null +++ b/api/classes/common/Row.html @@ -0,0 +1,557 @@ + + + + + + + Row — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/SolutionDual.html b/api/classes/common/SolutionDual.html new file mode 100644 index 00000000..8259e9f2 --- /dev/null +++ b/api/classes/common/SolutionDual.html @@ -0,0 +1,441 @@ + + + + + + + Solution::Dual — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/SolutionPrimal.html b/api/classes/common/SolutionPrimal.html new file mode 100644 index 00000000..31acce86 --- /dev/null +++ b/api/classes/common/SolutionPrimal.html @@ -0,0 +1,441 @@ + + + + + + + Solution::Primal — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/TempCtr.html b/api/classes/common/TempCtr.html new file mode 100644 index 00000000..dcc4caca --- /dev/null +++ b/api/classes/common/TempCtr.html @@ -0,0 +1,304 @@ + + + + + + + TempCtr — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/TempVar.html b/api/classes/common/TempVar.html new file mode 100644 index 00000000..c94fc840 --- /dev/null +++ b/api/classes/common/TempVar.html @@ -0,0 +1,335 @@ + + + + + + + TempVar — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/Var.html b/api/classes/common/Var.html new file mode 100644 index 00000000..29256e45 --- /dev/null +++ b/api/classes/common/Var.html @@ -0,0 +1,377 @@ + + + + + + + Var — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/common/index.html b/api/classes/common/index.html new file mode 100644 index 00000000..2aef31a9 --- /dev/null +++ b/api/classes/common/index.html @@ -0,0 +1,182 @@ + + + + + + + Common — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/external-bilevel/MibS.html b/api/classes/external-bilevel/MibS.html new file mode 100644 index 00000000..21c7c1da --- /dev/null +++ b/api/classes/external-bilevel/MibS.html @@ -0,0 +1,471 @@ + + + + + + + Bilevel::Mibs — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-bilevel/Optimizers_MibS.html b/api/classes/external-bilevel/Optimizers_MibS.html new file mode 100644 index 00000000..6aa3b648 --- /dev/null +++ b/api/classes/external-bilevel/Optimizers_MibS.html @@ -0,0 +1,152 @@ + + + + + + + Optimizers::Bilevel::Mibs — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-bilevel/index.html b/api/classes/external-bilevel/index.html new file mode 100644 index 00000000..346b1bda --- /dev/null +++ b/api/classes/external-bilevel/index.html @@ -0,0 +1,153 @@ + + + + + + + External Bilevel Solvers — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/GLPK.html b/api/classes/external-mip/GLPK.html new file mode 100644 index 00000000..c25380c5 --- /dev/null +++ b/api/classes/external-mip/GLPK.html @@ -0,0 +1,491 @@ + + + + + + + GLPK — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Gurobi.html b/api/classes/external-mip/Gurobi.html new file mode 100644 index 00000000..1849265a --- /dev/null +++ b/api/classes/external-mip/Gurobi.html @@ -0,0 +1,521 @@ + + + + + + + Gurobi — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/HiGHS.html b/api/classes/external-mip/HiGHS.html new file mode 100644 index 00000000..34f33566 --- /dev/null +++ b/api/classes/external-mip/HiGHS.html @@ -0,0 +1,491 @@ + + + + + + + HiGHS — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Mosek.html b/api/classes/external-mip/Mosek.html new file mode 100644 index 00000000..db97fb3b --- /dev/null +++ b/api/classes/external-mip/Mosek.html @@ -0,0 +1,511 @@ + + + + + + + Mosek — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Optimizers_GLPK.html b/api/classes/external-mip/Optimizers_GLPK.html new file mode 100644 index 00000000..3334138d --- /dev/null +++ b/api/classes/external-mip/Optimizers_GLPK.html @@ -0,0 +1,371 @@ + + + + + + + Optimizers::GLPK — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Optimizers_Gurobi.html b/api/classes/external-mip/Optimizers_Gurobi.html new file mode 100644 index 00000000..f2302f07 --- /dev/null +++ b/api/classes/external-mip/Optimizers_Gurobi.html @@ -0,0 +1,429 @@ + + + + + + + Optimizers::Gurobi — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Optimizers_HiGHS.html b/api/classes/external-mip/Optimizers_HiGHS.html new file mode 100644 index 00000000..daaed25b --- /dev/null +++ b/api/classes/external-mip/Optimizers_HiGHS.html @@ -0,0 +1,159 @@ + + + + + + + Optimizers::HiGHS — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Optimizers_Mosek.html b/api/classes/external-mip/Optimizers_Mosek.html new file mode 100644 index 00000000..f577cdf5 --- /dev/null +++ b/api/classes/external-mip/Optimizers_Mosek.html @@ -0,0 +1,159 @@ + + + + + + + Optimizers::Mosek — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Osi/OsiCbc.html b/api/classes/external-mip/Osi/OsiCbc.html new file mode 100644 index 00000000..3272c4b9 --- /dev/null +++ b/api/classes/external-mip/Osi/OsiCbc.html @@ -0,0 +1,473 @@ + + + + + + + OsiCbc — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Osi/OsiClp.html b/api/classes/external-mip/Osi/OsiClp.html new file mode 100644 index 00000000..a204c4ee --- /dev/null +++ b/api/classes/external-mip/Osi/OsiClp.html @@ -0,0 +1,473 @@ + + + + + + + OsiClp — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Osi/OsiCplex.html b/api/classes/external-mip/Osi/OsiCplex.html new file mode 100644 index 00000000..e5a142ef --- /dev/null +++ b/api/classes/external-mip/Osi/OsiCplex.html @@ -0,0 +1,473 @@ + + + + + + + OsiCplex — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Osi/OsiSymphony.html b/api/classes/external-mip/Osi/OsiSymphony.html new file mode 100644 index 00000000..9df3635c --- /dev/null +++ b/api/classes/external-mip/Osi/OsiSymphony.html @@ -0,0 +1,473 @@ + + + + + + + OsiSymphony — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/Osi/index.html b/api/classes/external-mip/Osi/index.html new file mode 100644 index 00000000..76169d51 --- /dev/null +++ b/api/classes/external-mip/Osi/index.html @@ -0,0 +1,526 @@ + + + + + + + COIN-OR/Osi (Cplex, Xpress, Cbc, …) — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/external-mip/index.html b/api/classes/external-mip/index.html new file mode 100644 index 00000000..7ddbfa7f --- /dev/null +++ b/api/classes/external-mip/index.html @@ -0,0 +1,192 @@ + + + + + + + External MIP solvers — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/classes/index.html b/api/classes/index.html new file mode 100644 index 00000000..6d62005f --- /dev/null +++ b/api/classes/index.html @@ -0,0 +1,231 @@ + + + + + + + Class List — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+
+ + + + \ No newline at end of file diff --git a/api/classes/universal-callbacks/Callback.html b/api/classes/universal-callbacks/Callback.html new file mode 100644 index 00000000..08413ca2 --- /dev/null +++ b/api/classes/universal-callbacks/Callback.html @@ -0,0 +1,339 @@ + + + + + + + Callback — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/universal-callbacks/CallbackFactory.html b/api/classes/universal-callbacks/CallbackFactory.html new file mode 100644 index 00000000..40b05e59 --- /dev/null +++ b/api/classes/universal-callbacks/CallbackFactory.html @@ -0,0 +1,174 @@ + + + + + + + CallbackFactory — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/universal-callbacks/LazyCutCallback.html b/api/classes/universal-callbacks/LazyCutCallback.html new file mode 100644 index 00000000..33be793d --- /dev/null +++ b/api/classes/universal-callbacks/LazyCutCallback.html @@ -0,0 +1,230 @@ + + + + + + + LazyCutCallback — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/universal-callbacks/UserCutCallback.html b/api/classes/universal-callbacks/UserCutCallback.html new file mode 100644 index 00000000..fac4c8f4 --- /dev/null +++ b/api/classes/universal-callbacks/UserCutCallback.html @@ -0,0 +1,191 @@ + + + + + + + UserCutCallback — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/classes/universal-callbacks/index.html b/api/classes/universal-callbacks/index.html new file mode 100644 index 00000000..26f2674b --- /dev/null +++ b/api/classes/universal-callbacks/index.html @@ -0,0 +1,158 @@ + + + + + + + Universal Callbacks — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/constants/index.html b/api/constants/index.html new file mode 100644 index 00000000..13c8eb88 --- /dev/null +++ b/api/constants/index.html @@ -0,0 +1,145 @@ + + + + + + + Constants — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/constants/tolerances.html b/api/constants/tolerances.html new file mode 100644 index 00000000..cc60018d --- /dev/null +++ b/api/constants/tolerances.html @@ -0,0 +1,273 @@ + + + + + + + Tolerances and Numerics — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/index.html b/api/index.html new file mode 100644 index 00000000..b3bad76c --- /dev/null +++ b/api/index.html @@ -0,0 +1,140 @@ + + + + + + + API — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/types/common/VarType.html b/api/types/common/VarType.html new file mode 100644 index 00000000..f4c717e7 --- /dev/null +++ b/api/types/common/VarType.html @@ -0,0 +1,163 @@ + + + + + + + VarType — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/types/common/index.html b/api/types/common/index.html new file mode 100644 index 00000000..c450d351 --- /dev/null +++ b/api/types/common/index.html @@ -0,0 +1,146 @@ + + + + + + + Common — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/types/index.html b/api/types/index.html new file mode 100644 index 00000000..ae1caf7b --- /dev/null +++ b/api/types/index.html @@ -0,0 +1,152 @@ + + + + + + + Type List — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/types/universal-callbacks/CallbackEvent.html b/api/types/universal-callbacks/CallbackEvent.html new file mode 100644 index 00000000..24969267 --- /dev/null +++ b/api/types/universal-callbacks/CallbackEvent.html @@ -0,0 +1,173 @@ + + + + + + + Events — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/api/types/universal-callbacks/index.html b/api/types/universal-callbacks/index.html new file mode 100644 index 00000000..b44690df --- /dev/null +++ b/api/types/universal-callbacks/index.html @@ -0,0 +1,146 @@ + + + + + + + Universal Callbacks — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/benchmark/index.html b/benchmark/index.html new file mode 100644 index 00000000..847d24fd --- /dev/null +++ b/benchmark/index.html @@ -0,0 +1,133 @@ + + + + + + + Benchmark — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/developer_guide/build-the-doc.html b/developer_guide/build-the-doc.html new file mode 100644 index 00000000..c1a51856 --- /dev/null +++ b/developer_guide/build-the-doc.html @@ -0,0 +1,177 @@ + + + + + + + Build the doc! — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/developer_guide/index.html b/developer_guide/index.html new file mode 100644 index 00000000..c93ea5f3 --- /dev/null +++ b/developer_guide/index.html @@ -0,0 +1,146 @@ + + + + + + + Developer guide — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/developer_guide/tests.html b/developer_guide/tests.html new file mode 100644 index 00000000..f3dd1132 --- /dev/null +++ b/developer_guide/tests.html @@ -0,0 +1,198 @@ + + + + + + + Unit and integration tests — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/examples/bilevel-problem.html b/examples/bilevel-problem.html new file mode 100644 index 00000000..865d48cd --- /dev/null +++ b/examples/bilevel-problem.html @@ -0,0 +1,134 @@ + + + + + + + Toy Example — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/examples/facility-location-problem.html b/examples/facility-location-problem.html new file mode 100644 index 00000000..f5e6ea6d --- /dev/null +++ b/examples/facility-location-problem.html @@ -0,0 +1,134 @@ + + + + + + + Facility Location Problem — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/examples/generalized-assignment-problem.html b/examples/generalized-assignment-problem.html new file mode 100644 index 00000000..2b903b63 --- /dev/null +++ b/examples/generalized-assignment-problem.html @@ -0,0 +1,134 @@ + + + + + + + Generalized Assignment Problem — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 00000000..56a72050 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,165 @@ + + + + + + + Examples — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/examples/knapsack-problem.html b/examples/knapsack-problem.html new file mode 100644 index 00000000..953127a6 --- /dev/null +++ b/examples/knapsack-problem.html @@ -0,0 +1,134 @@ + + + + + + + Knapsack Problem — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 00000000..8a7b7c39 --- /dev/null +++ b/faq/index.html @@ -0,0 +1,136 @@ + + + + + + + FAQ — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/faq/mosek-and-eigen.html b/faq/mosek-and-eigen.html new file mode 100644 index 00000000..381d39cc --- /dev/null +++ b/faq/mosek-and-eigen.html @@ -0,0 +1,183 @@ + + + + + + + Why is Eigen necessary to solve QPs and QCQPs with Mosek? — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..7cafff6a --- /dev/null +++ b/genindex.html @@ -0,0 +1,2064 @@ + + + + + + Index — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..ec59b581 --- /dev/null +++ b/index.html @@ -0,0 +1,268 @@ + + + + + + + What Is Idol? — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/installation/global-installation/index.html b/installation/global-installation/index.html new file mode 100644 index 00000000..8af5ea52 --- /dev/null +++ b/installation/global-installation/index.html @@ -0,0 +1,205 @@ + + + + + + + Global Installation — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/installation/global-installation/linking.html b/installation/global-installation/linking.html new file mode 100644 index 00000000..3905429f --- /dev/null +++ b/installation/global-installation/linking.html @@ -0,0 +1,175 @@ + + + + + + + Linking Your C++ Project — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/installation/index.html b/installation/index.html new file mode 100644 index 00000000..a7b2d37a --- /dev/null +++ b/installation/index.html @@ -0,0 +1,141 @@ + + + + + + + Installation — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/installation/local_installation.html b/installation/local_installation.html new file mode 100644 index 00000000..87049d05 --- /dev/null +++ b/installation/local_installation.html @@ -0,0 +1,197 @@ + + + + + + + Local Installation — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/installation/options.html b/installation/options.html new file mode 100644 index 00000000..9570a743 --- /dev/null +++ b/installation/options.html @@ -0,0 +1,306 @@ + + + + + + + List of CMake Options — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..64857eab Binary files /dev/null and b/objects.inv differ diff --git a/references.html b/references.html new file mode 100644 index 00000000..be4aa62a --- /dev/null +++ b/references.html @@ -0,0 +1,178 @@ + + + + + + + References — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 00000000..f024ed3c --- /dev/null +++ b/search.html @@ -0,0 +1,138 @@ + + + + + + Search — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..c73d6c57 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"A Simple Example: Knapsack Cover Cuts": [[133, "a-simple-example-knapsack-cover-cuts"]], "API": [[77, "api"]], "About constants in expressions": [[126, null]], "Accessing Constraints": [[124, "accessing-constraints"]], "Accessing Variables": [[130, "accessing-variables"]], "Accessing the Objective Function": [[129, "accessing-the-objective-function"]], "Adding User Cuts and Lazy Constraints": [[136, "adding-user-cuts-and-lazy-constraints"]], "Adding User Cuts and Lazy Constraints [TODO]": [[111, "adding-user-cuts-and-lazy-constraints-todo"]], "Adding an Objective Function": [[129, "adding-an-objective-function"]], "An Example of Lazy Cut Constraints: Benders Optimality Cuts": [[136, "an-example-of-lazy-cut-constraints-benders-optimality-cuts"]], "An Example of User Cuts: Knapsack Cover Inequalities": [[136, "an-example-of-user-cuts-knapsack-cover-inequalities"]], "Annotation": [[35, "annotation"]], "Automatic Reformulation": [[117, "automatic-reformulation"]], "Basics": [[120, "basics"], [133, "basics"]], "Benchmark": [[83, "benchmark"]], "BestBound": [[10, "bestbound"]], "BestEstimate": [[11, "bestestimate"]], "Bilevel Optimization": [[69, "bilevel-optimization"], [90, "bilevel-optimization"], [101, "bilevel-optimization"], [105, "bilevel-optimization"]], "Bilevel::Mibs": [[52, "bilevel-mibs"]], "Branch-and-Bound": [[90, "branch-and-bound"]], "Branch-and-Bound Algorithm": [[9, "branch-and-bound-algorithm"], [110, "branch-and-bound-algorithm"]], "Branch-and-Bound Algorithms": [[94, "branch-and-bound-algorithms"]], "Branch-and-Price 101": [[117, "branch-and-price-101"]], "BranchAndBound": [[0, "branchandbound"]], "BranchAndBoundCallback": [[1, "branchandboundcallback"]], "BranchAndBoundCallbackFactory": [[2, "branchandboundcallbackfactory"]], "Branching Rules": [[22, "branching-rules"]], "BreadthFirst": [[12, "breadthfirst"]], "Build": [[95, "build"]], "Build instructions": [[84, "build-instructions"], [86, "build-instructions"]], "Build the doc!": [[84, "build-the-doc"]], "Building Examples": [[99, "building-examples"]], "Building Unit and Integration Tests": [[99, "building-unit-and-integration-tests"]], "COIN-OR/Osi (Cplex, Xpress, Cbc, \u2026)": [[67, "coin-or-osi-cplex-xpress-cbc"]], "Callback": [[70, "callback"]], "CallbackFactory": [[71, "callbackfactory"]], "Changing the Optimization Sense": [[129, "changing-the-optimization-sense"]], "Changing the Scoring Function": [[120, "changing-the-scoring-function"]], "Class List": [[69, "class-list"]], "Code coverage options": [[86, "code-coverage-options"]], "Column": [[36, "column"]], "Column Generation Algorithm": [[31, "column-generation-algorithm"]], "Column Generation and Branch-and-Price": [[90, "column-generation-and-branch-and-price"]], "Column Generation and Branch-and-Price Algorithm": [[115, "column-generation-and-branch-and-price-algorithm"]], "Column Generation and Dantzig-Wolfe Decomposition": [[94, "column-generation-and-dantzig-wolfe-decomposition"]], "Column-and-Constraint Generation Algorithm": [[25, "column-and-constraint-generation-algorithm"]], "Column-and-Constraint-Generation Algorithm": [[137, "column-and-constraint-generation-algorithm"]], "Common": [[51, "common"], [75, "common"], [79, "common"]], "Configure": [[95, "configure"]], "Constant": [[37, "constant"]], "Constants": [[75, "constants"]], "Constraints": [[124, "constraints"]], "Create Your Own Callback (Advanced) [TODO]": [[107, "create-your-own-callback-advanced-todo"]], "Creating Constraints": [[124, "creating-constraints"]], "Creating Several Variables at Once": [[130, "creating-several-variables-at-once"]], "Creating Variables": [[130, "creating-variables"]], "Creating Your Own Branching Rule (Advanced) [TODO]": [[106, "creating-your-own-branching-rule-advanced-todo"]], "Creating Your Own Node Class (Advanced) [TODO]": [[108, "creating-your-own-node-class-advanced-todo"]], "Creating Your Own Node Selection Rule (Advanced) [TODO]": [[109, "creating-your-own-node-selection-rule-advanced-todo"]], "Creating Your Own Optimizer (Advanced) [TODO]": [[132, "creating-your-own-optimizer-advanced-todo"]], "Creating Your Own Universal Callback": [[133, "creating-your-own-universal-callback"]], "Creating a Model": [[128, "creating-a-model"]], "Creating the Branch-and-Price Algorithm": [[117, "creating-the-branch-and-price-algorithm"]], "Creating your own callback": [[70, "creating-your-own-callback"]], "Ctr": [[38, "ctr"]], "Current Features": [[94, "current-features"]], "Cuts::KnapsackCover": [[3, "cuts-knapsackcover"]], "Cutting Planes": [[4, "cutting-planes"]], "Dantzig-Wolfe Reformulation": [[117, "dantzig-wolfe-reformulation"]], "DantzigWolfe::ArtificialCosts": [[26, "dantzigwolfe-artificialcosts"]], "DantzigWolfe::FarkasPricing": [[28, "dantzigwolfe-farkaspricing"]], "DantzigWolfe::Neame": [[32, "dantzigwolfe-neame"]], "DantzigWolfe::Wentges": [[33, "dantzigwolfe-wentges"]], "DantzigWolfeDecomposition": [[27, "dantzigwolfedecomposition"]], "Dependencies": [[84, "dependencies"], [86, "dependencies"]], "DepthFirst": [[13, "depthfirst"]], "Description": [[84, "description"]], "Detailed Answer": [[93, "detailed-answer"]], "Developer guide": [[85, "developer-guide"]], "Env": [[39, "env"]], "Events": [[81, "events"]], "Example": [[0, null], [1, null], [41, null], [70, null], [86, null], [86, null], [94, null], [99, null], [99, null], [99, null], [99, null], [99, null], [99, null], [99, null], [117, null], [135, null]], "Example for Gurobi": [[95, null]], "Example:": [[42, null]], "Examples": [[90, "examples"]], "Expr": [[40, "expr"]], "Expressions": [[126, "expressions"]], "External Bilevel Solvers": [[54, "external-bilevel-solvers"]], "External MIP solvers": [[68, "external-mip-solvers"]], "FAQ": [[92, "faq"]], "Facility Location Problem": [[88, "facility-location-problem"]], "FirstInfeasibleFound": [[16, "firstinfeasiblefound"]], "Full Strong Branching": [[120, "full-strong-branching"]], "GLPK": [[55, "glpk"]], "GLPK (Open-Source Solver)": [[99, "glpk-open-source-solver"]], "Generalized Assignment Problem": [[89, "generalized-assignment-problem"]], "Getting Access to The Underlying Optimizer": [[131, "getting-access-to-the-underlying-optimizer"]], "Getting Started With Idol": [[94, "getting-started-with-idol"]], "Giving Decomposition Instructions": [[117, "giving-decomposition-instructions"]], "Global Installation": [[95, "global-installation"]], "Gurobi": [[56, "gurobi"]], "Gurobi (Commercial Solver)": [[99, "gurobi-commercial-solver"]], "Heuristic Pricing (to come)": [[118, "heuristic-pricing-to-come"]], "Heuristics": [[8, "heuristics"]], "Heuristics::IntegerMaster": [[29, "heuristics-integermaster"]], "Heuristics::LocalBranching": [[5, "heuristics-localbranching"]], "Heuristics::RENS": [[6, "heuristics-rens"]], "Heuristics::SimpleRounding": [[7, "heuristics-simplerounding"]], "HiGHS": [[57, "highs"]], "HiGHS (Open-Source Solver)": [[99, "highs-open-source-solver"]], "Implementation": [[120, "implementation"]], "In Short": [[93, "in-short"]], "In-Out Stabilization (to come)": [[119, "in-out-stabilization-to-come"]], "Install": [[95, "install"]], "Installation": [[97, "installation"]], "Installation guide (Ubuntu)": [[84, "installation-guide-ubuntu"], [86, "installation-guide-ubuntu"]], "Interfacing External Optimization Solvers": [[94, "interfacing-external-optimization-solvers"]], "Introduction": [[136, "introduction"]], "Is This a MIP Solver?": [[94, "is-this-a-mip-solver"]], "Iterating over the Variables and Constraints": [[128, "iterating-over-the-variables-and-constraints"]], "Knapsack Problem": [[91, "knapsack-problem"]], "LazyCutCallback": [[72, "lazycutcallback"]], "LeastInfeasible": [[17, "leastinfeasible"]], "LinExpr": [[41, "linexpr"]], "Linking Your C++ Project": [[96, "linking-your-c-project"]], "Linking with External Solvers": [[99, "linking-with-external-solvers"]], "List of CMake Options": [[99, "list-of-cmake-options"]], "Local Installation": [[98, "local-installation"]], "Mathematical Models": [[117, "mathematical-models"]], "Mixed-Integer Programming": [[69, "mixed-integer-programming"], [80, "mixed-integer-programming"], [90, "mixed-integer-programming"], [105, "mixed-integer-programming"], [123, "mixed-integer-programming"]], "Model": [[42, "model"]], "Modeling": [[102, "modeling"], [127, "modeling"], [142, "modeling"]], "Modeling a Two-Stage Robust Problem [TODO]": [[143, "modeling-a-two-stage-robust-problem-todo"]], "Modeling an Optimistic Bilevel Problem [TODO]": [[104, "modeling-an-optimistic-bilevel-problem-todo"]], "Modeling and Solving A Dantzig-Wolfe Reformulation [TODO]": [[113, "modeling-and-solving-a-dantzig-wolfe-reformulation-todo"]], "Models": [[128, "models"]], "Modifying Constraints": [[124, "modifying-constraints"]], "Modifying Variables": [[130, "modifying-variables"]], "Mosek": [[58, "mosek"]], "Mosek (Commercial Solver)": [[99, "mosek-commercial-solver"]], "MostInfeasible": [[18, "mostinfeasible"]], "Node Selection Rules": [[15, "node-selection-rules"]], "Objective Functions": [[129, "objective-functions"]], "Optimizers": [[134, "optimizers"]], "Optimizers::Bilevel::Mibs": [[53, "optimizers-bilevel-mibs"]], "Optimizers::DantzigWolfeDecomposition": [[30, "optimizers-dantzigwolfedecomposition"]], "Optimizers::GLPK": [[59, "optimizers-glpk"]], "Optimizers::Gurobi": [[60, "optimizers-gurobi"]], "Optimizers::HiGHS": [[61, "optimizers-highs"]], "Optimizers::Mosek": [[62, "optimizers-mosek"]], "Optimizers::Robust::ColumnAndConstraintGeneration": [[24, "optimizers-robust-columnandconstraintgeneration"]], "Original Formulation": [[117, "original-formulation"]], "OsiCbc": [[63, "osicbc"]], "OsiClp": [[64, "osiclp"]], "OsiCplex": [[65, "osicplex"]], "OsiSymphony": [[66, "osisymphony"]], "Other optional dependencies": [[99, "other-optional-dependencies"]], "Param": [[43, "param"]], "Phases": [[120, "phases"]], "PseudoCost": [[19, "pseudocost"]], "QuadExpr": [[44, "quadexpr"]], "Reading a Model from a File": [[128, "reading-a-model-from-a-file"]], "References": [[100, "references"]], "Removing Constraints": [[124, "removing-constraints"]], "Removing Variables": [[130, "removing-variables"]], "Restricted Strong Branching": [[120, "restricted-strong-branching"]], "Robust Optimization": [[69, "robust-optimization"], [105, "robust-optimization"], [141, "robust-optimization"]], "Robust::ColumnAndConstraintGeneration": [[23, "robust-columnandconstraintgeneration"]], "Row": [[45, "row"]], "Saving a Projected Solution": [[135, "saving-a-projected-solution"]], "Saving a Solution": [[135, "saving-a-solution"]], "Scoring Functions": [[120, "scoring-functions"]], "Solution::Dual": [[46, "solution-dual"]], "Solution::Primal": [[47, "solution-primal"]], "Solving Bilevel Problems with Coin-OR/MibS [TODO]": [[103, "solving-bilevel-problems-with-coin-or-mibs-todo"]], "Solving a Model": [[135, "solving-a-model"]], "Solving a Model and Accessing the Solution": [[135, "solving-a-model-and-accessing-the-solution"]], "Stabilization": [[34, "stabilization"]], "StrongBranching": [[20, "strongbranching"]], "Table of Contents": [[94, "table-of-contents"], [95, "table-of-contents"], [99, "table-of-contents"], [120, "table-of-contents"], [124, "table-of-contents"], [128, "table-of-contents"], [129, "table-of-contents"], [130, "table-of-contents"], [133, "table-of-contents"], [135, "table-of-contents"], [136, "table-of-contents"]], "TempCtr": [[48, "tempctr"]], "TempVar": [[49, "tempvar"]], "The Environment": [[125, "the-environment"]], "The Integer Master Heuristic [TODO]": [[116, "the-integer-master-heuristic-todo"]], "The Original Formulation": [[117, "the-original-formulation"]], "Tolerances and Numerics": [[76, "tolerances-and-numerics"]], "Toy Example": [[87, "toy-example"]], "Tutorials": [[105, "tutorials"]], "Type List": [[80, "type-list"]], "UniformlyRandom": [[21, "uniformlyrandom"]], "Unit and integration tests": [[86, "unit-and-integration-tests"]], "Universal Callbacks": [[74, "universal-callbacks"], [82, "universal-callbacks"]], "UserCutCallback": [[73, "usercutcallback"]], "UserCutCallback and LazyCutCallback": [[70, "usercutcallback-and-lazycutcallback"]], "Using Eigen": [[99, "using-eigen"]], "Using In-Out Stabilization [TODO]": [[114, "using-in-out-stabilization-todo"]], "Using Strong Branching": [[120, "using-strong-branching"]], "Using Trust Region Stabilization [TODO]": [[138, "using-trust-region-stabilization-todo"]], "Using martinus/robin-hood-hashing hash map": [[99, "using-martinus-robin-hood-hashing-hash-map"]], "Var": [[50, "var"]], "VarType": [[78, "vartype"]], "Variables": [[130, "variables"]], "Variants": [[120, "variants"]], "What Is Idol?": [[94, "what-is-idol"]], "Why is Eigen necessary to solve QPs and QCQPs with Mosek?": [[93, "why-is-eigen-necessary-to-solve-qps-and-qcqps-with-mosek"]], "WorstBound": [[14, "worstbound"]], "Writing A Branch-and-Cut-and-Price Algorithm [TODO]": [[121, "writing-a-branch-and-cut-and-price-algorithm-todo"]], "Writing A Branch-and-Price Algorithm [TODO]": [[122, "writing-a-branch-and-price-algorithm-todo"]], "Writing Your Own Separator (Advanced) [TODO]": [[140, "writing-your-own-separator-advanced-todo"]], "Writing a Column-and-Constraint-Generation Algorithm [TODO]": [[139, "writing-a-column-and-constraint-generation-algorithm-todo"]], "Writing a Model to a File": [[128, "writing-a-model-to-a-file"]], "Writing an LP-based Branch-and-Bound [TODO]": [[112, "writing-an-lp-based-branch-and-bound-todo"]]}, "docnames": ["api/classes/branch-and-bound/BranchAndBound", "api/classes/branch-and-bound/BranchAndBoundCallback", "api/classes/branch-and-bound/BranchAndBoundCallbackFactory", "api/classes/branch-and-bound/cuts/KnapsackCover", "api/classes/branch-and-bound/cuts/index", "api/classes/branch-and-bound/heuristics/LocalBranching", "api/classes/branch-and-bound/heuristics/RENS", "api/classes/branch-and-bound/heuristics/SimpleRounding", "api/classes/branch-and-bound/heuristics/index", "api/classes/branch-and-bound/index", "api/classes/branch-and-bound/node-selection/BestBound", "api/classes/branch-and-bound/node-selection/BestEstimate", "api/classes/branch-and-bound/node-selection/BreadthFirst", "api/classes/branch-and-bound/node-selection/DepthFirst", "api/classes/branch-and-bound/node-selection/WorstBound", "api/classes/branch-and-bound/node-selection/index", "api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound", "api/classes/branch-and-bound/variable-selection/LeastInfeasible", "api/classes/branch-and-bound/variable-selection/MostInfeasible", "api/classes/branch-and-bound/variable-selection/PseudoCost", "api/classes/branch-and-bound/variable-selection/StrongBranching", "api/classes/branch-and-bound/variable-selection/UniformlyRandom", "api/classes/branch-and-bound/variable-selection/index", "api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration", "api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration", "api/classes/column-and-constraint-generation/index", "api/classes/column-generation/ArtificialCosts", "api/classes/column-generation/DantzigWolfeDecomposition", "api/classes/column-generation/FarkasPricing", "api/classes/column-generation/IntegerMaster", "api/classes/column-generation/Optimizers_DantzigWolfeDecomposition", "api/classes/column-generation/index", "api/classes/column-generation/stabilization/Neame", "api/classes/column-generation/stabilization/Wentges", "api/classes/column-generation/stabilization/index", "api/classes/common/Annotation", "api/classes/common/Column", "api/classes/common/Constant", "api/classes/common/Ctr", "api/classes/common/Env", "api/classes/common/Expr", "api/classes/common/LinExpr", "api/classes/common/Model", "api/classes/common/Param", "api/classes/common/QuadExpr", "api/classes/common/Row", "api/classes/common/SolutionDual", "api/classes/common/SolutionPrimal", "api/classes/common/TempCtr", "api/classes/common/TempVar", "api/classes/common/Var", "api/classes/common/index", "api/classes/external-bilevel/MibS", "api/classes/external-bilevel/Optimizers_MibS", "api/classes/external-bilevel/index", "api/classes/external-mip/GLPK", "api/classes/external-mip/Gurobi", "api/classes/external-mip/HiGHS", "api/classes/external-mip/Mosek", "api/classes/external-mip/Optimizers_GLPK", "api/classes/external-mip/Optimizers_Gurobi", "api/classes/external-mip/Optimizers_HiGHS", "api/classes/external-mip/Optimizers_Mosek", "api/classes/external-mip/Osi/OsiCbc", "api/classes/external-mip/Osi/OsiClp", "api/classes/external-mip/Osi/OsiCplex", "api/classes/external-mip/Osi/OsiSymphony", "api/classes/external-mip/Osi/index", "api/classes/external-mip/index", "api/classes/index", "api/classes/universal-callbacks/Callback", "api/classes/universal-callbacks/CallbackFactory", "api/classes/universal-callbacks/LazyCutCallback", "api/classes/universal-callbacks/UserCutCallback", "api/classes/universal-callbacks/index", "api/constants/index", "api/constants/tolerances", "api/index", "api/types/common/VarType", "api/types/common/index", "api/types/index", "api/types/universal-callbacks/CallbackEvent", "api/types/universal-callbacks/index", "benchmark/index", "developer_guide/build-the-doc", "developer_guide/index", "developer_guide/tests", "examples/bilevel-problem", "examples/facility-location-problem", "examples/generalized-assignment-problem", "examples/index", "examples/knapsack-problem", "faq/index", "faq/mosek-and-eigen", "index", "installation/global-installation/index", "installation/global-installation/linking", "installation/index", "installation/local_installation", "installation/options", "references", "tutorials/bilevel-optimization/index", "tutorials/bilevel-optimization/modeling/index", "tutorials/bilevel-optimization/modeling/mibs", "tutorials/bilevel-optimization/modeling/optimistic", "tutorials/index", "tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule", "tutorials/mixed-integer-programming/branch-and-bound/create-callback", "tutorials/mixed-integer-programming/branch-and-bound/create-node", "tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule", "tutorials/mixed-integer-programming/branch-and-bound/index", "tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints", "tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound", "tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe", "tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization", "tutorials/mixed-integer-programming/dantzig-wolfe/index", "tutorials/mixed-integer-programming/dantzig-wolfe/integer-master", "tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe", "tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic", "tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization", "tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching", "tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price", "tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price", "tutorials/mixed-integer-programming/index", "tutorials/mixed-integer-programming/modeling/constraints", "tutorials/mixed-integer-programming/modeling/environment", "tutorials/mixed-integer-programming/modeling/expressions", "tutorials/mixed-integer-programming/modeling/index", "tutorials/mixed-integer-programming/modeling/models", "tutorials/mixed-integer-programming/modeling/objective-function", "tutorials/mixed-integer-programming/modeling/variables", "tutorials/mixed-integer-programming/optimizers/access-optimizer", "tutorials/mixed-integer-programming/optimizers/create-optimizer", "tutorials/mixed-integer-programming/optimizers/create-universal-callback", "tutorials/mixed-integer-programming/optimizers/index", "tutorials/mixed-integer-programming/optimizers/solving", "tutorials/mixed-integer-programming/optimizers/universal-callbacks", "tutorials/robust-optimization/column-and-constraint-generation/index", "tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization", "tutorials/robust-optimization/column-and-constraint-generation/write-ccg", "tutorials/robust-optimization/column-and-constraint-generation/writing-separator", "tutorials/robust-optimization/index", "tutorials/robust-optimization/modeling/index", "tutorials/robust-optimization/modeling/two-stage-robust"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinxcontrib.bibtex": 9}, "filenames": ["api/classes/branch-and-bound/BranchAndBound.rst", "api/classes/branch-and-bound/BranchAndBoundCallback.rst", "api/classes/branch-and-bound/BranchAndBoundCallbackFactory.rst", "api/classes/branch-and-bound/cuts/KnapsackCover.rst", "api/classes/branch-and-bound/cuts/index.rst", "api/classes/branch-and-bound/heuristics/LocalBranching.rst", "api/classes/branch-and-bound/heuristics/RENS.rst", "api/classes/branch-and-bound/heuristics/SimpleRounding.rst", "api/classes/branch-and-bound/heuristics/index.rst", "api/classes/branch-and-bound/index.rst", "api/classes/branch-and-bound/node-selection/BestBound.rst", "api/classes/branch-and-bound/node-selection/BestEstimate.rst", "api/classes/branch-and-bound/node-selection/BreadthFirst.rst", "api/classes/branch-and-bound/node-selection/DepthFirst.rst", "api/classes/branch-and-bound/node-selection/WorstBound.rst", "api/classes/branch-and-bound/node-selection/index.rst", "api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.rst", "api/classes/branch-and-bound/variable-selection/LeastInfeasible.rst", "api/classes/branch-and-bound/variable-selection/MostInfeasible.rst", "api/classes/branch-and-bound/variable-selection/PseudoCost.rst", "api/classes/branch-and-bound/variable-selection/StrongBranching.rst", "api/classes/branch-and-bound/variable-selection/UniformlyRandom.rst", "api/classes/branch-and-bound/variable-selection/index.rst", "api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.rst", "api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.rst", "api/classes/column-and-constraint-generation/index.rst", "api/classes/column-generation/ArtificialCosts.rst", "api/classes/column-generation/DantzigWolfeDecomposition.rst", "api/classes/column-generation/FarkasPricing.rst", "api/classes/column-generation/IntegerMaster.rst", "api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.rst", "api/classes/column-generation/index.rst", "api/classes/column-generation/stabilization/Neame.rst", "api/classes/column-generation/stabilization/Wentges.rst", "api/classes/column-generation/stabilization/index.rst", "api/classes/common/Annotation.rst", "api/classes/common/Column.rst", "api/classes/common/Constant.rst", "api/classes/common/Ctr.rst", "api/classes/common/Env.rst", "api/classes/common/Expr.rst", "api/classes/common/LinExpr.rst", "api/classes/common/Model.rst", "api/classes/common/Param.rst", "api/classes/common/QuadExpr.rst", "api/classes/common/Row.rst", "api/classes/common/SolutionDual.rst", "api/classes/common/SolutionPrimal.rst", "api/classes/common/TempCtr.rst", "api/classes/common/TempVar.rst", "api/classes/common/Var.rst", "api/classes/common/index.rst", "api/classes/external-bilevel/MibS.rst", "api/classes/external-bilevel/Optimizers_MibS.rst", "api/classes/external-bilevel/index.rst", "api/classes/external-mip/GLPK.rst", "api/classes/external-mip/Gurobi.rst", "api/classes/external-mip/HiGHS.rst", "api/classes/external-mip/Mosek.rst", "api/classes/external-mip/Optimizers_GLPK.rst", "api/classes/external-mip/Optimizers_Gurobi.rst", "api/classes/external-mip/Optimizers_HiGHS.rst", "api/classes/external-mip/Optimizers_Mosek.rst", "api/classes/external-mip/Osi/OsiCbc.rst", "api/classes/external-mip/Osi/OsiClp.rst", "api/classes/external-mip/Osi/OsiCplex.rst", "api/classes/external-mip/Osi/OsiSymphony.rst", "api/classes/external-mip/Osi/index.rst", "api/classes/external-mip/index.rst", "api/classes/index.rst", "api/classes/universal-callbacks/Callback.rst", "api/classes/universal-callbacks/CallbackFactory.rst", "api/classes/universal-callbacks/LazyCutCallback.rst", "api/classes/universal-callbacks/UserCutCallback.rst", "api/classes/universal-callbacks/index.rst", "api/constants/index.rst", "api/constants/tolerances.rst", "api/index.rst", "api/types/common/VarType.rst", "api/types/common/index.rst", "api/types/index.rst", "api/types/universal-callbacks/CallbackEvent.rst", "api/types/universal-callbacks/index.rst", "benchmark/index.rst", "developer_guide/build-the-doc.rst", "developer_guide/index.rst", "developer_guide/tests.rst", "examples/bilevel-problem.rst", "examples/facility-location-problem.rst", "examples/generalized-assignment-problem.rst", "examples/index.rst", "examples/knapsack-problem.rst", "faq/index.rst", "faq/mosek-and-eigen.rst", "index.rst", "installation/global-installation/index.rst", "installation/global-installation/linking.rst", "installation/index.rst", "installation/local_installation.rst", "installation/options.rst", "references.rst", "tutorials/bilevel-optimization/index.rst", "tutorials/bilevel-optimization/modeling/index.rst", "tutorials/bilevel-optimization/modeling/mibs.rst", "tutorials/bilevel-optimization/modeling/optimistic.rst", "tutorials/index.rst", "tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.rst", "tutorials/mixed-integer-programming/branch-and-bound/create-callback.rst", "tutorials/mixed-integer-programming/branch-and-bound/create-node.rst", "tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.rst", "tutorials/mixed-integer-programming/branch-and-bound/index.rst", "tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.rst", "tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/index.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.rst", "tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.rst", "tutorials/mixed-integer-programming/index.rst", "tutorials/mixed-integer-programming/modeling/constraints.rst", "tutorials/mixed-integer-programming/modeling/environment.rst", "tutorials/mixed-integer-programming/modeling/expressions.rst", "tutorials/mixed-integer-programming/modeling/index.rst", "tutorials/mixed-integer-programming/modeling/models.rst", "tutorials/mixed-integer-programming/modeling/objective-function.rst", "tutorials/mixed-integer-programming/modeling/variables.rst", "tutorials/mixed-integer-programming/optimizers/access-optimizer.rst", "tutorials/mixed-integer-programming/optimizers/create-optimizer.rst", "tutorials/mixed-integer-programming/optimizers/create-universal-callback.rst", "tutorials/mixed-integer-programming/optimizers/index.rst", "tutorials/mixed-integer-programming/optimizers/solving.rst", "tutorials/mixed-integer-programming/optimizers/universal-callbacks.rst", "tutorials/robust-optimization/column-and-constraint-generation/index.rst", "tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.rst", "tutorials/robust-optimization/column-and-constraint-generation/write-ccg.rst", "tutorials/robust-optimization/column-and-constraint-generation/writing-separator.rst", "tutorials/robust-optimization/index.rst", "tutorials/robust-optimization/modeling/index.rst", "tutorials/robust-optimization/modeling/two-stage-robust.rst"], "indexentries": {"idol (c++ type)": [[76, "_CPPv44idol", false]], "idol::absolute_gap (c++ function)": [[76, "_CPPv4N4idol12absolute_gapEdd", false]], "idol::annotation (c++ class)": [[35, "_CPPv4I00EN4idol10AnnotationE", false]], "idol::annotation::annotation (c++ function)": [[35, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", false], [35, "_CPPv4N4idol10Annotation10AnnotationER3EnvNSt6stringE", false]], "idol::annotation::default_value (c++ function)": [[35, "_CPPv4NK4idol10Annotation13default_valueEv", false]], "idol::annotation::free (c++ function)": [[35, "_CPPv4N4idol10Annotation4freeEv", false]], "idol::annotation::has_default (c++ function)": [[35, "_CPPv4NK4idol10Annotation11has_defaultEv", false]], "idol::annotation::id (c++ function)": [[35, "_CPPv4NK4idol10Annotation2idEv", false]], "idol::annotation::is_ctr_annotation (c++ function)": [[35, "_CPPv4NK4idol10Annotation17is_ctr_annotationEv", false]], "idol::annotation::is_var_annotation (c++ function)": [[35, "_CPPv4NK4idol10Annotation17is_var_annotationEv", false]], "idol::annotation::make_with_default_value (c++ function)": [[35, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", false]], "idol::annotation::name (c++ function)": [[35, "_CPPv4NK4idol10Annotation4nameEv", false]], "idol::bestbound (c++ class)": [[10, "_CPPv4N4idol9BestBoundE", false]], "idol::bestbound::strategy (c++ class)": [[10, "_CPPv4I0EN4idol9BestBound8StrategyE", false]], "idol::bestbound::strategy::clone (c++ function)": [[10, "_CPPv4NK4idol9BestBound8Strategy5cloneEv", false]], "idol::bestbound::strategy::operator() (c++ function)": [[10, "_CPPv4NK4idol9BestBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", false]], "idol::bestbound::strategy::strategy (c++ function)": [[10, "_CPPv4N4idol9BestBound8Strategy8StrategyERK9BestBound", false]], "idol::bestestimate (c++ class)": [[11, "_CPPv4N4idol12BestEstimateE", false]], "idol::bestestimate::strategy (c++ class)": [[11, "_CPPv4I0EN4idol12BestEstimate8StrategyE", false]], "idol::bestestimate::strategy::clone (c++ function)": [[11, "_CPPv4NK4idol12BestEstimate8Strategy5cloneEv", false]], "idol::bestestimate::strategy::operator() (c++ function)": [[11, "_CPPv4NK4idol12BestEstimate8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", false]], "idol::bestestimate::strategy::strategy (c++ function)": [[11, "_CPPv4N4idol12BestEstimate8Strategy8StrategyERK12BestEstimate", false]], "idol::bilevel::mibs (c++ class)": [[52, "_CPPv4N4idol7Bilevel4MibSE", false]], "idol::bilevel::mibs::as (c++ function)": [[52, "_CPPv4I0EN4idol7Bilevel4MibS2asER1Tv", false], [52, "_CPPv4I0ENK4idol7Bilevel4MibS2asERK1Tv", false]], "idol::bilevel::mibs::clone (c++ function)": [[52, "_CPPv4NK4idol7Bilevel4MibS5cloneEv", false]], "idol::bilevel::mibs::conditional (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEE", false], [52, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEERKNSt8functionIFvR4MibSEEE", false]], "idol::bilevel::mibs::is (c++ function)": [[52, "_CPPv4I0ENK4idol7Bilevel4MibS2isEbv", false]], "idol::bilevel::mibs::mibs (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS4MibSEN7Bilevel11DescriptionE", false], [52, "_CPPv4N4idol7Bilevel4MibS4MibSERK4MibS", false], [52, "_CPPv4N4idol7Bilevel4MibS4MibSERR4MibS", false]], "idol::bilevel::mibs::operator() (c++ function)": [[52, "_CPPv4NK4idol7Bilevel4MibSclERK5Model", false]], "idol::bilevel::mibs::operator= (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibSaSERK4MibS", false], [52, "_CPPv4N4idol7Bilevel4MibSaSERR4MibS", false]], "idol::bilevel::mibs::with_absolute_gap_tolerance (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS27with_absolute_gap_toleranceEd", false]], "idol::bilevel::mibs::with_best_bound_stop (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS20with_best_bound_stopEd", false]], "idol::bilevel::mibs::with_best_obj_stop (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS18with_best_obj_stopEd", false]], "idol::bilevel::mibs::with_infeasible_or_unbounded_info (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS33with_infeasible_or_unbounded_infoEb", false]], "idol::bilevel::mibs::with_iteration_limit (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS20with_iteration_limitEj", false]], "idol::bilevel::mibs::with_logs (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS9with_logsEb", false]], "idol::bilevel::mibs::with_presolve (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS13with_presolveEb", false]], "idol::bilevel::mibs::with_relative_gap_tolerance (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS27with_relative_gap_toleranceEd", false]], "idol::bilevel::mibs::with_thread_limit (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS17with_thread_limitEj", false]], "idol::bilevel::mibs::with_time_limit (c++ function)": [[52, "_CPPv4N4idol7Bilevel4MibS15with_time_limitEd", false]], "idol::branchandbound (c++ class)": [[0, "_CPPv4I0EN4idol14BranchAndBoundE", false]], "idol::branchandbound::add_callback (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound12add_callbackERK15CallbackFactory", false], [0, "_CPPv4N4idol14BranchAndBound12add_callbackERK29BranchAndBoundCallbackFactoryI5NodeTE", false]], "idol::branchandbound::as (c++ function)": [[0, "_CPPv4I0EN4idol14BranchAndBound2asER1Tv", false], [0, "_CPPv4I0ENK4idol14BranchAndBound2asERK1Tv", false]], "idol::branchandbound::branchandbound (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound14BranchAndBoundERK14BranchAndBound", false], [0, "_CPPv4N4idol14BranchAndBound14BranchAndBoundERR14BranchAndBound", false], [0, "_CPPv4N4idol14BranchAndBound14BranchAndBoundEv", false]], "idol::branchandbound::clone (c++ function)": [[0, "_CPPv4NK4idol14BranchAndBound5cloneEv", false]], "idol::branchandbound::conditional (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", false], [0, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEERKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", false]], "idol::branchandbound::is (c++ function)": [[0, "_CPPv4I0ENK4idol14BranchAndBound2isEbv", false]], "idol::branchandbound::only_if_has_strategy (c++ type)": [[0, "_CPPv4I00EN4idol14BranchAndBound20only_if_has_StrategyE", false]], "idol::branchandbound::operator() (c++ function)": [[0, "_CPPv4NK4idol14BranchAndBoundclERK5Model", false]], "idol::branchandbound::operator+= (c++ function)": [[0, "_CPPv4N4idol14BranchAndBoundpLERK16OptimizerFactory", false]], "idol::branchandbound::operator= (c++ function)": [[0, "_CPPv4N4idol14BranchAndBoundaSERK14BranchAndBound", false], [0, "_CPPv4N4idol14BranchAndBoundaSERR14BranchAndBound", false]], "idol::branchandbound::set_node_optimizer (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound18set_node_optimizerERK16OptimizerFactory", false]], "idol::branchandbound::with_absolute_gap_tolerance (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound27with_absolute_gap_toleranceEd", false]], "idol::branchandbound::with_best_bound_stop (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound20with_best_bound_stopEd", false]], "idol::branchandbound::with_best_obj_stop (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound18with_best_obj_stopEd", false]], "idol::branchandbound::with_branching_rule (c++ function)": [[0, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE21BranchingRuleFactoryTERK21BranchingRuleFactoryT", false], [0, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE21BranchingRuleFactoryTEERK21BranchingRuleFactoryT", false], [0, "_CPPv4N4idol14BranchAndBound19with_branching_ruleERK20BranchingRuleFactoryI5NodeTE", false]], "idol::branchandbound::with_infeasible_or_unbounded_info (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound33with_infeasible_or_unbounded_infoEb", false]], "idol::branchandbound::with_iteration_limit (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound20with_iteration_limitEj", false]], "idol::branchandbound::with_logger (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound11with_loggerERKN4Logs14BranchAndBound7FactoryI5NodeTEE", false]], "idol::branchandbound::with_logs (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound9with_logsEb", false]], "idol::branchandbound::with_node_optimizer (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound19with_node_optimizerERK16OptimizerFactory", false]], "idol::branchandbound::with_node_selection_rule (c++ function)": [[0, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE25NodeSelectionRuleFactoryTERK25NodeSelectionRuleFactoryT", false], [0, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE25NodeSelectionRuleFactoryTEERK25NodeSelectionRuleFactoryT", false], [0, "_CPPv4N4idol14BranchAndBound24with_node_selection_ruleERK24NodeSelectionRuleFactoryI5NodeTE", false]], "idol::branchandbound::with_presolve (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound13with_presolveEb", false]], "idol::branchandbound::with_relative_gap_tolerance (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound27with_relative_gap_toleranceEd", false]], "idol::branchandbound::with_scaling (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound12with_scalingEb", false]], "idol::branchandbound::with_subtree_depth (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound18with_subtree_depthEj", false]], "idol::branchandbound::with_thread_limit (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound17with_thread_limitEj", false]], "idol::branchandbound::with_time_limit (c++ function)": [[0, "_CPPv4N4idol14BranchAndBound15with_time_limitEd", false]], "idol::branchandboundcallback (c++ class)": [[1, "_CPPv4I0EN4idol22BranchAndBoundCallbackE", false]], "idol::branchandboundcallback::add_lazy_cut (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback12add_lazy_cutERK7TempCtr", false]], "idol::branchandboundcallback::add_user_cut (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback12add_user_cutERK7TempCtr", false]], "idol::branchandboundcallback::initialize (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback10initializeEv", false]], "idol::branchandboundcallback::log_after_termination (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback21log_after_terminationEv", false]], "idol::branchandboundcallback::node (c++ function)": [[1, "_CPPv4NK4idol22BranchAndBoundCallback4nodeEv", false]], "idol::branchandboundcallback::operator() (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallbackclE13CallbackEvent", false]], "idol::branchandboundcallback::original_model (c++ function)": [[1, "_CPPv4NK4idol22BranchAndBoundCallback14original_modelEv", false]], "idol::branchandboundcallback::relaxation (c++ function)": [[1, "_CPPv4NK4idol22BranchAndBoundCallback10relaxationEv", false]], "idol::branchandboundcallback::side_effect_registry (c++ function)": [[1, "_CPPv4NK4idol22BranchAndBoundCallback20side_effect_registryEv", false]], "idol::branchandboundcallback::submit_bound (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback12submit_boundEd", false]], "idol::branchandboundcallback::submit_heuristic_solution (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallback25submit_heuristic_solutionEP9NodeInfoT", false]], "idol::branchandboundcallback::time (c++ function)": [[1, "_CPPv4NK4idol22BranchAndBoundCallback4timeEv", false]], "idol::branchandboundcallback::~branchandboundcallback (c++ function)": [[1, "_CPPv4N4idol22BranchAndBoundCallbackD0Ev", false]], "idol::branchandboundcallbackfactory (c++ class)": [[2, "_CPPv4I0EN4idol29BranchAndBoundCallbackFactoryE", false]], "idol::branchandboundcallbackfactory::clone (c++ function)": [[2, "_CPPv4NK4idol29BranchAndBoundCallbackFactory5cloneEv", false]], "idol::branchandboundcallbackfactory::operator() (c++ function)": [[2, "_CPPv4N4idol29BranchAndBoundCallbackFactoryclEv", false]], "idol::branchandboundcallbackfactory::~branchandboundcallbackfactory (c++ function)": [[2, "_CPPv4N4idol29BranchAndBoundCallbackFactoryD0Ev", false]], "idol::breadthfirst (c++ class)": [[12, "_CPPv4N4idol12BreadthFirstE", false]], "idol::breadthfirst::strategy (c++ class)": [[12, "_CPPv4I0EN4idol12BreadthFirst8StrategyE", false]], "idol::breadthfirst::strategy::clone (c++ function)": [[12, "_CPPv4NK4idol12BreadthFirst8Strategy5cloneEv", false]], "idol::breadthfirst::strategy::operator() (c++ function)": [[12, "_CPPv4NK4idol12BreadthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", false]], "idol::breadthfirst::strategy::strategy (c++ function)": [[12, "_CPPv4N4idol12BreadthFirst8Strategy8StrategyERK12BreadthFirst", false]], "idol::callback (c++ class)": [[70, "_CPPv4N4idol8CallbackE", false]], "idol::callback::add_lazy_cut (c++ function)": [[70, "_CPPv4N4idol8Callback12add_lazy_cutERK7TempCtr", false]], "idol::callback::add_user_cut (c++ function)": [[70, "_CPPv4N4idol8Callback12add_user_cutERK7TempCtr", false]], "idol::callback::best_bound (c++ function)": [[70, "_CPPv4NK4idol8Callback10best_boundEv", false]], "idol::callback::best_obj (c++ function)": [[70, "_CPPv4NK4idol8Callback8best_objEv", false]], "idol::callback::operator() (c++ function)": [[70, "_CPPv4N4idol8CallbackclE13CallbackEvent", false]], "idol::callback::original_model (c++ function)": [[70, "_CPPv4NK4idol8Callback14original_modelEv", false]], "idol::callback::primal_solution (c++ function)": [[70, "_CPPv4NK4idol8Callback15primal_solutionEv", false]], "idol::callback::submit_heuristic_solution (c++ function)": [[70, "_CPPv4N4idol8Callback25submit_heuristic_solutionERKN8Solution6PrimalE", false]], "idol::callback::terminate (c++ function)": [[70, "_CPPv4N4idol8Callback9terminateEv", false]], "idol::callback::time (c++ function)": [[70, "_CPPv4NK4idol8Callback4timeEv", false]], "idol::callback::~callback (c++ function)": [[70, "_CPPv4N4idol8CallbackD0Ev", false]], "idol::callbackevent (c++ enum)": [[81, "_CPPv4N4idol13CallbackEventE", false]], "idol::callbackevent::incumbentsolution (c++ enumerator)": [[81, "_CPPv4N4idol13CallbackEvent17IncumbentSolutionE", false]], "idol::callbackevent::invalidsolution (c++ enumerator)": [[81, "_CPPv4N4idol13CallbackEvent15InvalidSolutionE", false]], "idol::callbackevent::nodeloaded (c++ enumerator)": [[81, "_CPPv4N4idol13CallbackEvent10NodeLoadedE", false]], "idol::callbackevent::prunedsolution (c++ enumerator)": [[81, "_CPPv4N4idol13CallbackEvent14PrunedSolutionE", false]], "idol::callbackfactory (c++ class)": [[71, "_CPPv4N4idol15CallbackFactoryE", false]], "idol::callbackfactory::clone (c++ function)": [[71, "_CPPv4NK4idol15CallbackFactory5cloneEv", false]], "idol::callbackfactory::operator() (c++ function)": [[71, "_CPPv4N4idol15CallbackFactoryclEv", false]], "idol::callbackfactory::~callbackfactory (c++ function)": [[71, "_CPPv4N4idol15CallbackFactoryD0Ev", false]], "idol::column (c++ class)": [[36, "_CPPv4N4idol6ColumnE", false]], "idol::column::column (c++ function)": [[36, "_CPPv4N4idol6Column6ColumnERK6Column", false], [36, "_CPPv4N4idol6Column6ColumnERK8Constant", false], [36, "_CPPv4N4idol6Column6ColumnERR6Column", false], [36, "_CPPv4N4idol6Column6ColumnERR8Constant", false], [36, "_CPPv4N4idol6Column6ColumnEv", false]], "idol::column::emptycolumn (c++ member)": [[36, "_CPPv4N4idol6Column11EmptyColumnE", false]], "idol::column::fix (c++ function)": [[36, "_CPPv4NK4idol6Column3fixERKN8Solution6PrimalE", false]], "idol::column::linear (c++ function)": [[36, "_CPPv4N4idol6Column6linearEv", false], [36, "_CPPv4NK4idol6Column6linearEv", false]], "idol::column::obj (c++ function)": [[36, "_CPPv4N4idol6Column3objEv", false], [36, "_CPPv4NK4idol6Column3objEv", false]], "idol::column::obj_quadratic (c++ function)": [[36, "_CPPv4N4idol6Column13obj_quadraticEv", false], [36, "_CPPv4NK4idol6Column13obj_quadraticEv", false]], "idol::column::operator*= (c++ function)": [[36, "_CPPv4N4idol6ColumnmLEd", false]], "idol::column::operator+= (c++ function)": [[36, "_CPPv4N4idol6ColumnpLERK6Column", false]], "idol::column::operator-= (c++ function)": [[36, "_CPPv4N4idol6ColumnmIERK6Column", false]], "idol::column::operator= (c++ function)": [[36, "_CPPv4N4idol6ColumnaSERK6Column", false], [36, "_CPPv4N4idol6ColumnaSERR6Column", false]], "idol::column::quadratic (c++ function)": [[36, "_CPPv4N4idol6Column9quadraticEv", false], [36, "_CPPv4NK4idol6Column9quadraticEv", false]], "idol::column::set_linear (c++ function)": [[36, "_CPPv4N4idol6Column10set_linearERK7LinExprI3CtrE", false], [36, "_CPPv4N4idol6Column10set_linearERR7LinExprI3CtrE", false]], "idol::column::set_obj (c++ function)": [[36, "_CPPv4N4idol6Column7set_objERK8Constant", false], [36, "_CPPv4N4idol6Column7set_objERR8Constant", false]], "idol::column::set_quadratic (c++ function)": [[36, "_CPPv4N4idol6Column13set_quadraticERK8QuadExprI3Ctr3VarE", false], [36, "_CPPv4N4idol6Column13set_quadraticERR8QuadExprI3Ctr3VarE", false]], "idol::constant (c++ class)": [[37, "_CPPv4N4idol8ConstantE", false]], "idol::constant::as_numerical (c++ function)": [[37, "_CPPv4NK4idol8Constant12as_numericalEv", false]], "idol::constant::constant (c++ function)": [[37, "_CPPv4N4idol8Constant8ConstantERK5ParamRK5Paramd", false], [37, "_CPPv4N4idol8Constant8ConstantERK5Paramd", false], [37, "_CPPv4N4idol8Constant8ConstantERK8Constant", false], [37, "_CPPv4N4idol8Constant8ConstantERR8Constant", false], [37, "_CPPv4N4idol8Constant8ConstantEd", false], [37, "_CPPv4N4idol8Constant8ConstantEv", false]], "idol::constant::fix (c++ function)": [[37, "_CPPv4NK4idol8Constant3fixERKN8Solution4DualE", false], [37, "_CPPv4NK4idol8Constant3fixERKN8Solution6PrimalE", false]], "idol::constant::get (c++ function)": [[37, "_CPPv4NK4idol8Constant3getERK5Param", false], [37, "_CPPv4NK4idol8Constant3getERK5ParamRK5Param", false]], "idol::constant::is_numerical (c++ function)": [[37, "_CPPv4NK4idol8Constant12is_numericalEv", false]], "idol::constant::is_zero (c++ function)": [[37, "_CPPv4NK4idol8Constant7is_zeroEv", false]], "idol::constant::linear (c++ function)": [[37, "_CPPv4N4idol8Constant6linearEv", false], [37, "_CPPv4NK4idol8Constant6linearEv", false]], "idol::constant::multiply_with_precision (c++ function)": [[37, "_CPPv4N4idol8Constant23multiply_with_precisionEdj", false]], "idol::constant::multiply_with_precision_by_power_of_10 (c++ function)": [[37, "_CPPv4N4idol8Constant38multiply_with_precision_by_power_of_10Ejj", false]], "idol::constant::numerical (c++ function)": [[37, "_CPPv4NK4idol8Constant9numericalEv", false]], "idol::constant::operator*= (c++ function)": [[37, "_CPPv4N4idol8ConstantmLEd", false]], "idol::constant::operator+= (c++ function)": [[37, "_CPPv4N4idol8ConstantpLERK5Param", false], [37, "_CPPv4N4idol8ConstantpLERK8Constant", false], [37, "_CPPv4N4idol8ConstantpLEd", false]], "idol::constant::operator-= (c++ function)": [[37, "_CPPv4N4idol8ConstantmIE5Param", false], [37, "_CPPv4N4idol8ConstantmIERK8Constant", false], [37, "_CPPv4N4idol8ConstantmIEd", false]], "idol::constant::operator/= (c++ function)": [[37, "_CPPv4N4idol8ConstantdVEd", false]], "idol::constant::operator= (c++ function)": [[37, "_CPPv4N4idol8ConstantaSERK8Constant", false], [37, "_CPPv4N4idol8ConstantaSERR8Constant", false]], "idol::constant::quadratic (c++ function)": [[37, "_CPPv4N4idol8Constant9quadraticEv", false], [37, "_CPPv4NK4idol8Constant9quadraticEv", false]], "idol::constant::round (c++ function)": [[37, "_CPPv4N4idol8Constant5roundEv", false]], "idol::constant::set (c++ function)": [[37, "_CPPv4N4idol8Constant3setERK5ParamRK5Paramd", false], [37, "_CPPv4N4idol8Constant3setERK5Paramd", false]], "idol::constant::set_numerical (c++ function)": [[37, "_CPPv4N4idol8Constant13set_numericalEd", false]], "idol::constant::size (c++ function)": [[37, "_CPPv4NK4idol8Constant4sizeEv", false]], "idol::constant::zero (c++ member)": [[37, "_CPPv4N4idol8Constant4ZeroE", false]], "idol::ctr (c++ class)": [[38, "_CPPv4N4idol3CtrE", false]], "idol::ctr::ctr (c++ function)": [[38, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", false], [38, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", false], [38, "_CPPv4N4idol3Ctr3CtrER3EnvRK7TempCtrNSt6stringE", false], [38, "_CPPv4N4idol3Ctr3CtrER3EnvRR7TempCtrNSt6stringE", false]], "idol::ctr::get (c++ function)": [[38, "_CPPv4NK4idol3Ctr3getERK10AnnotationI3Ctr6ValueTE", false]], "idol::ctr::id (c++ function)": [[38, "_CPPv4NK4idol3Ctr2idEv", false]], "idol::ctr::is_in (c++ function)": [[38, "_CPPv4NK4idol3Ctr5is_inERK5Model", false]], "idol::ctr::make_vector (c++ function)": [[38, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", false]], "idol::ctr::name (c++ function)": [[38, "_CPPv4NK4idol3Ctr4nameEv", false]], "idol::ctr::set (c++ function)": [[38, "_CPPv4NK4idol3Ctr3setERK10AnnotationI3Ctr6ValueTEDpRR5ArgsT", false]], "idol::cuts::knapsackcover (c++ class)": [[3, "_CPPv4I0EN4idol4Cuts13KnapsackCoverE", false]], "idol::cuts::knapsackcover::clone (c++ function)": [[3, "_CPPv4NK4idol4Cuts13KnapsackCover5cloneEv", false]], "idol::cuts::knapsackcover::operator() (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCoverclEv", false]], "idol::cuts::knapsackcover::strategy (c++ class)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover8StrategyE", false]], "idol::cuts::knapsackcover::strategy::strategy (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", false]], "idol::cuts::knapsackcover::with_lifting (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover12with_liftingEb", false]], "idol::cuts::knapsackcover::with_max_cuts_factor (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover20with_max_cuts_factorEd", false]], "idol::cuts::knapsackcover::with_max_pass_root_node (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover23with_max_pass_root_nodeEj", false]], "idol::cuts::knapsackcover::with_tree_node_cuts (c++ function)": [[3, "_CPPv4N4idol4Cuts13KnapsackCover19with_tree_node_cutsEb", false]], "idol::dantzigwolfe::artificialcosts (c++ class)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCostsE", false]], "idol::dantzigwolfe::artificialcosts::clone (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts5cloneEv", false]], "idol::dantzigwolfe::artificialcosts::operator() (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCostsclEv", false]], "idol::dantzigwolfe::artificialcosts::strategy (c++ class)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8StrategyE", false]], "idol::dantzigwolfe::artificialcosts::strategy::best_bound (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy10best_boundEv", false]], "idol::dantzigwolfe::artificialcosts::strategy::best_obj (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy8best_objEv", false]], "idol::dantzigwolfe::artificialcosts::strategy::execute (c++ function)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", false]], "idol::dantzigwolfe::artificialcosts::strategy::primal_solution (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy15primal_solutionEv", false]], "idol::dantzigwolfe::artificialcosts::strategy::reason (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy6reasonEv", false]], "idol::dantzigwolfe::artificialcosts::strategy::status (c++ function)": [[26, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy6statusEv", false]], "idol::dantzigwolfe::artificialcosts::strategy::strategy (c++ function)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy8StrategyEddj", false]], "idol::dantzigwolfe::artificialcosts::with_initial_costs (c++ function)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_initial_costsEd", false]], "idol::dantzigwolfe::artificialcosts::with_max_updates_before_phase_i (c++ function)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts31with_max_updates_before_phase_IEj", false]], "idol::dantzigwolfe::artificialcosts::with_update_factor (c++ function)": [[26, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_update_factorEd", false]], "idol::dantzigwolfe::farkaspricing (c++ class)": [[28, "_CPPv4N4idol12DantzigWolfe13FarkasPricingE", false]], "idol::dantzigwolfe::farkaspricing::clone (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing5cloneEv", false]], "idol::dantzigwolfe::farkaspricing::operator() (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricingclEv", false]], "idol::dantzigwolfe::farkaspricing::strategy (c++ class)": [[28, "_CPPv4N4idol12DantzigWolfe13FarkasPricing8StrategyE", false]], "idol::dantzigwolfe::farkaspricing::strategy::best_bound (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy10best_boundEv", false]], "idol::dantzigwolfe::farkaspricing::strategy::best_obj (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy8best_objEv", false]], "idol::dantzigwolfe::farkaspricing::strategy::execute (c++ function)": [[28, "_CPPv4N4idol12DantzigWolfe13FarkasPricing8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", false]], "idol::dantzigwolfe::farkaspricing::strategy::primal_solution (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy15primal_solutionEv", false]], "idol::dantzigwolfe::farkaspricing::strategy::reason (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy6reasonEv", false]], "idol::dantzigwolfe::farkaspricing::strategy::status (c++ function)": [[28, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy6statusEv", false]], "idol::dantzigwolfe::neame (c++ class)": [[32, "_CPPv4N4idol12DantzigWolfe5NeameE", false]], "idol::dantzigwolfe::neame::clone (c++ function)": [[32, "_CPPv4NK4idol12DantzigWolfe5Neame5cloneEv", false]], "idol::dantzigwolfe::neame::neame (c++ function)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame5NeameEd", false]], "idol::dantzigwolfe::neame::operator() (c++ function)": [[32, "_CPPv4NK4idol12DantzigWolfe5NeameclEv", false]], "idol::dantzigwolfe::neame::strategy (c++ class)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame8StrategyE", false]], "idol::dantzigwolfe::neame::strategy::compute_smoothed_dual_solution (c++ function)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", false]], "idol::dantzigwolfe::neame::strategy::initialize (c++ function)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy10initializeEv", false]], "idol::dantzigwolfe::neame::strategy::strategy (c++ function)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy8StrategyEd", false]], "idol::dantzigwolfe::neame::strategy::update_stability_center (c++ function)": [[32, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy23update_stability_centerERKN8Solution4DualE", false]], "idol::dantzigwolfe::wentges (c++ class)": [[33, "_CPPv4N4idol12DantzigWolfe7WentgesE", false]], "idol::dantzigwolfe::wentges::clone (c++ function)": [[33, "_CPPv4NK4idol12DantzigWolfe7Wentges5cloneEv", false]], "idol::dantzigwolfe::wentges::operator() (c++ function)": [[33, "_CPPv4NK4idol12DantzigWolfe7WentgesclEv", false]], "idol::dantzigwolfe::wentges::strategy (c++ class)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges8StrategyE", false]], "idol::dantzigwolfe::wentges::strategy::compute_smoothed_dual_solution (c++ function)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", false]], "idol::dantzigwolfe::wentges::strategy::initialize (c++ function)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy10initializeEv", false]], "idol::dantzigwolfe::wentges::strategy::strategy (c++ function)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy8StrategyEd", false]], "idol::dantzigwolfe::wentges::strategy::update_stability_center (c++ function)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy23update_stability_centerERKN8Solution4DualE", false]], "idol::dantzigwolfe::wentges::wentges (c++ function)": [[33, "_CPPv4N4idol12DantzigWolfe7Wentges7WentgesEd", false]], "idol::dantzigwolfedecomposition (c++ class)": [[27, "_CPPv4N4idol25DantzigWolfeDecompositionE", false]], "idol::dantzigwolfedecomposition::as (c++ function)": [[27, "_CPPv4I0EN4idol25DantzigWolfeDecomposition2asER1Tv", false], [27, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2asERK1Tv", false]], "idol::dantzigwolfedecomposition::clone (c++ function)": [[27, "_CPPv4NK4idol25DantzigWolfeDecomposition5cloneEv", false]], "idol::dantzigwolfedecomposition::conditional (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEE", false], [27, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEERKNSt8functionIFvR25DantzigWolfeDecompositionEEE", false]], "idol::dantzigwolfedecomposition::dantzigwolfedecomposition (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE", false], [27, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE10AnnotationI3VarjE", false], [27, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK25DantzigWolfeDecomposition", false]], "idol::dantzigwolfedecomposition::get_sub_problem_spec (c++ function)": [[27, "_CPPv4NK4idol25DantzigWolfeDecomposition20get_sub_problem_specEj", false]], "idol::dantzigwolfedecomposition::is (c++ function)": [[27, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2isEbv", false]], "idol::dantzigwolfedecomposition::operator() (c++ function)": [[27, "_CPPv4NK4idol25DantzigWolfeDecompositionclERK5Model", false]], "idol::dantzigwolfedecomposition::with_absolute_gap_tolerance (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition27with_absolute_gap_toleranceEd", false]], "idol::dantzigwolfedecomposition::with_best_bound_stop (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition20with_best_bound_stopEd", false]], "idol::dantzigwolfedecomposition::with_best_obj_stop (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition18with_best_obj_stopEd", false]], "idol::dantzigwolfedecomposition::with_default_sub_problem_spec (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition29with_default_sub_problem_specEN12DantzigWolfe10SubProblemE", false]], "idol::dantzigwolfedecomposition::with_dual_price_smoothing_stabilization (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition39with_dual_price_smoothing_stabilizationERKN12DantzigWolfe31DualPriceSmoothingStabilizationE", false]], "idol::dantzigwolfedecomposition::with_hard_branching (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition19with_hard_branchingEb", false]], "idol::dantzigwolfedecomposition::with_infeasibility_strategy (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition27with_infeasibility_strategyERKN12DantzigWolfe28InfeasibilityStrategyFactoryE", false]], "idol::dantzigwolfedecomposition::with_infeasible_columns_removal (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition31with_infeasible_columns_removalEb", false]], "idol::dantzigwolfedecomposition::with_infeasible_or_unbounded_info (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition33with_infeasible_or_unbounded_infoEb", false]], "idol::dantzigwolfedecomposition::with_iteration_limit (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition20with_iteration_limitEj", false]], "idol::dantzigwolfedecomposition::with_logger (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition11with_loggerERKN4Logs12DantzigWolfe7FactoryE", false]], "idol::dantzigwolfedecomposition::with_logs (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition9with_logsEb", false]], "idol::dantzigwolfedecomposition::with_master_optimizer (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition21with_master_optimizerERK16OptimizerFactory", false]], "idol::dantzigwolfedecomposition::with_max_parallel_sub_problems (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition30with_max_parallel_sub_problemsEj", false]], "idol::dantzigwolfedecomposition::with_presolve (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition13with_presolveEb", false]], "idol::dantzigwolfedecomposition::with_relative_gap_tolerance (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition27with_relative_gap_toleranceEd", false]], "idol::dantzigwolfedecomposition::with_sub_problem_spec (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition21with_sub_problem_specEjN12DantzigWolfe10SubProblemE", false]], "idol::dantzigwolfedecomposition::with_thread_limit (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition17with_thread_limitEj", false]], "idol::dantzigwolfedecomposition::with_time_limit (c++ function)": [[27, "_CPPv4N4idol25DantzigWolfeDecomposition15with_time_limitEd", false]], "idol::depthfirst (c++ class)": [[13, "_CPPv4N4idol10DepthFirstE", false]], "idol::depthfirst::strategy (c++ class)": [[13, "_CPPv4I0EN4idol10DepthFirst8StrategyE", false]], "idol::depthfirst::strategy::clone (c++ function)": [[13, "_CPPv4NK4idol10DepthFirst8Strategy5cloneEv", false]], "idol::depthfirst::strategy::operator() (c++ function)": [[13, "_CPPv4NK4idol10DepthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", false]], "idol::depthfirst::strategy::strategy (c++ function)": [[13, "_CPPv4N4idol10DepthFirst8Strategy8StrategyERK10DepthFirst", false]], "idol::env (c++ class)": [[39, "_CPPv4N4idol3EnvE", false]], "idol::env::env (c++ function)": [[39, "_CPPv4N4idol3Env3EnvEv", false]], "idol::env::operator[] (c++ function)": [[39, "_CPPv4I0ENK4idol3EnvixERKDaRK1T", false]], "idol::equals (c++ function)": [[76, "_CPPv4N4idol6equalsEddd", false]], "idol::expr (c++ class)": [[40, "_CPPv4I00EN4idol4ExprE", false]], "idol::expr::clear (c++ function)": [[40, "_CPPv4N4idol4Expr5clearEv", false]], "idol::expr::constant (c++ function)": [[40, "_CPPv4N4idol4Expr8constantEv", false], [40, "_CPPv4NK4idol4Expr8constantEv", false]], "idol::expr::expr (c++ function)": [[40, "_CPPv4N4idol4Expr4ExprERK4Expr", false], [40, "_CPPv4N4idol4Expr4ExprERK4Key1", false], [40, "_CPPv4N4idol4Expr4ExprERK5Param", false], [40, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1E", false], [40, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1ERK8QuadExprI4Key14Key2ERK8Constant", false], [40, "_CPPv4N4idol4Expr4ExprERK8Constant", false], [40, "_CPPv4N4idol4Expr4ExprERK8QuadExprI4Key1E", false], [40, "_CPPv4N4idol4Expr4ExprERR4Expr", false], [40, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1E", false], [40, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1ERR8QuadExprI4Key14Key2ERR8Constant", false], [40, "_CPPv4N4idol4Expr4ExprERR8Constant", false], [40, "_CPPv4N4idol4Expr4ExprERR8QuadExprI4Key1E", false], [40, "_CPPv4N4idol4Expr4ExprEd", false], [40, "_CPPv4N4idol4Expr4ExprEv", false]], "idol::expr::fix (c++ function)": [[40, "_CPPv4NK4idol4Expr3fixERKN8Solution6PrimalE", false]], "idol::expr::gcd (c++ function)": [[40, "_CPPv4NK4idol4Expr3gcdEv", false]], "idol::expr::is_zero (c++ function)": [[40, "_CPPv4NK4idol4Expr7is_zeroEv", false]], "idol::expr::linear (c++ function)": [[40, "_CPPv4N4idol4Expr6linearEv", false], [40, "_CPPv4NK4idol4Expr6linearEv", false]], "idol::expr::multiply_with_precision (c++ function)": [[40, "_CPPv4N4idol4Expr23multiply_with_precisionEdj", false]], "idol::expr::multiply_with_precision_by_power_of_10 (c++ function)": [[40, "_CPPv4N4idol4Expr38multiply_with_precision_by_power_of_10Ejj", false]], "idol::expr::operator*= (c++ function)": [[40, "_CPPv4N4idol4ExprmLEd", false]], "idol::expr::operator+= (c++ function)": [[40, "_CPPv4N4idol4ExprpLERK4ExprIN4idol3VarEN4idol3VarEE", false]], "idol::expr::operator-= (c++ function)": [[40, "_CPPv4N4idol4ExprmIERK4ExprIN4idol3VarEN4idol3VarEE", false]], "idol::expr::operator/= (c++ function)": [[40, "_CPPv4N4idol4ExprdVEd", false]], "idol::expr::operator= (c++ function)": [[40, "_CPPv4N4idol4ExpraSERK4Expr", false], [40, "_CPPv4N4idol4ExpraSERR4Expr", false]], "idol::expr::quadratic (c++ function)": [[40, "_CPPv4N4idol4Expr9quadraticEv", false], [40, "_CPPv4NK4idol4Expr9quadraticEv", false]], "idol::expr::round (c++ function)": [[40, "_CPPv4N4idol4Expr5roundEv", false]], "idol::expr::scale_to_integers (c++ function)": [[40, "_CPPv4N4idol4Expr17scale_to_integersEj", false]], "idol::firstinfeasiblefound (c++ class)": [[16, "_CPPv4N4idol20FirstInfeasibleFoundE", false]], "idol::firstinfeasiblefound::firstinfeasiblefound (c++ function)": [[16, "_CPPv4I0EN4idol20FirstInfeasibleFound20FirstInfeasibleFoundE9IteratorT9IteratorT", false], [16, "_CPPv4N4idol20FirstInfeasibleFound20FirstInfeasibleFoundEv", false]], "idol::firstinfeasiblefound::strategy (c++ class)": [[16, "_CPPv4I0EN4idol20FirstInfeasibleFound8StrategyE", false]], "idol::firstinfeasiblefound::strategy::clone (c++ function)": [[16, "_CPPv4NK4idol20FirstInfeasibleFound8Strategy5cloneEv", false]], "idol::firstinfeasiblefound::strategy::operator() (c++ function)": [[16, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [16, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::firstinfeasiblefound::strategy::strategy (c++ function)": [[16, "_CPPv4N4idol20FirstInfeasibleFound8Strategy8StrategyERK20FirstInfeasibleFound", false], [16, "_CPPv4N4idol20FirstInfeasibleFound8Strategy8StrategyEv", false]], "idol::glpk (c++ class)": [[55, "_CPPv4N4idol4GLPKE", false]], "idol::glpk::as (c++ function)": [[55, "_CPPv4I0EN4idol4GLPK2asER1Tv", false], [55, "_CPPv4I0ENK4idol4GLPK2asERK1Tv", false]], "idol::glpk::clone (c++ function)": [[55, "_CPPv4NK4idol4GLPK5cloneEv", false]], "idol::glpk::conditional (c++ function)": [[55, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEE", false], [55, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEERKNSt8functionIFvR4GLPKEEE", false]], "idol::glpk::continuousrelaxation (c++ function)": [[55, "_CPPv4N4idol4GLPK20ContinuousRelaxationEv", false]], "idol::glpk::glpk (c++ function)": [[55, "_CPPv4N4idol4GLPK4GLPKERK4GLPK", false], [55, "_CPPv4N4idol4GLPK4GLPKERR4GLPK", false], [55, "_CPPv4N4idol4GLPK4GLPKEv", false]], "idol::glpk::is (c++ function)": [[55, "_CPPv4I0ENK4idol4GLPK2isEbv", false]], "idol::glpk::operator() (c++ function)": [[55, "_CPPv4NK4idol4GLPKclERK5Model", false]], "idol::glpk::operator= (c++ function)": [[55, "_CPPv4N4idol4GLPKaSERK4GLPK", false], [55, "_CPPv4N4idol4GLPKaSERR4GLPK", false]], "idol::glpk::read_from_file (c++ function)": [[55, "_CPPv4N4idol4GLPK14read_from_fileER3EnvRKNSt6stringE", false]], "idol::glpk::with_absolute_gap_tolerance (c++ function)": [[55, "_CPPv4N4idol4GLPK27with_absolute_gap_toleranceEd", false]], "idol::glpk::with_best_bound_stop (c++ function)": [[55, "_CPPv4N4idol4GLPK20with_best_bound_stopEd", false]], "idol::glpk::with_best_obj_stop (c++ function)": [[55, "_CPPv4N4idol4GLPK18with_best_obj_stopEd", false]], "idol::glpk::with_infeasible_or_unbounded_info (c++ function)": [[55, "_CPPv4N4idol4GLPK33with_infeasible_or_unbounded_infoEb", false]], "idol::glpk::with_iteration_limit (c++ function)": [[55, "_CPPv4N4idol4GLPK20with_iteration_limitEj", false]], "idol::glpk::with_logs (c++ function)": [[55, "_CPPv4N4idol4GLPK9with_logsEb", false]], "idol::glpk::with_presolve (c++ function)": [[55, "_CPPv4N4idol4GLPK13with_presolveEb", false]], "idol::glpk::with_relative_gap_tolerance (c++ function)": [[55, "_CPPv4N4idol4GLPK27with_relative_gap_toleranceEd", false]], "idol::glpk::with_thread_limit (c++ function)": [[55, "_CPPv4N4idol4GLPK17with_thread_limitEj", false]], "idol::glpk::with_time_limit (c++ function)": [[55, "_CPPv4N4idol4GLPK15with_time_limitEd", false]], "idol::gurobi (c++ class)": [[56, "_CPPv4N4idol6GurobiE", false]], "idol::gurobi::add_callback (c++ function)": [[56, "_CPPv4N4idol6Gurobi12add_callbackERK15CallbackFactory", false]], "idol::gurobi::as (c++ function)": [[56, "_CPPv4I0EN4idol6Gurobi2asER1Tv", false], [56, "_CPPv4I0ENK4idol6Gurobi2asERK1Tv", false]], "idol::gurobi::clone (c++ function)": [[56, "_CPPv4NK4idol6Gurobi5cloneEv", false]], "idol::gurobi::conditional (c++ function)": [[56, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEE", false], [56, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEERKNSt8functionIFvR6GurobiEEE", false]], "idol::gurobi::continuousrelaxation (c++ function)": [[56, "_CPPv4N4idol6Gurobi20ContinuousRelaxationEv", false]], "idol::gurobi::gurobi (c++ function)": [[56, "_CPPv4N4idol6Gurobi6GurobiERK6Gurobi", false], [56, "_CPPv4N4idol6Gurobi6GurobiERR6Gurobi", false], [56, "_CPPv4N4idol6Gurobi6GurobiEv", false]], "idol::gurobi::is (c++ function)": [[56, "_CPPv4I0ENK4idol6Gurobi2isEbv", false]], "idol::gurobi::operator() (c++ function)": [[56, "_CPPv4NK4idol6GurobiclERK5Model", false]], "idol::gurobi::operator= (c++ function)": [[56, "_CPPv4N4idol6GurobiaSERK6Gurobi", false], [56, "_CPPv4N4idol6GurobiaSERR6Gurobi", false]], "idol::gurobi::read_from_file (c++ function)": [[56, "_CPPv4N4idol6Gurobi14read_from_fileER3EnvRKNSt6stringE", false]], "idol::gurobi::with_absolute_gap_tolerance (c++ function)": [[56, "_CPPv4N4idol6Gurobi27with_absolute_gap_toleranceEd", false]], "idol::gurobi::with_best_bound_stop (c++ function)": [[56, "_CPPv4N4idol6Gurobi20with_best_bound_stopEd", false]], "idol::gurobi::with_best_obj_stop (c++ function)": [[56, "_CPPv4N4idol6Gurobi18with_best_obj_stopEd", false]], "idol::gurobi::with_continuous_relaxation_only (c++ function)": [[56, "_CPPv4N4idol6Gurobi31with_continuous_relaxation_onlyEb", false]], "idol::gurobi::with_external_param (c++ function)": [[56, "_CPPv4N4idol6Gurobi19with_external_paramE12GRB_IntParami", false], [56, "_CPPv4N4idol6Gurobi19with_external_paramE15GRB_DoubleParamd", false]], "idol::gurobi::with_infeasible_or_unbounded_info (c++ function)": [[56, "_CPPv4N4idol6Gurobi33with_infeasible_or_unbounded_infoEb", false]], "idol::gurobi::with_iteration_limit (c++ function)": [[56, "_CPPv4N4idol6Gurobi20with_iteration_limitEj", false]], "idol::gurobi::with_lazy_cut (c++ function)": [[56, "_CPPv4N4idol6Gurobi13with_lazy_cutEb", false]], "idol::gurobi::with_logs (c++ function)": [[56, "_CPPv4N4idol6Gurobi9with_logsEb", false]], "idol::gurobi::with_max_n_solution_in_pool (c++ function)": [[56, "_CPPv4N4idol6Gurobi27with_max_n_solution_in_poolEj", false]], "idol::gurobi::with_presolve (c++ function)": [[56, "_CPPv4N4idol6Gurobi13with_presolveEb", false]], "idol::gurobi::with_relative_gap_tolerance (c++ function)": [[56, "_CPPv4N4idol6Gurobi27with_relative_gap_toleranceEd", false]], "idol::gurobi::with_thread_limit (c++ function)": [[56, "_CPPv4N4idol6Gurobi17with_thread_limitEj", false]], "idol::gurobi::with_time_limit (c++ function)": [[56, "_CPPv4N4idol6Gurobi15with_time_limitEd", false]], "idol::heuristics::integermaster (c++ class)": [[29, "_CPPv4I0EN4idol10Heuristics13IntegerMasterE", false]], "idol::heuristics::integermaster::clone (c++ function)": [[29, "_CPPv4NK4idol10Heuristics13IntegerMaster5cloneEv", false]], "idol::heuristics::integermaster::integermaster (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster13IntegerMasterERR13IntegerMaster", false], [29, "_CPPv4N4idol10Heuristics13IntegerMaster13IntegerMasterEv", false]], "idol::heuristics::integermaster::operator() (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMasterclEv", false]], "idol::heuristics::integermaster::operator= (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMasteraSERK13IntegerMaster", false], [29, "_CPPv4N4idol10Heuristics13IntegerMasteraSERR13IntegerMaster", false]], "idol::heuristics::integermaster::strategy (c++ class)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8StrategyE", false]], "idol::heuristics::integermaster::strategy::set_frequency (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_frequencyEj", false]], "idol::heuristics::integermaster::strategy::set_integer_columns (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_integer_columnsEb", false]], "idol::heuristics::integermaster::strategy::set_iteration_limit (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_iteration_limitEj", false]], "idol::heuristics::integermaster::strategy::set_max_depth (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_max_depthEj", false]], "idol::heuristics::integermaster::strategy::set_time_limit (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy14set_time_limitEd", false]], "idol::heuristics::integermaster::strategy::strategy (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy8StrategyERK16OptimizerFactory", false]], "idol::heuristics::integermaster::strategy::with_integer_columns (c++ function)": [[29, "_CPPv4NK4idol10Heuristics13IntegerMaster8Strategy20with_integer_columnsEv", false]], "idol::heuristics::integermaster::with_frequency (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster14with_frequencyEj", false]], "idol::heuristics::integermaster::with_integer_columns (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster20with_integer_columnsEb", false]], "idol::heuristics::integermaster::with_iteration_limit (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster20with_iteration_limitEj", false]], "idol::heuristics::integermaster::with_max_depth (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster14with_max_depthEj", false]], "idol::heuristics::integermaster::with_optimizer (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster14with_optimizerERK16OptimizerFactory", false]], "idol::heuristics::integermaster::with_time_limit (c++ function)": [[29, "_CPPv4N4idol10Heuristics13IntegerMaster15with_time_limitEd", false]], "idol::heuristics::localbranching (c++ class)": [[5, "_CPPv4N4idol10Heuristics14LocalBranchingE", false]], "idol::heuristics::localbranching::clone (c++ function)": [[5, "_CPPv4NK4idol10Heuristics14LocalBranching5cloneEv", false]], "idol::heuristics::localbranching::localbranching (c++ function)": [[5, "_CPPv4N4idol10Heuristics14LocalBranching14LocalBranchingEv", false]], "idol::heuristics::localbranching::operator() (c++ function)": [[5, "_CPPv4N4idol10Heuristics14LocalBranchingclEv", false]], "idol::heuristics::localbranching::strategy (c++ class)": [[5, "_CPPv4N4idol10Heuristics14LocalBranching8StrategyE", false]], "idol::heuristics::localbranching::strategy::strategy (c++ function)": [[5, "_CPPv4N4idol10Heuristics14LocalBranching8Strategy8StrategyEjP16OptimizerFactory", false]], "idol::heuristics::localbranching::with_optimizer (c++ function)": [[5, "_CPPv4N4idol10Heuristics14LocalBranching14with_optimizerERK16OptimizerFactory", false]], "idol::heuristics::rens (c++ class)": [[6, "_CPPv4N4idol10Heuristics4RENSE", false]], "idol::heuristics::rens::clone (c++ function)": [[6, "_CPPv4NK4idol10Heuristics4RENS5cloneEv", false]], "idol::heuristics::rens::operator() (c++ function)": [[6, "_CPPv4N4idol10Heuristics4RENSclEv", false]], "idol::heuristics::rens::rens (c++ function)": [[6, "_CPPv4N4idol10Heuristics4RENS4RENSEv", false]], "idol::heuristics::rens::strategy (c++ class)": [[6, "_CPPv4N4idol10Heuristics4RENS8StrategyE", false]], "idol::heuristics::rens::strategy::strategy (c++ function)": [[6, "_CPPv4N4idol10Heuristics4RENS8Strategy8StrategyEddP16OptimizerFactory", false]], "idol::heuristics::rens::with_optimizer (c++ function)": [[6, "_CPPv4N4idol10Heuristics4RENS14with_optimizerERK16OptimizerFactory", false]], "idol::heuristics::simplerounding (c++ class)": [[7, "_CPPv4N4idol10Heuristics14SimpleRoundingE", false]], "idol::heuristics::simplerounding::clone (c++ function)": [[7, "_CPPv4NK4idol10Heuristics14SimpleRounding5cloneEv", false]], "idol::heuristics::simplerounding::operator() (c++ function)": [[7, "_CPPv4N4idol10Heuristics14SimpleRoundingclEv", false]], "idol::heuristics::simplerounding::simplerounding (c++ function)": [[7, "_CPPv4N4idol10Heuristics14SimpleRounding14SimpleRoundingEv", false]], "idol::heuristics::simplerounding::strategy (c++ class)": [[7, "_CPPv4N4idol10Heuristics14SimpleRounding8StrategyE", false]], "idol::highs (c++ class)": [[57, "_CPPv4N4idol5HiGHSE", false]], "idol::highs::as (c++ function)": [[57, "_CPPv4I0EN4idol5HiGHS2asER1Tv", false], [57, "_CPPv4I0ENK4idol5HiGHS2asERK1Tv", false]], "idol::highs::clone (c++ function)": [[57, "_CPPv4NK4idol5HiGHS5cloneEv", false]], "idol::highs::conditional (c++ function)": [[57, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEE", false], [57, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEERKNSt8functionIFvR5HiGHSEEE", false]], "idol::highs::continuousrelaxation (c++ function)": [[57, "_CPPv4N4idol5HiGHS20ContinuousRelaxationEv", false]], "idol::highs::highs (c++ function)": [[57, "_CPPv4N4idol5HiGHS5HiGHSERK5HiGHS", false], [57, "_CPPv4N4idol5HiGHS5HiGHSERR5HiGHS", false], [57, "_CPPv4N4idol5HiGHS5HiGHSEv", false]], "idol::highs::is (c++ function)": [[57, "_CPPv4I0ENK4idol5HiGHS2isEbv", false]], "idol::highs::operator() (c++ function)": [[57, "_CPPv4NK4idol5HiGHSclERK5Model", false]], "idol::highs::operator= (c++ function)": [[57, "_CPPv4N4idol5HiGHSaSERK5HiGHS", false], [57, "_CPPv4N4idol5HiGHSaSERR5HiGHS", false]], "idol::highs::with_absolute_gap_tolerance (c++ function)": [[57, "_CPPv4N4idol5HiGHS27with_absolute_gap_toleranceEd", false]], "idol::highs::with_best_bound_stop (c++ function)": [[57, "_CPPv4N4idol5HiGHS20with_best_bound_stopEd", false]], "idol::highs::with_best_obj_stop (c++ function)": [[57, "_CPPv4N4idol5HiGHS18with_best_obj_stopEd", false]], "idol::highs::with_continuous_relaxation_only (c++ function)": [[57, "_CPPv4N4idol5HiGHS31with_continuous_relaxation_onlyEb", false]], "idol::highs::with_infeasible_or_unbounded_info (c++ function)": [[57, "_CPPv4N4idol5HiGHS33with_infeasible_or_unbounded_infoEb", false]], "idol::highs::with_iteration_limit (c++ function)": [[57, "_CPPv4N4idol5HiGHS20with_iteration_limitEj", false]], "idol::highs::with_logs (c++ function)": [[57, "_CPPv4N4idol5HiGHS9with_logsEb", false]], "idol::highs::with_presolve (c++ function)": [[57, "_CPPv4N4idol5HiGHS13with_presolveEb", false]], "idol::highs::with_relative_gap_tolerance (c++ function)": [[57, "_CPPv4N4idol5HiGHS27with_relative_gap_toleranceEd", false]], "idol::highs::with_thread_limit (c++ function)": [[57, "_CPPv4N4idol5HiGHS17with_thread_limitEj", false]], "idol::highs::with_time_limit (c++ function)": [[57, "_CPPv4N4idol5HiGHS15with_time_limitEd", false]], "idol::inf (c++ member)": [[76, "_CPPv4N4idol3InfE", false]], "idol::is_inf (c++ function)": [[76, "_CPPv4N4idol6is_infEd", false]], "idol::is_integer (c++ function)": [[76, "_CPPv4N4idol10is_integerEdd", false]], "idol::is_neg_inf (c++ function)": [[76, "_CPPv4N4idol10is_neg_infEd", false]], "idol::is_pos_inf (c++ function)": [[76, "_CPPv4N4idol10is_pos_infEd", false]], "idol::lazycutcallback (c++ class)": [[72, "_CPPv4N4idol15LazyCutCallbackE", false]], "idol::lazycutcallback::clone (c++ function)": [[72, "_CPPv4NK4idol15LazyCutCallback5cloneEv", false]], "idol::lazycutcallback::lazycutcallback (c++ function)": [[72, "_CPPv4N4idol15LazyCutCallback15LazyCutCallbackERK5Model7TempCtr", false]], "idol::lazycutcallback::operator() (c++ function)": [[72, "_CPPv4N4idol15LazyCutCallbackclEv", false]], "idol::lazycutcallback::strategy (c++ class)": [[72, "_CPPv4N4idol15LazyCutCallback8StrategyE", false]], "idol::lazycutcallback::strategy::strategy (c++ function)": [[72, "_CPPv4N4idol15LazyCutCallback8Strategy8StrategyEP5Model7TempCtr", false]], "idol::lazycutcallback::with_separation_optimizer (c++ function)": [[72, "_CPPv4N4idol15LazyCutCallback25with_separation_optimizerERK16OptimizerFactory", false]], "idol::leastinfeasible (c++ class)": [[17, "_CPPv4N4idol15LeastInfeasibleE", false]], "idol::leastinfeasible::leastinfeasible (c++ function)": [[17, "_CPPv4I0EN4idol15LeastInfeasible15LeastInfeasibleE9IteratorT9IteratorT", false], [17, "_CPPv4N4idol15LeastInfeasible15LeastInfeasibleEv", false]], "idol::leastinfeasible::strategy (c++ class)": [[17, "_CPPv4I0EN4idol15LeastInfeasible8StrategyE", false]], "idol::leastinfeasible::strategy::clone (c++ function)": [[17, "_CPPv4NK4idol15LeastInfeasible8Strategy5cloneEv", false]], "idol::leastinfeasible::strategy::operator() (c++ function)": [[17, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [17, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::leastinfeasible::strategy::strategy (c++ function)": [[17, "_CPPv4N4idol15LeastInfeasible8Strategy8StrategyERK15LeastInfeasible", false], [17, "_CPPv4N4idol15LeastInfeasible8Strategy8StrategyEv", false]], "idol::linexpr (c++ class)": [[41, "_CPPv4I0EN4idol7LinExprE", false]], "idol::linexpr::begin (c++ function)": [[41, "_CPPv4NK4idol7LinExpr5beginEv", false]], "idol::linexpr::clear (c++ function)": [[41, "_CPPv4N4idol7LinExpr5clearEv", false]], "idol::linexpr::empty (c++ function)": [[41, "_CPPv4NK4idol7LinExpr5emptyEv", false]], "idol::linexpr::end (c++ function)": [[41, "_CPPv4NK4idol7LinExpr3endEv", false]], "idol::linexpr::fix (c++ function)": [[41, "_CPPv4NK4idol7LinExpr3fixERKN8Solution6PrimalE", false]], "idol::linexpr::gcd (c++ function)": [[41, "_CPPv4NK4idol7LinExpr3gcdEv", false]], "idol::linexpr::get (c++ function)": [[41, "_CPPv4NK4idol7LinExpr3getERK3Key", false]], "idol::linexpr::linexpr (c++ function)": [[41, "_CPPv4N4idol7LinExpr7LinExprERK3Key", false], [41, "_CPPv4N4idol7LinExpr7LinExprERK8ConstantRK3Key", false], [41, "_CPPv4N4idol7LinExpr7LinExprERR8ConstantRK3Key", false], [41, "_CPPv4N4idol7LinExpr7LinExprEv", false]], "idol::linexpr::multiply_with_precision (c++ function)": [[41, "_CPPv4N4idol7LinExpr23multiply_with_precisionEdj", false]], "idol::linexpr::multiply_with_precision_by_power_of_10 (c++ function)": [[41, "_CPPv4N4idol7LinExpr38multiply_with_precision_by_power_of_10Ejj", false]], "idol::linexpr::operator*= (c++ function)": [[41, "_CPPv4N4idol7LinExprmLEd", false]], "idol::linexpr::operator+= (c++ function)": [[41, "_CPPv4N4idol7LinExprpLERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", false]], "idol::linexpr::operator-= (c++ function)": [[41, "_CPPv4N4idol7LinExprmIERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", false]], "idol::linexpr::operator/= (c++ function)": [[41, "_CPPv4N4idol7LinExprdVEd", false]], "idol::linexpr::remove (c++ function)": [[41, "_CPPv4N4idol7LinExpr6removeERK3Key", false]], "idol::linexpr::round (c++ function)": [[41, "_CPPv4N4idol7LinExpr5roundEv", false]], "idol::linexpr::set (c++ function)": [[41, "_CPPv4N4idol7LinExpr3setERK3KeyRK8Constant", false], [41, "_CPPv4N4idol7LinExpr3setERK3KeyRR8Constant", false]], "idol::linexpr::size (c++ function)": [[41, "_CPPv4NK4idol7LinExpr4sizeEv", false]], "idol::model (c++ class)": [[42, "_CPPv4N4idol5ModelE", false]], "idol::model::add (c++ function)": [[42, "_CPPv4N4idol5Model3addERK3Ctr", false], [42, "_CPPv4N4idol5Model3addERK3Ctr7TempCtr", false], [42, "_CPPv4N4idol5Model3addERK3Var", false], [42, "_CPPv4N4idol5Model3addERK3Var7TempVar", false]], "idol::model::add_ctr (c++ function)": [[42, "_CPPv4N4idol5Model7add_ctrE7TempCtrNSt6stringE", false], [42, "_CPPv4N4idol5Model7add_ctrERR3Row7CtrTypeNSt6stringE", false]], "idol::model::add_ctrs (c++ function)": [[42, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", false], [42, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", false]], "idol::model::add_var (c++ function)": [[42, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", false], [42, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", false]], "idol::model::add_vars (c++ function)": [[42, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", false], [42, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", false]], "idol::model::add_vector (c++ function)": [[42, "_CPPv4I0_jEN4idol5Model10add_vectorEvRK6VectorI1T1NE", false]], "idol::model::clone (c++ function)": [[42, "_CPPv4NK4idol5Model5cloneEv", false]], "idol::model::copy (c++ function)": [[42, "_CPPv4NK4idol5Model4copyEv", false]], "idol::model::ctrs (c++ function)": [[42, "_CPPv4NK4idol5Model4ctrsEv", false]], "idol::model::env (c++ function)": [[42, "_CPPv4NK4idol5Model3envEv", false]], "idol::model::fix (c++ function)": [[42, "_CPPv4NK4idol5Model3fixERKN8Solution6PrimalE", false]], "idol::model::get_best_bound (c++ function)": [[42, "_CPPv4NK4idol5Model14get_best_boundEv", false]], "idol::model::get_best_obj (c++ function)": [[42, "_CPPv4NK4idol5Model12get_best_objEv", false]], "idol::model::get_ctr_by_index (c++ function)": [[42, "_CPPv4NK4idol5Model16get_ctr_by_indexEj", false]], "idol::model::get_ctr_dual (c++ function)": [[42, "_CPPv4NK4idol5Model12get_ctr_dualERK3Ctr", false]], "idol::model::get_ctr_farkas (c++ function)": [[42, "_CPPv4NK4idol5Model14get_ctr_farkasERK3Ctr", false]], "idol::model::get_ctr_index (c++ function)": [[42, "_CPPv4NK4idol5Model13get_ctr_indexERK3Ctr", false]], "idol::model::get_ctr_row (c++ function)": [[42, "_CPPv4NK4idol5Model11get_ctr_rowERK3Ctr", false]], "idol::model::get_ctr_type (c++ function)": [[42, "_CPPv4NK4idol5Model12get_ctr_typeERK3Ctr", false]], "idol::model::get_mat_coeff (c++ function)": [[42, "_CPPv4NK4idol5Model13get_mat_coeffERK3CtrRK3Var", false]], "idol::model::get_n_solutions (c++ function)": [[42, "_CPPv4NK4idol5Model15get_n_solutionsEv", false]], "idol::model::get_obj_expr (c++ function)": [[42, "_CPPv4NK4idol5Model12get_obj_exprEv", false]], "idol::model::get_obj_sense (c++ function)": [[42, "_CPPv4NK4idol5Model13get_obj_senseEv", false]], "idol::model::get_reason (c++ function)": [[42, "_CPPv4NK4idol5Model10get_reasonEv", false]], "idol::model::get_rhs_expr (c++ function)": [[42, "_CPPv4NK4idol5Model12get_rhs_exprEv", false]], "idol::model::get_solution_index (c++ function)": [[42, "_CPPv4NK4idol5Model18get_solution_indexEv", false]], "idol::model::get_status (c++ function)": [[42, "_CPPv4NK4idol5Model10get_statusEv", false]], "idol::model::get_var_by_index (c++ function)": [[42, "_CPPv4NK4idol5Model16get_var_by_indexEj", false]], "idol::model::get_var_column (c++ function)": [[42, "_CPPv4NK4idol5Model14get_var_columnERK3Var", false]], "idol::model::get_var_index (c++ function)": [[42, "_CPPv4NK4idol5Model13get_var_indexERK3Var", false]], "idol::model::get_var_lb (c++ function)": [[42, "_CPPv4NK4idol5Model10get_var_lbERK3Var", false]], "idol::model::get_var_primal (c++ function)": [[42, "_CPPv4NK4idol5Model14get_var_primalERK3Var", false]], "idol::model::get_var_ray (c++ function)": [[42, "_CPPv4NK4idol5Model11get_var_rayERK3Var", false]], "idol::model::get_var_reduced_cost (c++ function)": [[42, "_CPPv4NK4idol5Model20get_var_reduced_costERK3Var", false]], "idol::model::get_var_type (c++ function)": [[42, "_CPPv4NK4idol5Model12get_var_typeERK3Var", false]], "idol::model::get_var_ub (c++ function)": [[42, "_CPPv4NK4idol5Model10get_var_ubERK3Var", false]], "idol::model::has (c++ function)": [[42, "_CPPv4NK4idol5Model3hasERK3Ctr", false], [42, "_CPPv4NK4idol5Model3hasERK3Var", false]], "idol::model::has_optimizer (c++ function)": [[42, "_CPPv4NK4idol5Model13has_optimizerEv", false]], "idol::model::has_optimizer_factory (c++ function)": [[42, "_CPPv4NK4idol5Model21has_optimizer_factoryEv", false]], "idol::model::id (c++ function)": [[42, "_CPPv4NK4idol5Model2idEv", false]], "idol::model::model (c++ function)": [[42, "_CPPv4N4idol5Model5ModelER3Env", false], [42, "_CPPv4N4idol5Model5ModelER3Env14ObjectiveSense", false], [42, "_CPPv4N4idol5Model5ModelERR5Model", false]], "idol::model::operator= (c++ function)": [[42, "_CPPv4N4idol5ModelaSERK5Model", false], [42, "_CPPv4N4idol5ModelaSERR5Model", false]], "idol::model::optimize (c++ function)": [[42, "_CPPv4N4idol5Model8optimizeEv", false]], "idol::model::optimizer (c++ function)": [[42, "_CPPv4N4idol5Model9optimizerEv", false], [42, "_CPPv4NK4idol5Model9optimizerEv", false]], "idol::model::optimizer_factory (c++ function)": [[42, "_CPPv4NK4idol5Model17optimizer_factoryEv", false]], "idol::model::remove (c++ function)": [[42, "_CPPv4N4idol5Model6removeERK3Ctr", false], [42, "_CPPv4N4idol5Model6removeERK3Var", false]], "idol::model::reserve_ctrs (c++ function)": [[42, "_CPPv4N4idol5Model12reserve_ctrsEj", false]], "idol::model::reserve_vars (c++ function)": [[42, "_CPPv4N4idol5Model12reserve_varsEj", false]], "idol::model::scale_to_integers (c++ function)": [[42, "_CPPv4N4idol5Model17scale_to_integersEj", false]], "idol::model::set_ctr_rhs (c++ function)": [[42, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRK8Constant", false], [42, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRR8Constant", false]], "idol::model::set_ctr_row (c++ function)": [[42, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRK3Row", false], [42, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRR3Row", false]], "idol::model::set_ctr_type (c++ function)": [[42, "_CPPv4N4idol5Model12set_ctr_typeERK3Ctr7CtrType", false]], "idol::model::set_mat_coeff (c++ function)": [[42, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRK8Constant", false], [42, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRR8Constant", false]], "idol::model::set_obj_const (c++ function)": [[42, "_CPPv4N4idol5Model13set_obj_constERK8Constant", false], [42, "_CPPv4N4idol5Model13set_obj_constERR8Constant", false]], "idol::model::set_obj_expr (c++ function)": [[42, "_CPPv4N4idol5Model12set_obj_exprERK4ExprI3Var3VarE", false], [42, "_CPPv4N4idol5Model12set_obj_exprERR4ExprI3Var3VarE", false]], "idol::model::set_obj_sense (c++ function)": [[42, "_CPPv4N4idol5Model13set_obj_senseE14ObjectiveSense", false]], "idol::model::set_rhs_expr (c++ function)": [[42, "_CPPv4N4idol5Model12set_rhs_exprERK7LinExprI3CtrE", false], [42, "_CPPv4N4idol5Model12set_rhs_exprERR7LinExprI3CtrE", false]], "idol::model::set_solution_index (c++ function)": [[42, "_CPPv4N4idol5Model18set_solution_indexEj", false]], "idol::model::set_var_column (c++ function)": [[42, "_CPPv4N4idol5Model14set_var_columnERK3VarRK6Column", false], [42, "_CPPv4N4idol5Model14set_var_columnERK3VarRR6Column", false]], "idol::model::set_var_lb (c++ function)": [[42, "_CPPv4N4idol5Model10set_var_lbERK3Vard", false]], "idol::model::set_var_obj (c++ function)": [[42, "_CPPv4N4idol5Model11set_var_objERK3VarRK8Constant", false], [42, "_CPPv4N4idol5Model11set_var_objERK3VarRR8Constant", false]], "idol::model::set_var_type (c++ function)": [[42, "_CPPv4N4idol5Model12set_var_typeERK3Var7VarType", false]], "idol::model::set_var_ub (c++ function)": [[42, "_CPPv4N4idol5Model10set_var_ubERK3Vard", false]], "idol::model::unuse (c++ function)": [[42, "_CPPv4N4idol5Model5unuseEv", false]], "idol::model::update (c++ function)": [[42, "_CPPv4N4idol5Model6updateEv", false]], "idol::model::use (c++ function)": [[42, "_CPPv4N4idol5Model3useERK16OptimizerFactory", false]], "idol::model::vars (c++ function)": [[42, "_CPPv4NK4idol5Model4varsEv", false]], "idol::model::write (c++ function)": [[42, "_CPPv4N4idol5Model5writeERKNSt6stringE", false]], "idol::model::~model (c++ function)": [[42, "_CPPv4N4idol5ModelD0Ev", false]], "idol::mosek (c++ class)": [[58, "_CPPv4N4idol5MosekE", false]], "idol::mosek::add_callback (c++ function)": [[58, "_CPPv4N4idol5Mosek12add_callbackERK15CallbackFactory", false]], "idol::mosek::as (c++ function)": [[58, "_CPPv4I0EN4idol5Mosek2asER1Tv", false], [58, "_CPPv4I0ENK4idol5Mosek2asERK1Tv", false]], "idol::mosek::clone (c++ function)": [[58, "_CPPv4NK4idol5Mosek5cloneEv", false]], "idol::mosek::conditional (c++ function)": [[58, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEE", false], [58, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEERKNSt8functionIFvR5MosekEEE", false]], "idol::mosek::continuousrelaxation (c++ function)": [[58, "_CPPv4N4idol5Mosek20ContinuousRelaxationEv", false]], "idol::mosek::is (c++ function)": [[58, "_CPPv4I0ENK4idol5Mosek2isEbv", false]], "idol::mosek::mosek (c++ function)": [[58, "_CPPv4N4idol5Mosek5MosekERK5Mosek", false], [58, "_CPPv4N4idol5Mosek5MosekERR5Mosek", false], [58, "_CPPv4N4idol5Mosek5MosekEv", false]], "idol::mosek::operator() (c++ function)": [[58, "_CPPv4NK4idol5MosekclERK5Model", false]], "idol::mosek::operator= (c++ function)": [[58, "_CPPv4N4idol5MosekaSERK5Mosek", false], [58, "_CPPv4N4idol5MosekaSERR5Mosek", false]], "idol::mosek::with_absolute_gap_tolerance (c++ function)": [[58, "_CPPv4N4idol5Mosek27with_absolute_gap_toleranceEd", false]], "idol::mosek::with_best_bound_stop (c++ function)": [[58, "_CPPv4N4idol5Mosek20with_best_bound_stopEd", false]], "idol::mosek::with_best_obj_stop (c++ function)": [[58, "_CPPv4N4idol5Mosek18with_best_obj_stopEd", false]], "idol::mosek::with_continuous_relaxation_only (c++ function)": [[58, "_CPPv4N4idol5Mosek31with_continuous_relaxation_onlyEb", false]], "idol::mosek::with_external_parameter (c++ function)": [[58, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringENSt6stringE", false], [58, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEd", false], [58, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEi", false]], "idol::mosek::with_infeasible_or_unbounded_info (c++ function)": [[58, "_CPPv4N4idol5Mosek33with_infeasible_or_unbounded_infoEb", false]], "idol::mosek::with_iteration_limit (c++ function)": [[58, "_CPPv4N4idol5Mosek20with_iteration_limitEj", false]], "idol::mosek::with_logs (c++ function)": [[58, "_CPPv4N4idol5Mosek9with_logsEb", false]], "idol::mosek::with_presolve (c++ function)": [[58, "_CPPv4N4idol5Mosek13with_presolveEb", false]], "idol::mosek::with_relative_gap_tolerance (c++ function)": [[58, "_CPPv4N4idol5Mosek27with_relative_gap_toleranceEd", false]], "idol::mosek::with_thread_limit (c++ function)": [[58, "_CPPv4N4idol5Mosek17with_thread_limitEj", false]], "idol::mosek::with_time_limit (c++ function)": [[58, "_CPPv4N4idol5Mosek15with_time_limitEd", false]], "idol::mostinfeasible (c++ class)": [[18, "_CPPv4N4idol14MostInfeasibleE", false]], "idol::mostinfeasible::mostinfeasible (c++ function)": [[18, "_CPPv4I0EN4idol14MostInfeasible14MostInfeasibleE9IteratorT9IteratorT", false], [18, "_CPPv4N4idol14MostInfeasible14MostInfeasibleEv", false]], "idol::mostinfeasible::strategy (c++ class)": [[18, "_CPPv4I0EN4idol14MostInfeasible8StrategyE", false]], "idol::mostinfeasible::strategy::clone (c++ function)": [[18, "_CPPv4NK4idol14MostInfeasible8Strategy5cloneEv", false]], "idol::mostinfeasible::strategy::operator() (c++ function)": [[18, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [18, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::mostinfeasible::strategy::strategy (c++ function)": [[18, "_CPPv4N4idol14MostInfeasible8Strategy8StrategyERK14MostInfeasible", false], [18, "_CPPv4N4idol14MostInfeasible8Strategy8StrategyEv", false]], "idol::multiply_with_precision (c++ function)": [[76, "_CPPv4N4idol23multiply_with_precisionEddj", false]], "idol::multiply_with_precision_by_power_of_10 (c++ function)": [[76, "_CPPv4N4idol38multiply_with_precision_by_power_of_10Edjj", false]], "idol::optimizers::dantzigwolfedecomposition (c++ class)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecompositionE", false]], "idol::optimizers::dantzigwolfedecomposition::as (c++ function)": [[30, "_CPPv4I0EN4idol10Optimizers25DantzigWolfeDecomposition2asER1Tv", false], [30, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2asERK1Tv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration (c++ class)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGenerationE", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::best_bound (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration10best_boundEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::best_obj (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration8best_objEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::columngeneration (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration16ColumnGenerationER25DantzigWolfeDecompositionbd", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::execute (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration7executeEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::parent (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6parentEv", false], [30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6parentEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::primal_solution (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration15primal_solutionEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::reason (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6reasonEv", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::set_best_bound_stop (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration19set_best_bound_stopEd", false]], "idol::optimizers::dantzigwolfedecomposition::columngeneration::status (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6statusEv", false]], "idol::optimizers::dantzigwolfedecomposition::dantzigwolfedecomposition (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", false]], "idol::optimizers::dantzigwolfedecomposition::formulation (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition11formulationEv", false], [30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition11formulationEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_absolute_gap (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16get_absolute_gapEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_best_bound (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition14get_best_boundEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_best_obj (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition12get_best_objEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_best_bound_stop (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition25get_param_best_bound_stopEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_best_obj_stop (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition23get_param_best_obj_stopEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_infeasible_or_unbounded_info (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition38get_param_infeasible_or_unbounded_infoEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_iteration_limit (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition25get_param_iteration_limitEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_logs (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition14get_param_logsEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_presolve (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_param_presolveEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_thread_limit (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition22get_param_thread_limitEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_param_time_limit (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition20get_param_time_limitEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_reason (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition10get_reasonEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_relative_gap (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16get_relative_gapEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_remaining_time (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_remaining_timeEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_status (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition10get_statusEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_tol_feasibility (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition19get_tol_feasibilityEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_tol_integer (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition15get_tol_integerEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_tol_mip_absolute_gap (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition24get_tol_mip_absolute_gapEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_tol_mip_relative_gap (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition24get_tol_mip_relative_gapEv", false]], "idol::optimizers::dantzigwolfedecomposition::get_tol_optimality (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_tol_optimalityEv", false]], "idol::optimizers::dantzigwolfedecomposition::is (c++ function)": [[30, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2isEbv", false]], "idol::optimizers::dantzigwolfedecomposition::is_terminated (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition13is_terminatedEv", false]], "idol::optimizers::dantzigwolfedecomposition::name (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition4nameEv", false]], "idol::optimizers::dantzigwolfedecomposition::parent (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition6parentEv", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_best_bound_stop (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_best_bound_stopEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_best_obj_stop (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition23set_param_best_obj_stopEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_infeasible_or_unbounded_info (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition38set_param_infeasible_or_unbounded_infoEb", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_iteration_limit (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_iteration_limitEj", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_logs (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition14set_param_logsEb", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_presolve (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_param_presolveEb", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_threads (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition17set_param_threadsEj", false]], "idol::optimizers::dantzigwolfedecomposition::set_param_time_limit (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition20set_param_time_limitEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_tol_feasibility (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition19set_tol_feasibilityEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_tol_integer (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition15set_tol_integerEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_tol_mip_absolute_gap (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_absolute_gapEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_tol_mip_relative_gap (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_relative_gapEd", false]], "idol::optimizers::dantzigwolfedecomposition::set_tol_optimality (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_tol_optimalityEd", false]], "idol::optimizers::dantzigwolfedecomposition::terminate (c++ function)": [[30, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition9terminateEv", false]], "idol::optimizers::dantzigwolfedecomposition::time (c++ function)": [[30, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition4timeEv", false]], "idol::optimizers::glpk (c++ class)": [[59, "_CPPv4N4idol10Optimizers4GLPKE", false]], "idol::optimizers::glpk::as (c++ function)": [[59, "_CPPv4I0EN4idol10Optimizers4GLPK2asER1Tv", false], [59, "_CPPv4I0ENK4idol10Optimizers4GLPK2asERK1Tv", false]], "idol::optimizers::glpk::get_param_best_bound_stop (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK25get_param_best_bound_stopEv", false]], "idol::optimizers::glpk::get_param_best_obj_stop (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK23get_param_best_obj_stopEv", false]], "idol::optimizers::glpk::get_param_infeasible_or_unbounded_info (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK38get_param_infeasible_or_unbounded_infoEv", false]], "idol::optimizers::glpk::get_param_iteration_limit (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK25get_param_iteration_limitEv", false]], "idol::optimizers::glpk::get_param_logs (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK14get_param_logsEv", false]], "idol::optimizers::glpk::get_param_presolve (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK18get_param_presolveEv", false]], "idol::optimizers::glpk::get_param_thread_limit (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK22get_param_thread_limitEv", false]], "idol::optimizers::glpk::get_param_time_limit (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK20get_param_time_limitEv", false]], "idol::optimizers::glpk::get_remaining_time (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK18get_remaining_timeEv", false]], "idol::optimizers::glpk::get_tol_feasibility (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK19get_tol_feasibilityEv", false]], "idol::optimizers::glpk::get_tol_integer (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK15get_tol_integerEv", false]], "idol::optimizers::glpk::get_tol_mip_absolute_gap (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK24get_tol_mip_absolute_gapEv", false]], "idol::optimizers::glpk::get_tol_mip_relative_gap (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK24get_tol_mip_relative_gapEv", false]], "idol::optimizers::glpk::get_tol_optimality (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK18get_tol_optimalityEv", false]], "idol::optimizers::glpk::glpk (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK4GLPKERK5Modelb", false]], "idol::optimizers::glpk::is (c++ function)": [[59, "_CPPv4I0ENK4idol10Optimizers4GLPK2isEbv", false]], "idol::optimizers::glpk::is_terminated (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK13is_terminatedEv", false]], "idol::optimizers::glpk::name (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK4nameEv", false]], "idol::optimizers::glpk::operator[] (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPKixERK3Ctr", false], [59, "_CPPv4N4idol10Optimizers4GLPKixERK3Var", false], [59, "_CPPv4NK4idol10Optimizers4GLPKixERK3Ctr", false], [59, "_CPPv4NK4idol10Optimizers4GLPKixERK3Var", false]], "idol::optimizers::glpk::parent (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK6parentEv", false]], "idol::optimizers::glpk::read_from_file (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK14read_from_fileER3EnvRKNSt6stringE", false]], "idol::optimizers::glpk::set_param_best_bound_stop (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK25set_param_best_bound_stopEd", false]], "idol::optimizers::glpk::set_param_best_obj_stop (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK23set_param_best_obj_stopEd", false]], "idol::optimizers::glpk::set_param_infeasible_or_unbounded_info (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK38set_param_infeasible_or_unbounded_infoEb", false]], "idol::optimizers::glpk::set_param_iteration_limit (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK25set_param_iteration_limitEj", false]], "idol::optimizers::glpk::set_param_logs (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK14set_param_logsEb", false]], "idol::optimizers::glpk::set_param_presolve (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK18set_param_presolveEb", false]], "idol::optimizers::glpk::set_param_threads (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK17set_param_threadsEj", false]], "idol::optimizers::glpk::set_param_time_limit (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK20set_param_time_limitEd", false]], "idol::optimizers::glpk::set_tol_feasibility (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK19set_tol_feasibilityEd", false]], "idol::optimizers::glpk::set_tol_integer (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK15set_tol_integerEd", false]], "idol::optimizers::glpk::set_tol_mip_absolute_gap (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_absolute_gapEd", false]], "idol::optimizers::glpk::set_tol_mip_relative_gap (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_relative_gapEd", false]], "idol::optimizers::glpk::set_tol_optimality (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK18set_tol_optimalityEd", false]], "idol::optimizers::glpk::terminate (c++ function)": [[59, "_CPPv4N4idol10Optimizers4GLPK9terminateEv", false]], "idol::optimizers::glpk::time (c++ function)": [[59, "_CPPv4NK4idol10Optimizers4GLPK4timeEv", false]], "idol::optimizers::gurobi (c++ class)": [[60, "_CPPv4N4idol10Optimizers6GurobiE", false]], "idol::optimizers::gurobi::add_callback (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi12add_callbackEP8Callback", false]], "idol::optimizers::gurobi::as (c++ function)": [[60, "_CPPv4I0EN4idol10Optimizers6Gurobi2asER1Tv", false], [60, "_CPPv4I0ENK4idol10Optimizers6Gurobi2asERK1Tv", false]], "idol::optimizers::gurobi::env (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi3envEv", false], [60, "_CPPv4NK4idol10Optimizers6Gurobi3envEv", false]], "idol::optimizers::gurobi::get_param_best_bound_stop (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi25get_param_best_bound_stopEv", false]], "idol::optimizers::gurobi::get_param_best_obj_stop (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi23get_param_best_obj_stopEv", false]], "idol::optimizers::gurobi::get_param_infeasible_or_unbounded_info (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi38get_param_infeasible_or_unbounded_infoEv", false]], "idol::optimizers::gurobi::get_param_iteration_limit (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi25get_param_iteration_limitEv", false]], "idol::optimizers::gurobi::get_param_logs (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi14get_param_logsEv", false]], "idol::optimizers::gurobi::get_param_presolve (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi18get_param_presolveEv", false]], "idol::optimizers::gurobi::get_param_thread_limit (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi22get_param_thread_limitEv", false]], "idol::optimizers::gurobi::get_param_time_limit (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi20get_param_time_limitEv", false]], "idol::optimizers::gurobi::get_remaining_time (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi18get_remaining_timeEv", false]], "idol::optimizers::gurobi::get_tol_feasibility (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi19get_tol_feasibilityEv", false]], "idol::optimizers::gurobi::get_tol_integer (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi15get_tol_integerEv", false]], "idol::optimizers::gurobi::get_tol_mip_absolute_gap (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi24get_tol_mip_absolute_gapEv", false]], "idol::optimizers::gurobi::get_tol_mip_relative_gap (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi24get_tol_mip_relative_gapEv", false]], "idol::optimizers::gurobi::get_tol_optimality (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi18get_tol_optimalityEv", false]], "idol::optimizers::gurobi::gurobi (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5Modelb", false], [60, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5ModelbR6GRBEnv", false]], "idol::optimizers::gurobi::is (c++ function)": [[60, "_CPPv4I0ENK4idol10Optimizers6Gurobi2isEbv", false]], "idol::optimizers::gurobi::is_terminated (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi13is_terminatedEv", false]], "idol::optimizers::gurobi::model (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi5modelEv", false], [60, "_CPPv4NK4idol10Optimizers6Gurobi5modelEv", false]], "idol::optimizers::gurobi::name (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi4nameEv", false]], "idol::optimizers::gurobi::operator[] (c++ function)": [[60, "_CPPv4N4idol10Optimizers6GurobiixERK3Ctr", false], [60, "_CPPv4N4idol10Optimizers6GurobiixERK3Var", false], [60, "_CPPv4NK4idol10Optimizers6GurobiixERK3Ctr", false], [60, "_CPPv4NK4idol10Optimizers6GurobiixERK3Var", false]], "idol::optimizers::gurobi::parent (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi6parentEv", false]], "idol::optimizers::gurobi::read_from_file (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi14read_from_fileER3EnvRKNSt6stringE", false]], "idol::optimizers::gurobi::set_lazy_cut (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi12set_lazy_cutEb", false]], "idol::optimizers::gurobi::set_max_n_solution_in_pool (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi26set_max_n_solution_in_poolEj", false]], "idol::optimizers::gurobi::set_param (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE12GRB_IntParami", false], [60, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE15GRB_DoubleParamd", false]], "idol::optimizers::gurobi::set_param_best_bound_stop (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi25set_param_best_bound_stopEd", false]], "idol::optimizers::gurobi::set_param_best_obj_stop (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi23set_param_best_obj_stopEd", false]], "idol::optimizers::gurobi::set_param_infeasible_or_unbounded_info (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi38set_param_infeasible_or_unbounded_infoEb", false]], "idol::optimizers::gurobi::set_param_iteration_limit (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi25set_param_iteration_limitEj", false]], "idol::optimizers::gurobi::set_param_logs (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi14set_param_logsEb", false]], "idol::optimizers::gurobi::set_param_presolve (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi18set_param_presolveEb", false]], "idol::optimizers::gurobi::set_param_threads (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi17set_param_threadsEj", false]], "idol::optimizers::gurobi::set_param_time_limit (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi20set_param_time_limitEd", false]], "idol::optimizers::gurobi::set_tol_feasibility (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi19set_tol_feasibilityEd", false]], "idol::optimizers::gurobi::set_tol_integer (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi15set_tol_integerEd", false]], "idol::optimizers::gurobi::set_tol_mip_absolute_gap (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_absolute_gapEd", false]], "idol::optimizers::gurobi::set_tol_mip_relative_gap (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_relative_gapEd", false]], "idol::optimizers::gurobi::set_tol_optimality (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi18set_tol_optimalityEd", false]], "idol::optimizers::gurobi::terminate (c++ function)": [[60, "_CPPv4N4idol10Optimizers6Gurobi9terminateEv", false]], "idol::optimizers::gurobi::time (c++ function)": [[60, "_CPPv4NK4idol10Optimizers6Gurobi4timeEv", false]], "idol::optimizers::robust::columnandconstraintgeneration (c++ class)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGenerationE", false]], "idol::optimizers::robust::columnandconstraintgeneration::as (c++ function)": [[24, "_CPPv4I0EN4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asER1Tv", false], [24, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asERK1Tv", false]], "idol::optimizers::robust::columnandconstraintgeneration::columnandconstraintgeneration (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", false]], "idol::optimizers::robust::columnandconstraintgeneration::complete_recourse (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration17complete_recourseEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_absolute_gap (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration16get_absolute_gapEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_best_bound (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_best_boundEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_best_obj (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12get_best_objEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_ctr_dual (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12get_ctr_dualERK3Ctr", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_ctr_farkas (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_ctr_farkasERK3Ctr", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_n_solutions (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15get_n_solutionsEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_best_bound_stop (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration25get_param_best_bound_stopEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_best_obj_stop (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration23get_param_best_obj_stopEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_infeasible_or_unbounded_info (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration38get_param_infeasible_or_unbounded_infoEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_iteration_limit (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration25get_param_iteration_limitEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_logs (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_param_logsEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_presolve (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_param_presolveEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_thread_limit (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration22get_param_thread_limitEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_param_time_limit (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration20get_param_time_limitEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_reason (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration10get_reasonEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_relative_gap (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration16get_relative_gapEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_remaining_time (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_remaining_timeEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_solution_index (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_solution_indexEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_status (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration10get_statusEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_tol_feasibility (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration19get_tol_feasibilityEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_tol_integer (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15get_tol_integerEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_tol_mip_absolute_gap (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration24get_tol_mip_absolute_gapEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_tol_mip_relative_gap (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration24get_tol_mip_relative_gapEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_tol_optimality (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_tol_optimalityEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_var_primal (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_var_primalERK3Var", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_var_ray (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration11get_var_rayERK3Var", false]], "idol::optimizers::robust::columnandconstraintgeneration::get_var_reduced_cost (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration20get_var_reduced_costERK3Var", false]], "idol::optimizers::robust::columnandconstraintgeneration::is (c++ function)": [[24, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2isEbv", false]], "idol::optimizers::robust::columnandconstraintgeneration::is_terminated (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration13is_terminatedEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::lower_level_constraints (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration23lower_level_constraintsEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::lower_level_variables (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration21lower_level_variablesEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::master_problem (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14master_problemEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::n_iterations (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12n_iterationsEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::name (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration4nameEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::parent (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration6parentEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_best_bound_stop (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_best_bound_stopEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_best_obj_stop (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration23set_param_best_obj_stopEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_infeasible_or_unbounded_info (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration38set_param_infeasible_or_unbounded_infoEb", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_iteration_limit (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_iteration_limitEj", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_logs (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration14set_param_logsEb", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_presolve (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_param_presolveEb", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_threads (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration17set_param_threadsEj", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_param_time_limit (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration20set_param_time_limitEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_tol_feasibility (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration19set_tol_feasibilityEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_tol_integer (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration15set_tol_integerEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_tol_mip_absolute_gap (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_absolute_gapEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_tol_mip_relative_gap (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_relative_gapEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::set_tol_optimality (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_tol_optimalityEd", false]], "idol::optimizers::robust::columnandconstraintgeneration::terminate (c++ function)": [[24, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration9terminateEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::time (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration4timeEv", false]], "idol::optimizers::robust::columnandconstraintgeneration::uncertainty_set (c++ function)": [[24, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15uncertainty_setEv", false]], "idol::osi (c++ class)": [[67, "_CPPv4N4idol3OsiE", false]], "idol::osi::as (c++ function)": [[67, "_CPPv4I0EN4idol3Osi2asER1Tv", false], [67, "_CPPv4I0ENK4idol3Osi2asERK1Tv", false]], "idol::osi::clone (c++ function)": [[67, "_CPPv4NK4idol3Osi5cloneEv", false]], "idol::osi::conditional (c++ function)": [[67, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEE", false], [67, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", false]], "idol::osi::continuousrelaxation (c++ function)": [[67, "_CPPv4N4idol3Osi20ContinuousRelaxationERK18OsiSolverInterface", false]], "idol::osi::create_osi_solver_interface (c++ function)": [[67, "_CPPv4NK4idol3Osi27create_osi_solver_interfaceEv", false]], "idol::osi::is (c++ function)": [[67, "_CPPv4I0ENK4idol3Osi2isEbv", false]], "idol::osi::operator() (c++ function)": [[67, "_CPPv4NK4idol3OsiclERK5Model", false]], "idol::osi::operator= (c++ function)": [[67, "_CPPv4N4idol3OsiaSERK3Osi", false], [67, "_CPPv4N4idol3OsiaSERR3Osi", false]], "idol::osi::osi (c++ function)": [[67, "_CPPv4N4idol3Osi3OsiERK18OsiSolverInterface", false], [67, "_CPPv4N4idol3Osi3OsiERK3Osi", false], [67, "_CPPv4N4idol3Osi3OsiERR3Osi", false]], "idol::osi::with_absolute_gap_tolerance (c++ function)": [[67, "_CPPv4N4idol3Osi27with_absolute_gap_toleranceEd", false]], "idol::osi::with_best_bound_stop (c++ function)": [[67, "_CPPv4N4idol3Osi20with_best_bound_stopEd", false]], "idol::osi::with_best_obj_stop (c++ function)": [[67, "_CPPv4N4idol3Osi18with_best_obj_stopEd", false]], "idol::osi::with_infeasible_or_unbounded_info (c++ function)": [[67, "_CPPv4N4idol3Osi33with_infeasible_or_unbounded_infoEb", false]], "idol::osi::with_iteration_limit (c++ function)": [[67, "_CPPv4N4idol3Osi20with_iteration_limitEj", false]], "idol::osi::with_logs (c++ function)": [[67, "_CPPv4N4idol3Osi9with_logsEb", false]], "idol::osi::with_presolve (c++ function)": [[67, "_CPPv4N4idol3Osi13with_presolveEb", false]], "idol::osi::with_relative_gap_tolerance (c++ function)": [[67, "_CPPv4N4idol3Osi27with_relative_gap_toleranceEd", false]], "idol::osi::with_thread_limit (c++ function)": [[67, "_CPPv4N4idol3Osi17with_thread_limitEj", false]], "idol::osi::with_time_limit (c++ function)": [[67, "_CPPv4N4idol3Osi15with_time_limitEd", false]], "idol::osicbc (c++ class)": [[63, "_CPPv4N4idol6OsiCbcE", false]], "idol::osicbc::as (c++ function)": [[63, "_CPPv4I0EN4idol6OsiCbc2asER1Tv", false], [63, "_CPPv4I0ENK4idol6OsiCbc2asERK1Tv", false]], "idol::osicbc::clone (c++ function)": [[63, "_CPPv4NK4idol6OsiCbc5cloneEv", false]], "idol::osicbc::conditional (c++ function)": [[63, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEE", false], [63, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", false]], "idol::osicbc::continuousrelaxation (c++ function)": [[63, "_CPPv4N4idol6OsiCbc20ContinuousRelaxationERK18OsiSolverInterface", false]], "idol::osicbc::create_osi_solver_interface (c++ function)": [[63, "_CPPv4NK4idol6OsiCbc27create_osi_solver_interfaceEv", false]], "idol::osicbc::is (c++ function)": [[63, "_CPPv4I0ENK4idol6OsiCbc2isEbv", false]], "idol::osicbc::operator() (c++ function)": [[63, "_CPPv4NK4idol6OsiCbcclERK5Model", false]], "idol::osicbc::with_absolute_gap_tolerance (c++ function)": [[63, "_CPPv4N4idol6OsiCbc27with_absolute_gap_toleranceEd", false]], "idol::osicbc::with_best_bound_stop (c++ function)": [[63, "_CPPv4N4idol6OsiCbc20with_best_bound_stopEd", false]], "idol::osicbc::with_best_obj_stop (c++ function)": [[63, "_CPPv4N4idol6OsiCbc18with_best_obj_stopEd", false]], "idol::osicbc::with_infeasible_or_unbounded_info (c++ function)": [[63, "_CPPv4N4idol6OsiCbc33with_infeasible_or_unbounded_infoEb", false]], "idol::osicbc::with_iteration_limit (c++ function)": [[63, "_CPPv4N4idol6OsiCbc20with_iteration_limitEj", false]], "idol::osicbc::with_logs (c++ function)": [[63, "_CPPv4N4idol6OsiCbc9with_logsEb", false]], "idol::osicbc::with_presolve (c++ function)": [[63, "_CPPv4N4idol6OsiCbc13with_presolveEb", false]], "idol::osicbc::with_relative_gap_tolerance (c++ function)": [[63, "_CPPv4N4idol6OsiCbc27with_relative_gap_toleranceEd", false]], "idol::osicbc::with_thread_limit (c++ function)": [[63, "_CPPv4N4idol6OsiCbc17with_thread_limitEj", false]], "idol::osicbc::with_time_limit (c++ function)": [[63, "_CPPv4N4idol6OsiCbc15with_time_limitEd", false]], "idol::osiclp (c++ class)": [[64, "_CPPv4N4idol6OsiClpE", false]], "idol::osiclp::as (c++ function)": [[64, "_CPPv4I0EN4idol6OsiClp2asER1Tv", false], [64, "_CPPv4I0ENK4idol6OsiClp2asERK1Tv", false]], "idol::osiclp::clone (c++ function)": [[64, "_CPPv4NK4idol6OsiClp5cloneEv", false]], "idol::osiclp::conditional (c++ function)": [[64, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEE", false], [64, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", false]], "idol::osiclp::continuousrelaxation (c++ function)": [[64, "_CPPv4N4idol6OsiClp20ContinuousRelaxationERK18OsiSolverInterface", false]], "idol::osiclp::create_osi_solver_interface (c++ function)": [[64, "_CPPv4NK4idol6OsiClp27create_osi_solver_interfaceEv", false]], "idol::osiclp::is (c++ function)": [[64, "_CPPv4I0ENK4idol6OsiClp2isEbv", false]], "idol::osiclp::operator() (c++ function)": [[64, "_CPPv4NK4idol6OsiClpclERK5Model", false]], "idol::osiclp::with_absolute_gap_tolerance (c++ function)": [[64, "_CPPv4N4idol6OsiClp27with_absolute_gap_toleranceEd", false]], "idol::osiclp::with_best_bound_stop (c++ function)": [[64, "_CPPv4N4idol6OsiClp20with_best_bound_stopEd", false]], "idol::osiclp::with_best_obj_stop (c++ function)": [[64, "_CPPv4N4idol6OsiClp18with_best_obj_stopEd", false]], "idol::osiclp::with_infeasible_or_unbounded_info (c++ function)": [[64, "_CPPv4N4idol6OsiClp33with_infeasible_or_unbounded_infoEb", false]], "idol::osiclp::with_iteration_limit (c++ function)": [[64, "_CPPv4N4idol6OsiClp20with_iteration_limitEj", false]], "idol::osiclp::with_logs (c++ function)": [[64, "_CPPv4N4idol6OsiClp9with_logsEb", false]], "idol::osiclp::with_presolve (c++ function)": [[64, "_CPPv4N4idol6OsiClp13with_presolveEb", false]], "idol::osiclp::with_relative_gap_tolerance (c++ function)": [[64, "_CPPv4N4idol6OsiClp27with_relative_gap_toleranceEd", false]], "idol::osiclp::with_thread_limit (c++ function)": [[64, "_CPPv4N4idol6OsiClp17with_thread_limitEj", false]], "idol::osiclp::with_time_limit (c++ function)": [[64, "_CPPv4N4idol6OsiClp15with_time_limitEd", false]], "idol::osicplex (c++ class)": [[65, "_CPPv4N4idol8OsiCplexE", false]], "idol::osicplex::as (c++ function)": [[65, "_CPPv4I0EN4idol8OsiCplex2asER1Tv", false], [65, "_CPPv4I0ENK4idol8OsiCplex2asERK1Tv", false]], "idol::osicplex::clone (c++ function)": [[65, "_CPPv4NK4idol8OsiCplex5cloneEv", false]], "idol::osicplex::conditional (c++ function)": [[65, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEE", false], [65, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", false]], "idol::osicplex::continuousrelaxation (c++ function)": [[65, "_CPPv4N4idol8OsiCplex20ContinuousRelaxationERK18OsiSolverInterface", false]], "idol::osicplex::create_osi_solver_interface (c++ function)": [[65, "_CPPv4NK4idol8OsiCplex27create_osi_solver_interfaceEv", false]], "idol::osicplex::is (c++ function)": [[65, "_CPPv4I0ENK4idol8OsiCplex2isEbv", false]], "idol::osicplex::operator() (c++ function)": [[65, "_CPPv4NK4idol8OsiCplexclERK5Model", false]], "idol::osicplex::with_absolute_gap_tolerance (c++ function)": [[65, "_CPPv4N4idol8OsiCplex27with_absolute_gap_toleranceEd", false]], "idol::osicplex::with_best_bound_stop (c++ function)": [[65, "_CPPv4N4idol8OsiCplex20with_best_bound_stopEd", false]], "idol::osicplex::with_best_obj_stop (c++ function)": [[65, "_CPPv4N4idol8OsiCplex18with_best_obj_stopEd", false]], "idol::osicplex::with_infeasible_or_unbounded_info (c++ function)": [[65, "_CPPv4N4idol8OsiCplex33with_infeasible_or_unbounded_infoEb", false]], "idol::osicplex::with_iteration_limit (c++ function)": [[65, "_CPPv4N4idol8OsiCplex20with_iteration_limitEj", false]], "idol::osicplex::with_logs (c++ function)": [[65, "_CPPv4N4idol8OsiCplex9with_logsEb", false]], "idol::osicplex::with_presolve (c++ function)": [[65, "_CPPv4N4idol8OsiCplex13with_presolveEb", false]], "idol::osicplex::with_relative_gap_tolerance (c++ function)": [[65, "_CPPv4N4idol8OsiCplex27with_relative_gap_toleranceEd", false]], "idol::osicplex::with_thread_limit (c++ function)": [[65, "_CPPv4N4idol8OsiCplex17with_thread_limitEj", false]], "idol::osicplex::with_time_limit (c++ function)": [[65, "_CPPv4N4idol8OsiCplex15with_time_limitEd", false]], "idol::osisymphony (c++ class)": [[66, "_CPPv4N4idol11OsiSymphonyE", false]], "idol::osisymphony::as (c++ function)": [[66, "_CPPv4I0EN4idol11OsiSymphony2asER1Tv", false], [66, "_CPPv4I0ENK4idol11OsiSymphony2asERK1Tv", false]], "idol::osisymphony::clone (c++ function)": [[66, "_CPPv4NK4idol11OsiSymphony5cloneEv", false]], "idol::osisymphony::conditional (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEE", false], [66, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", false]], "idol::osisymphony::continuousrelaxation (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony20ContinuousRelaxationERK18OsiSolverInterface", false]], "idol::osisymphony::create_osi_solver_interface (c++ function)": [[66, "_CPPv4NK4idol11OsiSymphony27create_osi_solver_interfaceEv", false]], "idol::osisymphony::is (c++ function)": [[66, "_CPPv4I0ENK4idol11OsiSymphony2isEbv", false]], "idol::osisymphony::operator() (c++ function)": [[66, "_CPPv4NK4idol11OsiSymphonyclERK5Model", false]], "idol::osisymphony::with_absolute_gap_tolerance (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony27with_absolute_gap_toleranceEd", false]], "idol::osisymphony::with_best_bound_stop (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony20with_best_bound_stopEd", false]], "idol::osisymphony::with_best_obj_stop (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony18with_best_obj_stopEd", false]], "idol::osisymphony::with_infeasible_or_unbounded_info (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony33with_infeasible_or_unbounded_infoEb", false]], "idol::osisymphony::with_iteration_limit (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony20with_iteration_limitEj", false]], "idol::osisymphony::with_logs (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony9with_logsEb", false]], "idol::osisymphony::with_presolve (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony13with_presolveEb", false]], "idol::osisymphony::with_relative_gap_tolerance (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony27with_relative_gap_toleranceEd", false]], "idol::osisymphony::with_thread_limit (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony17with_thread_limitEj", false]], "idol::osisymphony::with_time_limit (c++ function)": [[66, "_CPPv4N4idol11OsiSymphony15with_time_limitEd", false]], "idol::param (c++ class)": [[43, "_CPPv4N4idol5ParamE", false]], "idol::param::as (c++ function)": [[43, "_CPPv4I0ENK4idol5Param2asE1Tv", false]], "idol::param::id (c++ function)": [[43, "_CPPv4NK4idol5Param2idEv", false]], "idol::param::is (c++ function)": [[43, "_CPPv4I0ENK4idol5Param2isEbv", false]], "idol::param::name (c++ function)": [[43, "_CPPv4NK4idol5Param4nameEv", false]], "idol::param::operator= (c++ function)": [[43, "_CPPv4N4idol5ParamaSERK5Param", false], [43, "_CPPv4N4idol5ParamaSERR5Param", false]], "idol::param::param (c++ function)": [[43, "_CPPv4N4idol5Param5ParamERK3Ctr", false], [43, "_CPPv4N4idol5Param5ParamERK3Var", false], [43, "_CPPv4N4idol5Param5ParamERK5Param", false], [43, "_CPPv4N4idol5Param5ParamERR5Param", false]], "idol::pseudocost (c++ class)": [[19, "_CPPv4N4idol10PseudoCostE", false]], "idol::pseudocost::pseudocost (c++ function)": [[19, "_CPPv4I0EN4idol10PseudoCost10PseudoCostE9IteratorT9IteratorT", false], [19, "_CPPv4N4idol10PseudoCost10PseudoCostEv", false]], "idol::pseudocost::strategy (c++ class)": [[19, "_CPPv4I0EN4idol10PseudoCost8StrategyE", false]], "idol::pseudocost::strategy::clone (c++ function)": [[19, "_CPPv4NK4idol10PseudoCost8Strategy5cloneEv", false]], "idol::pseudocost::strategy::operator() (c++ function)": [[19, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [19, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::pseudocost::strategy::strategy (c++ function)": [[19, "_CPPv4N4idol10PseudoCost8Strategy8StrategyERK10PseudoCost", false], [19, "_CPPv4N4idol10PseudoCost8Strategy8StrategyEv", false]], "idol::quadexpr (c++ class)": [[44, "_CPPv4I0000EN4idol8QuadExprE", false]], "idol::quadexpr::fix (c++ function)": [[44, "_CPPv4NK4idol8QuadExpr3fixERKN8Solution6PrimalE", false]], "idol::quadexpr::get (c++ function)": [[44, "_CPPv4NK4idol8QuadExpr3getERK4Key1RK4Key2", false]], "idol::quadexpr::operator= (c++ function)": [[44, "_CPPv4N4idol8QuadExpraSERK8QuadExpr", false], [44, "_CPPv4N4idol8QuadExpraSERR8QuadExpr", false]], "idol::quadexpr::quadexpr (c++ function)": [[44, "_CPPv4N4idol8QuadExpr8QuadExprERK4Key1RK4Key2", false], [44, "_CPPv4N4idol8QuadExpr8QuadExprERK8ConstantRK4Key1RK4Key2", false], [44, "_CPPv4N4idol8QuadExpr8QuadExprERK8QuadExpr", false], [44, "_CPPv4N4idol8QuadExpr8QuadExprERR8ConstantRK4Key1RK4Key2", false], [44, "_CPPv4N4idol8QuadExpr8QuadExprERR8QuadExpr", false], [44, "_CPPv4N4idol8QuadExpr8QuadExprEv", false]], "idol::quadexpr::set (c++ function)": [[44, "_CPPv4N4idol8QuadExpr3setERK4Key1RK4Key28Constant", false]], "idol::quadexpr::~quadexpr (c++ function)": [[44, "_CPPv4N4idol8QuadExprD0Ev", false]], "idol::relative_gap (c++ function)": [[76, "_CPPv4N4idol12relative_gapEdd", false]], "idol::robust::columnandconstraintgeneration (c++ class)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationE", false]], "idol::robust::columnandconstraintgeneration::as (c++ function)": [[23, "_CPPv4I0EN4idol6Robust29ColumnAndConstraintGeneration2asER1Tv", false], [23, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2asERK1Tv", false]], "idol::robust::columnandconstraintgeneration::clone (c++ function)": [[23, "_CPPv4NK4idol6Robust29ColumnAndConstraintGeneration5cloneEv", false]], "idol::robust::columnandconstraintgeneration::columnandconstraintgeneration (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK10AnnotationI3VarjERK10AnnotationI3CtrjERK5Model", false], [23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK29ColumnAndConstraintGeneration", false], [23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERR29ColumnAndConstraintGeneration", false]], "idol::robust::columnandconstraintgeneration::conditional (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", false], [23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEERKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", false]], "idol::robust::columnandconstraintgeneration::is (c++ function)": [[23, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2isEbv", false]], "idol::robust::columnandconstraintgeneration::operator() (c++ function)": [[23, "_CPPv4NK4idol6Robust29ColumnAndConstraintGenerationclERK5Model", false]], "idol::robust::columnandconstraintgeneration::operator= (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationaSERK29ColumnAndConstraintGeneration", false], [23, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationaSERR29ColumnAndConstraintGeneration", false]], "idol::robust::columnandconstraintgeneration::with_absolute_gap_tolerance (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_absolute_gap_toleranceEd", false]], "idol::robust::columnandconstraintgeneration::with_best_bound_stop (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_best_bound_stopEd", false]], "idol::robust::columnandconstraintgeneration::with_best_obj_stop (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_best_obj_stopEd", false]], "idol::robust::columnandconstraintgeneration::with_complete_recourse (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration22with_complete_recourseEb", false]], "idol::robust::columnandconstraintgeneration::with_infeasible_or_unbounded_info (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration33with_infeasible_or_unbounded_infoEb", false]], "idol::robust::columnandconstraintgeneration::with_iteration_limit (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_iteration_limitEj", false]], "idol::robust::columnandconstraintgeneration::with_logs (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration9with_logsEb", false]], "idol::robust::columnandconstraintgeneration::with_master_optimizer (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration21with_master_optimizerERK16OptimizerFactory", false]], "idol::robust::columnandconstraintgeneration::with_presolve (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration13with_presolveEb", false]], "idol::robust::columnandconstraintgeneration::with_relative_gap_tolerance (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_relative_gap_toleranceEd", false]], "idol::robust::columnandconstraintgeneration::with_separator (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration14with_separatorERK12CCGSeparator", false]], "idol::robust::columnandconstraintgeneration::with_stabilization (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_stabilizationERK13CCGStabilizer", false]], "idol::robust::columnandconstraintgeneration::with_thread_limit (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration17with_thread_limitEj", false]], "idol::robust::columnandconstraintgeneration::with_time_limit (c++ function)": [[23, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration15with_time_limitEd", false]], "idol::round (c++ function)": [[76, "_CPPv4N4idol5roundEdj", false]], "idol::row (c++ class)": [[45, "_CPPv4N4idol3RowE", false]], "idol::row::emptyrow (c++ member)": [[45, "_CPPv4N4idol3Row8EmptyRowE", false]], "idol::row::fix (c++ function)": [[45, "_CPPv4NK4idol3Row3fixERKN8Solution4DualE", false], [45, "_CPPv4NK4idol3Row3fixERKN8Solution6PrimalE", false]], "idol::row::gcd (c++ function)": [[45, "_CPPv4NK4idol3Row3gcdEv", false]], "idol::row::is_violated (c++ function)": [[45, "_CPPv4NK4idol3Row11is_violatedERKN8Solution6PrimalE7CtrTyped", false]], "idol::row::linear (c++ function)": [[45, "_CPPv4N4idol3Row6linearEv", false], [45, "_CPPv4NK4idol3Row6linearEv", false]], "idol::row::multiply_with_precision_by_power_of_10 (c++ function)": [[45, "_CPPv4N4idol3Row38multiply_with_precision_by_power_of_10Ejj", false]], "idol::row::operator*= (c++ function)": [[45, "_CPPv4N4idol3RowmLEd", false]], "idol::row::operator+= (c++ function)": [[45, "_CPPv4N4idol3RowpLERK3Row", false]], "idol::row::operator-= (c++ function)": [[45, "_CPPv4N4idol3RowmIERK3Row", false]], "idol::row::operator/= (c++ function)": [[45, "_CPPv4N4idol3RowdVEd", false]], "idol::row::operator= (c++ function)": [[45, "_CPPv4N4idol3RowaSERK3Row", false], [45, "_CPPv4N4idol3RowaSERR3Row", false]], "idol::row::quadratic (c++ function)": [[45, "_CPPv4N4idol3Row9quadraticEv", false], [45, "_CPPv4NK4idol3Row9quadraticEv", false]], "idol::row::rhs (c++ function)": [[45, "_CPPv4N4idol3Row3rhsEv", false], [45, "_CPPv4NK4idol3Row3rhsEv", false]], "idol::row::row (c++ function)": [[45, "_CPPv4N4idol3Row3RowERK3Row", false], [45, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERK4ExprI3Var3VarE", false], [45, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERR4ExprI3Var3VarE", false], [45, "_CPPv4N4idol3Row3RowERR3Row", false], [45, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERK4ExprI3Var3VarE", false], [45, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERR4ExprI3Var3VarE", false], [45, "_CPPv4N4idol3Row3RowEv", false]], "idol::row::scale_to_integers (c++ function)": [[45, "_CPPv4N4idol3Row17scale_to_integersEj", false]], "idol::row::set_linear (c++ function)": [[45, "_CPPv4N4idol3Row10set_linearERK7LinExprI3VarE", false], [45, "_CPPv4N4idol3Row10set_linearERR7LinExprI3VarE", false]], "idol::row::set_quadratic (c++ function)": [[45, "_CPPv4N4idol3Row13set_quadraticERK8QuadExprI3Var3VarE", false], [45, "_CPPv4N4idol3Row13set_quadraticERR8QuadExprI3Var3VarE", false]], "idol::row::set_rhs (c++ function)": [[45, "_CPPv4N4idol3Row7set_rhsERK8Constant", false], [45, "_CPPv4N4idol3Row7set_rhsERR8Constant", false]], "idol::row::value (c++ function)": [[45, "_CPPv4NK4idol3Row5valueERKN8Solution6PrimalE", false]], "idol::solution::dual (c++ class)": [[46, "_CPPv4N4idol8Solution4DualE", false]], "idol::solution::dual::begin (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual5beginEv", false]], "idol::solution::dual::cbegin (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual6cbeginEv", false]], "idol::solution::dual::cend (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual4cendEv", false]], "idol::solution::dual::const_iterator (c++ type)": [[46, "_CPPv4N4idol8Solution4Dual14const_iteratorE", false]], "idol::solution::dual::end (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual3endEv", false]], "idol::solution::dual::get (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual3getERK3Ctr", false]], "idol::solution::dual::has_objective_value (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual19has_objective_valueEv", false]], "idol::solution::dual::merge_without_conflict (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual22merge_without_conflictE4Dual", false]], "idol::solution::dual::norm (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual4normEd", false]], "idol::solution::dual::normalize (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual9normalizeEd", false]], "idol::solution::dual::objective_value (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual15objective_valueEv", false]], "idol::solution::dual::operator*= (c++ function)": [[46, "_CPPv4N4idol8Solution4DualmLEd", false]], "idol::solution::dual::operator+= (c++ function)": [[46, "_CPPv4N4idol8Solution4DualpLERK4Dual", false]], "idol::solution::dual::reason (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual6reasonEv", false]], "idol::solution::dual::reset_objective_value (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual21reset_objective_valueEv", false]], "idol::solution::dual::round (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual5roundEj", false]], "idol::solution::dual::set (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual3setERK3Ctrd", false]], "idol::solution::dual::set_objective_value (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual19set_objective_valueEd", false]], "idol::solution::dual::set_reason (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual10set_reasonE14SolutionReason", false]], "idol::solution::dual::set_status (c++ function)": [[46, "_CPPv4N4idol8Solution4Dual10set_statusE14SolutionStatus", false]], "idol::solution::dual::size (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual4sizeEv", false]], "idol::solution::dual::status (c++ function)": [[46, "_CPPv4NK4idol8Solution4Dual6statusEv", false]], "idol::solution::primal (c++ class)": [[47, "_CPPv4N4idol8Solution6PrimalE", false]], "idol::solution::primal::begin (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal5beginEv", false]], "idol::solution::primal::cbegin (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal6cbeginEv", false]], "idol::solution::primal::cend (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal4cendEv", false]], "idol::solution::primal::const_iterator (c++ type)": [[47, "_CPPv4N4idol8Solution6Primal14const_iteratorE", false]], "idol::solution::primal::end (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal3endEv", false]], "idol::solution::primal::get (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal3getERK3Var", false]], "idol::solution::primal::has_objective_value (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal19has_objective_valueEv", false]], "idol::solution::primal::merge_without_conflict (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal22merge_without_conflictE6Primal", false]], "idol::solution::primal::norm (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal4normEd", false]], "idol::solution::primal::normalize (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal9normalizeEd", false]], "idol::solution::primal::objective_value (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal15objective_valueEv", false]], "idol::solution::primal::operator*= (c++ function)": [[47, "_CPPv4N4idol8Solution6PrimalmLEd", false]], "idol::solution::primal::operator+= (c++ function)": [[47, "_CPPv4N4idol8Solution6PrimalpLERK6Primal", false]], "idol::solution::primal::reason (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal6reasonEv", false]], "idol::solution::primal::reset_objective_value (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal21reset_objective_valueEv", false]], "idol::solution::primal::round (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal5roundEj", false]], "idol::solution::primal::set (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal3setERK3Vard", false]], "idol::solution::primal::set_objective_value (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal19set_objective_valueEd", false]], "idol::solution::primal::set_reason (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal10set_reasonE14SolutionReason", false]], "idol::solution::primal::set_status (c++ function)": [[47, "_CPPv4N4idol8Solution6Primal10set_statusE14SolutionStatus", false]], "idol::solution::primal::size (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal4sizeEv", false]], "idol::solution::primal::status (c++ function)": [[47, "_CPPv4NK4idol8Solution6Primal6statusEv", false]], "idol::strongbranching (c++ class)": [[20, "_CPPv4N4idol15StrongBranchingE", false]], "idol::strongbranching::add_phase (c++ function)": [[20, "_CPPv4N4idol15StrongBranching9add_phaseERK24StrongBranchingPhaseTypejj", false]], "idol::strongbranching::strategy (c++ class)": [[20, "_CPPv4I0EN4idol15StrongBranching8StrategyE", false]], "idol::strongbranching::strategy::clone (c++ function)": [[20, "_CPPv4NK4idol15StrongBranching8Strategy5cloneEv", false]], "idol::strongbranching::strategy::operator() (c++ function)": [[20, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [20, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::strongbranching::strategy::strategy (c++ function)": [[20, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK15StrongBranching", false], [20, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK8StrategyI9NodeInfoTE", false], [20, "_CPPv4N4idol15StrongBranching8Strategy8StrategyEv", false]], "idol::strongbranching::strongbranching (c++ function)": [[20, "_CPPv4I0EN4idol15StrongBranching15StrongBranchingE9IteratorT9IteratorT", false], [20, "_CPPv4N4idol15StrongBranching15StrongBranchingEv", false]], "idol::strongbranching::with_max_n_variables (c++ function)": [[20, "_CPPv4N4idol15StrongBranching20with_max_n_variablesEj", false]], "idol::strongbranching::with_node_scoring_function (c++ function)": [[20, "_CPPv4N4idol15StrongBranching26with_node_scoring_functionERK17NodeScoreFunction", false]], "idol::tempctr (c++ class)": [[48, "_CPPv4N4idol7TempCtrE", false]], "idol::tempctr::is_violated (c++ function)": [[48, "_CPPv4NK4idol7TempCtr11is_violatedERKN8Solution6PrimalE", false]], "idol::tempctr::operator= (c++ function)": [[48, "_CPPv4N4idol7TempCtraSERK7TempCtr", false], [48, "_CPPv4N4idol7TempCtraSERR7TempCtr", false]], "idol::tempctr::row (c++ function)": [[48, "_CPPv4N4idol7TempCtr3rowEv", false], [48, "_CPPv4NK4idol7TempCtr3rowEv", false]], "idol::tempctr::set_type (c++ function)": [[48, "_CPPv4N4idol7TempCtr8set_typeE7CtrType", false]], "idol::tempctr::tempctr (c++ function)": [[48, "_CPPv4N4idol7TempCtr7TempCtrERK7TempCtr", false], [48, "_CPPv4N4idol7TempCtr7TempCtrERR3Row7CtrType", false], [48, "_CPPv4N4idol7TempCtr7TempCtrERR7TempCtr", false], [48, "_CPPv4N4idol7TempCtr7TempCtrEv", false]], "idol::tempctr::type (c++ function)": [[48, "_CPPv4NK4idol7TempCtr4typeEv", false]], "idol::tempvar (c++ class)": [[49, "_CPPv4N4idol7TempVarE", false]], "idol::tempvar::column (c++ function)": [[49, "_CPPv4N4idol7TempVar6columnEv", false], [49, "_CPPv4NK4idol7TempVar6columnEv", false]], "idol::tempvar::lb (c++ function)": [[49, "_CPPv4NK4idol7TempVar2lbEv", false]], "idol::tempvar::operator= (c++ function)": [[49, "_CPPv4N4idol7TempVaraSERK7TempVar", false], [49, "_CPPv4N4idol7TempVaraSERR7TempVar", false]], "idol::tempvar::set_lb (c++ function)": [[49, "_CPPv4N4idol7TempVar6set_lbEd", false]], "idol::tempvar::set_type (c++ function)": [[49, "_CPPv4N4idol7TempVar8set_typeE7VarType", false]], "idol::tempvar::set_ub (c++ function)": [[49, "_CPPv4N4idol7TempVar6set_ubEd", false]], "idol::tempvar::tempvar (c++ function)": [[49, "_CPPv4N4idol7TempVar7TempVarERK7TempVar", false], [49, "_CPPv4N4idol7TempVar7TempVarERR7TempVar", false], [49, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", false], [49, "_CPPv4N4idol7TempVar7TempVarEv", false]], "idol::tempvar::type (c++ function)": [[49, "_CPPv4NK4idol7TempVar4typeEv", false]], "idol::tempvar::ub (c++ function)": [[49, "_CPPv4NK4idol7TempVar2ubEv", false]], "idol::tolerance (c++ type)": [[76, "_CPPv4N4idol9ToleranceE", false]], "idol::tolerance::digits (c++ member)": [[76, "_CPPv4N4idol9Tolerance6DigitsE", false]], "idol::tolerance::feasibility (c++ member)": [[76, "_CPPv4N4idol9Tolerance11FeasibilityE", false]], "idol::tolerance::integer (c++ member)": [[76, "_CPPv4N4idol9Tolerance7IntegerE", false]], "idol::tolerance::mipabsolutegap (c++ member)": [[76, "_CPPv4N4idol9Tolerance14MIPAbsoluteGapE", false]], "idol::tolerance::miprelativegap (c++ member)": [[76, "_CPPv4N4idol9Tolerance14MIPRelativeGapE", false]], "idol::tolerance::optimality (c++ member)": [[76, "_CPPv4N4idol9Tolerance10OptimalityE", false]], "idol::tolerance::sparsity (c++ member)": [[76, "_CPPv4N4idol9Tolerance8SparsityE", false]], "idol::uniformlyrandom (c++ class)": [[21, "_CPPv4N4idol15UniformlyRandomE", false]], "idol::uniformlyrandom::strategy (c++ class)": [[21, "_CPPv4I0EN4idol15UniformlyRandom8StrategyE", false]], "idol::uniformlyrandom::strategy::clone (c++ function)": [[21, "_CPPv4NK4idol15UniformlyRandom8Strategy5cloneEv", false]], "idol::uniformlyrandom::strategy::operator() (c++ function)": [[21, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", false], [21, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", false]], "idol::uniformlyrandom::strategy::strategy (c++ function)": [[21, "_CPPv4N4idol15UniformlyRandom8Strategy8StrategyERK15UniformlyRandom", false], [21, "_CPPv4N4idol15UniformlyRandom8Strategy8StrategyEv", false]], "idol::uniformlyrandom::uniformlyrandom (c++ function)": [[21, "_CPPv4I0EN4idol15UniformlyRandom15UniformlyRandomE9IteratorT9IteratorT", false], [21, "_CPPv4N4idol15UniformlyRandom15UniformlyRandomEv", false]], "idol::uniformlyrandom::with_seed (c++ function)": [[21, "_CPPv4N4idol15UniformlyRandom9with_seedEj", false]], "idol::usercutcallback (c++ class)": [[73, "_CPPv4N4idol15UserCutCallbackE", false]], "idol::usercutcallback::clone (c++ function)": [[73, "_CPPv4NK4idol15UserCutCallback5cloneEv", false]], "idol::usercutcallback::operator() (c++ function)": [[73, "_CPPv4N4idol15UserCutCallbackclEv", false]], "idol::usercutcallback::strategy (c++ class)": [[73, "_CPPv4N4idol15UserCutCallback8StrategyE", false]], "idol::usercutcallback::strategy::strategy (c++ function)": [[73, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", false]], "idol::usercutcallback::usercutcallback (c++ function)": [[73, "_CPPv4N4idol15UserCutCallback15UserCutCallbackERK5Model7TempCtr", false]], "idol::usercutcallback::with_separation_optimizer (c++ function)": [[73, "_CPPv4N4idol15UserCutCallback25with_separation_optimizerERK16OptimizerFactory", false]], "idol::var (c++ class)": [[50, "_CPPv4N4idol3VarE", false]], "idol::var::get (c++ function)": [[50, "_CPPv4NK4idol3Var3getERK10AnnotationI3Var6ValueTE", false]], "idol::var::id (c++ function)": [[50, "_CPPv4NK4idol3Var2idEv", false]], "idol::var::is_in (c++ function)": [[50, "_CPPv4NK4idol3Var5is_inERK5Model", false]], "idol::var::make_vector (c++ function)": [[50, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", false]], "idol::var::name (c++ function)": [[50, "_CPPv4NK4idol3Var4nameEv", false]], "idol::var::operator= (c++ function)": [[50, "_CPPv4N4idol3VaraSERK3Var", false], [50, "_CPPv4N4idol3VaraSERR3Var", false]], "idol::var::set (c++ function)": [[50, "_CPPv4NK4idol3Var3setERK10AnnotationI3Var6ValueTEDpRR5ArgsT", false]], "idol::var::var (c++ function)": [[50, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", false], [50, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", false], [50, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", false], [50, "_CPPv4N4idol3Var3VarERK3Var", false], [50, "_CPPv4N4idol3Var3VarERR3Var", false]], "idol::vartype (c++ enum)": [[78, "_CPPv4N4idol7VarTypeE", false]], "idol::vartype::binary (c++ enumerator)": [[78, "_CPPv4N4idol7VarType6BinaryE", false]], "idol::vartype::continuous (c++ enumerator)": [[78, "_CPPv4N4idol7VarType10ContinuousE", false]], "idol::vartype::integer (c++ enumerator)": [[78, "_CPPv4N4idol7VarType7IntegerE", false]], "idol::worstbound (c++ class)": [[14, "_CPPv4N4idol10WorstBoundE", false]], "idol::worstbound::strategy (c++ class)": [[14, "_CPPv4I0EN4idol10WorstBound8StrategyE", false]], "idol::worstbound::strategy::clone (c++ function)": [[14, "_CPPv4NK4idol10WorstBound8Strategy5cloneEv", false]], "idol::worstbound::strategy::operator() (c++ function)": [[14, "_CPPv4NK4idol10WorstBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", false]], "idol::worstbound::strategy::strategy (c++ function)": [[14, "_CPPv4N4idol10WorstBound8Strategy8StrategyERK10WorstBound", false]]}, "objects": {"": [[76, 0, 1, "_CPPv44idol", "idol"], [35, 1, 1, "_CPPv4I00EN4idol10AnnotationE", "idol::Annotation"], [35, 2, 1, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::Annotation"], [35, 2, 1, "_CPPv4N4idol10Annotation10AnnotationER3EnvNSt6stringE", "idol::Annotation::Annotation"], [35, 3, 1, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::Annotation::ArgsT"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::Annotation::t_args"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::Annotation::t_env"], [35, 4, 1, "_CPPv4N4idol10Annotation10AnnotationER3EnvNSt6stringE", "idol::Annotation::Annotation::t_env"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation10AnnotationER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::Annotation::t_name"], [35, 4, 1, "_CPPv4N4idol10Annotation10AnnotationER3EnvNSt6stringE", "idol::Annotation::Annotation::t_name"], [35, 3, 1, "_CPPv4I00EN4idol10AnnotationE", "idol::Annotation::ObjectT"], [35, 3, 1, "_CPPv4I00EN4idol10AnnotationE", "idol::Annotation::ValueT"], [35, 2, 1, "_CPPv4NK4idol10Annotation13default_valueEv", "idol::Annotation::default_value"], [35, 2, 1, "_CPPv4N4idol10Annotation4freeEv", "idol::Annotation::free"], [35, 2, 1, "_CPPv4NK4idol10Annotation11has_defaultEv", "idol::Annotation::has_default"], [35, 2, 1, "_CPPv4NK4idol10Annotation2idEv", "idol::Annotation::id"], [35, 2, 1, "_CPPv4NK4idol10Annotation17is_ctr_annotationEv", "idol::Annotation::is_ctr_annotation"], [35, 2, 1, "_CPPv4NK4idol10Annotation17is_var_annotationEv", "idol::Annotation::is_var_annotation"], [35, 2, 1, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::make_with_default_value"], [35, 3, 1, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::make_with_default_value::ArgsT"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::make_with_default_value::t_args"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::make_with_default_value::t_env"], [35, 4, 1, "_CPPv4IDpEN4idol10Annotation23make_with_default_valueE10AnnotationI7ObjectT6ValueTER3EnvNSt6stringEDpRR5ArgsT", "idol::Annotation::make_with_default_value::t_name"], [35, 2, 1, "_CPPv4NK4idol10Annotation4nameEv", "idol::Annotation::name"], [10, 1, 1, "_CPPv4N4idol9BestBoundE", "idol::BestBound"], [10, 1, 1, "_CPPv4I0EN4idol9BestBound8StrategyE", "idol::BestBound::Strategy"], [10, 3, 1, "_CPPv4I0EN4idol9BestBound8StrategyE", "idol::BestBound::Strategy::NodeT"], [10, 2, 1, "_CPPv4N4idol9BestBound8Strategy8StrategyERK9BestBound", "idol::BestBound::Strategy::Strategy"], [10, 4, 1, "_CPPv4N4idol9BestBound8Strategy8StrategyERK9BestBound", "idol::BestBound::Strategy::Strategy::t_parent"], [10, 2, 1, "_CPPv4NK4idol9BestBound8Strategy5cloneEv", "idol::BestBound::Strategy::clone"], [10, 2, 1, "_CPPv4NK4idol9BestBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BestBound::Strategy::operator()"], [10, 4, 1, "_CPPv4NK4idol9BestBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BestBound::Strategy::operator()::t_parent"], [11, 1, 1, "_CPPv4N4idol12BestEstimateE", "idol::BestEstimate"], [11, 1, 1, "_CPPv4I0EN4idol12BestEstimate8StrategyE", "idol::BestEstimate::Strategy"], [11, 3, 1, "_CPPv4I0EN4idol12BestEstimate8StrategyE", "idol::BestEstimate::Strategy::NodeT"], [11, 2, 1, "_CPPv4N4idol12BestEstimate8Strategy8StrategyERK12BestEstimate", "idol::BestEstimate::Strategy::Strategy"], [11, 4, 1, "_CPPv4N4idol12BestEstimate8Strategy8StrategyERK12BestEstimate", "idol::BestEstimate::Strategy::Strategy::t_parent"], [11, 2, 1, "_CPPv4NK4idol12BestEstimate8Strategy5cloneEv", "idol::BestEstimate::Strategy::clone"], [11, 2, 1, "_CPPv4NK4idol12BestEstimate8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BestEstimate::Strategy::operator()"], [11, 4, 1, "_CPPv4NK4idol12BestEstimate8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BestEstimate::Strategy::operator()::t_parent"], [52, 1, 1, "_CPPv4N4idol7Bilevel4MibSE", "idol::Bilevel::MibS"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS4MibSEN7Bilevel11DescriptionE", "idol::Bilevel::MibS::MibS"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS4MibSERK4MibS", "idol::Bilevel::MibS::MibS"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS4MibSERR4MibS", "idol::Bilevel::MibS::MibS"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS4MibSEN7Bilevel11DescriptionE", "idol::Bilevel::MibS::MibS::t_description"], [52, 2, 1, "_CPPv4I0EN4idol7Bilevel4MibS2asER1Tv", "idol::Bilevel::MibS::as"], [52, 2, 1, "_CPPv4I0ENK4idol7Bilevel4MibS2asERK1Tv", "idol::Bilevel::MibS::as"], [52, 3, 1, "_CPPv4I0EN4idol7Bilevel4MibS2asER1Tv", "idol::Bilevel::MibS::as::T"], [52, 3, 1, "_CPPv4I0ENK4idol7Bilevel4MibS2asERK1Tv", "idol::Bilevel::MibS::as::T"], [52, 2, 1, "_CPPv4NK4idol7Bilevel4MibS5cloneEv", "idol::Bilevel::MibS::clone"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEERKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional::t_conditional_value"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEERKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional::t_conditional_value"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEERKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional::t_else"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional::t_if"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS11conditionalEbRKNSt8functionIFvR4MibSEEERKNSt8functionIFvR4MibSEEE", "idol::Bilevel::MibS::conditional::t_if"], [52, 2, 1, "_CPPv4I0ENK4idol7Bilevel4MibS2isEbv", "idol::Bilevel::MibS::is"], [52, 3, 1, "_CPPv4I0ENK4idol7Bilevel4MibS2isEbv", "idol::Bilevel::MibS::is::T"], [52, 2, 1, "_CPPv4NK4idol7Bilevel4MibSclERK5Model", "idol::Bilevel::MibS::operator()"], [52, 4, 1, "_CPPv4NK4idol7Bilevel4MibSclERK5Model", "idol::Bilevel::MibS::operator()::t_model"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibSaSERK4MibS", "idol::Bilevel::MibS::operator="], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibSaSERR4MibS", "idol::Bilevel::MibS::operator="], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS27with_absolute_gap_toleranceEd", "idol::Bilevel::MibS::with_absolute_gap_tolerance"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS27with_absolute_gap_toleranceEd", "idol::Bilevel::MibS::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS20with_best_bound_stopEd", "idol::Bilevel::MibS::with_best_bound_stop"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS20with_best_bound_stopEd", "idol::Bilevel::MibS::with_best_bound_stop::t_best_bound_stop"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS18with_best_obj_stopEd", "idol::Bilevel::MibS::with_best_obj_stop"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS18with_best_obj_stopEd", "idol::Bilevel::MibS::with_best_obj_stop::t_user_best_obj"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS33with_infeasible_or_unbounded_infoEb", "idol::Bilevel::MibS::with_infeasible_or_unbounded_info"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS33with_infeasible_or_unbounded_infoEb", "idol::Bilevel::MibS::with_infeasible_or_unbounded_info::t_value"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS20with_iteration_limitEj", "idol::Bilevel::MibS::with_iteration_limit"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS20with_iteration_limitEj", "idol::Bilevel::MibS::with_iteration_limit::t_iteration_count_limit"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS9with_logsEb", "idol::Bilevel::MibS::with_logs"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS9with_logsEb", "idol::Bilevel::MibS::with_logs::t_value"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS13with_presolveEb", "idol::Bilevel::MibS::with_presolve"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS13with_presolveEb", "idol::Bilevel::MibS::with_presolve::t_value"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS27with_relative_gap_toleranceEd", "idol::Bilevel::MibS::with_relative_gap_tolerance"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS27with_relative_gap_toleranceEd", "idol::Bilevel::MibS::with_relative_gap_tolerance::t_relative_gap_tolerance"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS17with_thread_limitEj", "idol::Bilevel::MibS::with_thread_limit"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS17with_thread_limitEj", "idol::Bilevel::MibS::with_thread_limit::t_max_n_threads"], [52, 2, 1, "_CPPv4N4idol7Bilevel4MibS15with_time_limitEd", "idol::Bilevel::MibS::with_time_limit"], [52, 4, 1, "_CPPv4N4idol7Bilevel4MibS15with_time_limitEd", "idol::Bilevel::MibS::with_time_limit::t_time_limit"], [78, 5, 1, "_CPPv4N4idol7VarType6BinaryE", "idol::Binary"], [0, 1, 1, "_CPPv4I0EN4idol14BranchAndBoundE", "idol::BranchAndBound"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound14BranchAndBoundERK14BranchAndBound", "idol::BranchAndBound::BranchAndBound"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound14BranchAndBoundERR14BranchAndBound", "idol::BranchAndBound::BranchAndBound"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound14BranchAndBoundEv", "idol::BranchAndBound::BranchAndBound"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound14BranchAndBoundERK14BranchAndBound", "idol::BranchAndBound::BranchAndBound::t_rhs"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBoundE", "idol::BranchAndBound::NodeT"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound12add_callbackERK15CallbackFactory", "idol::BranchAndBound::add_callback"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound12add_callbackERK29BranchAndBoundCallbackFactoryI5NodeTE", "idol::BranchAndBound::add_callback"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound12add_callbackERK15CallbackFactory", "idol::BranchAndBound::add_callback::t_callback"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound12add_callbackERK29BranchAndBoundCallbackFactoryI5NodeTE", "idol::BranchAndBound::add_callback::t_callback"], [0, 2, 1, "_CPPv4I0EN4idol14BranchAndBound2asER1Tv", "idol::BranchAndBound::as"], [0, 2, 1, "_CPPv4I0ENK4idol14BranchAndBound2asERK1Tv", "idol::BranchAndBound::as"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBound2asER1Tv", "idol::BranchAndBound::as::T"], [0, 3, 1, "_CPPv4I0ENK4idol14BranchAndBound2asERK1Tv", "idol::BranchAndBound::as::T"], [0, 2, 1, "_CPPv4NK4idol14BranchAndBound5cloneEv", "idol::BranchAndBound::clone"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEERKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional::t_conditional_value"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEERKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional::t_conditional_value"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEERKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional::t_else"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional::t_if"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11conditionalEbRKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEERKNSt8functionIFvR14BranchAndBoundIN4idol15DefaultNodeInfoEEEEE", "idol::BranchAndBound::conditional::t_if"], [0, 2, 1, "_CPPv4I0ENK4idol14BranchAndBound2isEbv", "idol::BranchAndBound::is"], [0, 3, 1, "_CPPv4I0ENK4idol14BranchAndBound2isEbv", "idol::BranchAndBound::is::T"], [0, 0, 1, "_CPPv4I00EN4idol14BranchAndBound20only_if_has_StrategyE", "idol::BranchAndBound::only_if_has_Strategy"], [0, 3, 1, "_CPPv4I00EN4idol14BranchAndBound20only_if_has_StrategyE", "idol::BranchAndBound::only_if_has_Strategy::ReturnT"], [0, 3, 1, "_CPPv4I00EN4idol14BranchAndBound20only_if_has_StrategyE", "idol::BranchAndBound::only_if_has_Strategy::T"], [0, 2, 1, "_CPPv4NK4idol14BranchAndBoundclERK5Model", "idol::BranchAndBound::operator()"], [0, 4, 1, "_CPPv4NK4idol14BranchAndBoundclERK5Model", "idol::BranchAndBound::operator()::t_model"], [0, 2, 1, "_CPPv4N4idol14BranchAndBoundpLERK16OptimizerFactory", "idol::BranchAndBound::operator+="], [0, 4, 1, "_CPPv4N4idol14BranchAndBoundpLERK16OptimizerFactory", "idol::BranchAndBound::operator+=::t_node_optimizer"], [0, 2, 1, "_CPPv4N4idol14BranchAndBoundaSERK14BranchAndBound", "idol::BranchAndBound::operator="], [0, 2, 1, "_CPPv4N4idol14BranchAndBoundaSERR14BranchAndBound", "idol::BranchAndBound::operator="], [0, 2, 1, "_CPPv4N4idol14BranchAndBound18set_node_optimizerERK16OptimizerFactory", "idol::BranchAndBound::set_node_optimizer"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound18set_node_optimizerERK16OptimizerFactory", "idol::BranchAndBound::set_node_optimizer::t_node_optimizer"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound27with_absolute_gap_toleranceEd", "idol::BranchAndBound::with_absolute_gap_tolerance"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound27with_absolute_gap_toleranceEd", "idol::BranchAndBound::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound20with_best_bound_stopEd", "idol::BranchAndBound::with_best_bound_stop"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound20with_best_bound_stopEd", "idol::BranchAndBound::with_best_bound_stop::t_best_bound_stop"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound18with_best_obj_stopEd", "idol::BranchAndBound::with_best_obj_stop"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound18with_best_obj_stopEd", "idol::BranchAndBound::with_best_obj_stop::t_user_best_obj"], [0, 2, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE21BranchingRuleFactoryTERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule"], [0, 2, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE21BranchingRuleFactoryTEERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound19with_branching_ruleERK20BranchingRuleFactoryI5NodeTE", "idol::BranchAndBound::with_branching_rule"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE21BranchingRuleFactoryTERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule::BranchingRuleFactoryT"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE21BranchingRuleFactoryTEERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule::BranchingRuleFactoryT"], [0, 4, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE21BranchingRuleFactoryTERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule::t_branching_rule"], [0, 4, 1, "_CPPv4I0EN4idol14BranchAndBound19with_branching_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE21BranchingRuleFactoryTEERK21BranchingRuleFactoryT", "idol::BranchAndBound::with_branching_rule::t_branching_rule"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound19with_branching_ruleERK20BranchingRuleFactoryI5NodeTE", "idol::BranchAndBound::with_branching_rule::t_branching_rule"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound33with_infeasible_or_unbounded_infoEb", "idol::BranchAndBound::with_infeasible_or_unbounded_info"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound33with_infeasible_or_unbounded_infoEb", "idol::BranchAndBound::with_infeasible_or_unbounded_info::t_value"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound20with_iteration_limitEj", "idol::BranchAndBound::with_iteration_limit"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound20with_iteration_limitEj", "idol::BranchAndBound::with_iteration_limit::t_iteration_count_limit"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound11with_loggerERKN4Logs14BranchAndBound7FactoryI5NodeTEE", "idol::BranchAndBound::with_logger"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound11with_loggerERKN4Logs14BranchAndBound7FactoryI5NodeTEE", "idol::BranchAndBound::with_logger::t_log_factory"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound9with_logsEb", "idol::BranchAndBound::with_logs"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound9with_logsEb", "idol::BranchAndBound::with_logs::t_value"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound19with_node_optimizerERK16OptimizerFactory", "idol::BranchAndBound::with_node_optimizer"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound19with_node_optimizerERK16OptimizerFactory", "idol::BranchAndBound::with_node_optimizer::t_node_optimizer"], [0, 2, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE25NodeSelectionRuleFactoryTERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule"], [0, 2, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE25NodeSelectionRuleFactoryTEERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound24with_node_selection_ruleERK24NodeSelectionRuleFactoryI5NodeTE", "idol::BranchAndBound::with_node_selection_rule"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE25NodeSelectionRuleFactoryTERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule::NodeSelectionRuleFactoryT"], [0, 3, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE25NodeSelectionRuleFactoryTEERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule::NodeSelectionRuleFactoryT"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound24with_node_selection_ruleERK24NodeSelectionRuleFactoryI5NodeTE", "idol::BranchAndBound::with_node_selection_rule::t_node_selection"], [0, 4, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleE20only_if_has_StrategyIR14BranchAndBoundI5NodeTE25NodeSelectionRuleFactoryTERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule::t_node_selection_rule"], [0, 4, 1, "_CPPv4I0EN4idol14BranchAndBound24with_node_selection_ruleEN4idol14BranchAndBoundI5NodeTE20only_if_has_StrategyIRN4idol14BranchAndBoundI5NodeTEE25NodeSelectionRuleFactoryTEERK25NodeSelectionRuleFactoryT", "idol::BranchAndBound::with_node_selection_rule::t_node_selection_rule"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound13with_presolveEb", "idol::BranchAndBound::with_presolve"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound13with_presolveEb", "idol::BranchAndBound::with_presolve::t_value"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound27with_relative_gap_toleranceEd", "idol::BranchAndBound::with_relative_gap_tolerance"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound27with_relative_gap_toleranceEd", "idol::BranchAndBound::with_relative_gap_tolerance::t_relative_gap_tolerance"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound12with_scalingEb", "idol::BranchAndBound::with_scaling"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound12with_scalingEb", "idol::BranchAndBound::with_scaling::t_value"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound18with_subtree_depthEj", "idol::BranchAndBound::with_subtree_depth"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound18with_subtree_depthEj", "idol::BranchAndBound::with_subtree_depth::t_depth"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound17with_thread_limitEj", "idol::BranchAndBound::with_thread_limit"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound17with_thread_limitEj", "idol::BranchAndBound::with_thread_limit::t_max_n_threads"], [0, 2, 1, "_CPPv4N4idol14BranchAndBound15with_time_limitEd", "idol::BranchAndBound::with_time_limit"], [0, 4, 1, "_CPPv4N4idol14BranchAndBound15with_time_limitEd", "idol::BranchAndBound::with_time_limit::t_time_limit"], [1, 1, 1, "_CPPv4I0EN4idol22BranchAndBoundCallbackE", "idol::BranchAndBoundCallback"], [1, 3, 1, "_CPPv4I0EN4idol22BranchAndBoundCallbackE", "idol::BranchAndBoundCallback::NodeInfoT"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback12add_lazy_cutERK7TempCtr", "idol::BranchAndBoundCallback::add_lazy_cut"], [1, 4, 1, "_CPPv4N4idol22BranchAndBoundCallback12add_lazy_cutERK7TempCtr", "idol::BranchAndBoundCallback::add_lazy_cut::t_cut"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback12add_user_cutERK7TempCtr", "idol::BranchAndBoundCallback::add_user_cut"], [1, 4, 1, "_CPPv4N4idol22BranchAndBoundCallback12add_user_cutERK7TempCtr", "idol::BranchAndBoundCallback::add_user_cut::t_cut"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback10initializeEv", "idol::BranchAndBoundCallback::initialize"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback21log_after_terminationEv", "idol::BranchAndBoundCallback::log_after_termination"], [1, 2, 1, "_CPPv4NK4idol22BranchAndBoundCallback4nodeEv", "idol::BranchAndBoundCallback::node"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallbackclE13CallbackEvent", "idol::BranchAndBoundCallback::operator()"], [1, 4, 1, "_CPPv4N4idol22BranchAndBoundCallbackclE13CallbackEvent", "idol::BranchAndBoundCallback::operator()::t_event"], [1, 2, 1, "_CPPv4NK4idol22BranchAndBoundCallback14original_modelEv", "idol::BranchAndBoundCallback::original_model"], [1, 2, 1, "_CPPv4NK4idol22BranchAndBoundCallback10relaxationEv", "idol::BranchAndBoundCallback::relaxation"], [1, 2, 1, "_CPPv4NK4idol22BranchAndBoundCallback20side_effect_registryEv", "idol::BranchAndBoundCallback::side_effect_registry"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback12submit_boundEd", "idol::BranchAndBoundCallback::submit_bound"], [1, 4, 1, "_CPPv4N4idol22BranchAndBoundCallback12submit_boundEd", "idol::BranchAndBoundCallback::submit_bound::t_bound"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallback25submit_heuristic_solutionEP9NodeInfoT", "idol::BranchAndBoundCallback::submit_heuristic_solution"], [1, 4, 1, "_CPPv4N4idol22BranchAndBoundCallback25submit_heuristic_solutionEP9NodeInfoT", "idol::BranchAndBoundCallback::submit_heuristic_solution::t_info"], [1, 2, 1, "_CPPv4NK4idol22BranchAndBoundCallback4timeEv", "idol::BranchAndBoundCallback::time"], [1, 2, 1, "_CPPv4N4idol22BranchAndBoundCallbackD0Ev", "idol::BranchAndBoundCallback::~BranchAndBoundCallback"], [2, 1, 1, "_CPPv4I0EN4idol29BranchAndBoundCallbackFactoryE", "idol::BranchAndBoundCallbackFactory"], [2, 3, 1, "_CPPv4I0EN4idol29BranchAndBoundCallbackFactoryE", "idol::BranchAndBoundCallbackFactory::NodeInfoT"], [2, 2, 1, "_CPPv4NK4idol29BranchAndBoundCallbackFactory5cloneEv", "idol::BranchAndBoundCallbackFactory::clone"], [2, 2, 1, "_CPPv4N4idol29BranchAndBoundCallbackFactoryclEv", "idol::BranchAndBoundCallbackFactory::operator()"], [2, 2, 1, "_CPPv4N4idol29BranchAndBoundCallbackFactoryD0Ev", "idol::BranchAndBoundCallbackFactory::~BranchAndBoundCallbackFactory"], [12, 1, 1, "_CPPv4N4idol12BreadthFirstE", "idol::BreadthFirst"], [12, 1, 1, "_CPPv4I0EN4idol12BreadthFirst8StrategyE", "idol::BreadthFirst::Strategy"], [12, 3, 1, "_CPPv4I0EN4idol12BreadthFirst8StrategyE", "idol::BreadthFirst::Strategy::NodeT"], [12, 2, 1, "_CPPv4N4idol12BreadthFirst8Strategy8StrategyERK12BreadthFirst", "idol::BreadthFirst::Strategy::Strategy"], [12, 4, 1, "_CPPv4N4idol12BreadthFirst8Strategy8StrategyERK12BreadthFirst", "idol::BreadthFirst::Strategy::Strategy::t_parent"], [12, 2, 1, "_CPPv4NK4idol12BreadthFirst8Strategy5cloneEv", "idol::BreadthFirst::Strategy::clone"], [12, 2, 1, "_CPPv4NK4idol12BreadthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BreadthFirst::Strategy::operator()"], [12, 4, 1, "_CPPv4NK4idol12BreadthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::BreadthFirst::Strategy::operator()::t_parent"], [70, 1, 1, "_CPPv4N4idol8CallbackE", "idol::Callback"], [70, 2, 1, "_CPPv4N4idol8Callback12add_lazy_cutERK7TempCtr", "idol::Callback::add_lazy_cut"], [70, 4, 1, "_CPPv4N4idol8Callback12add_lazy_cutERK7TempCtr", "idol::Callback::add_lazy_cut::t_cut"], [70, 2, 1, "_CPPv4N4idol8Callback12add_user_cutERK7TempCtr", "idol::Callback::add_user_cut"], [70, 4, 1, "_CPPv4N4idol8Callback12add_user_cutERK7TempCtr", "idol::Callback::add_user_cut::t_cut"], [70, 2, 1, "_CPPv4NK4idol8Callback10best_boundEv", "idol::Callback::best_bound"], [70, 2, 1, "_CPPv4NK4idol8Callback8best_objEv", "idol::Callback::best_obj"], [70, 2, 1, "_CPPv4N4idol8CallbackclE13CallbackEvent", "idol::Callback::operator()"], [70, 4, 1, "_CPPv4N4idol8CallbackclE13CallbackEvent", "idol::Callback::operator()::t_event"], [70, 2, 1, "_CPPv4NK4idol8Callback14original_modelEv", "idol::Callback::original_model"], [70, 2, 1, "_CPPv4NK4idol8Callback15primal_solutionEv", "idol::Callback::primal_solution"], [70, 2, 1, "_CPPv4N4idol8Callback25submit_heuristic_solutionERKN8Solution6PrimalE", "idol::Callback::submit_heuristic_solution"], [70, 4, 1, "_CPPv4N4idol8Callback25submit_heuristic_solutionERKN8Solution6PrimalE", "idol::Callback::submit_heuristic_solution::t_solution"], [70, 2, 1, "_CPPv4N4idol8Callback9terminateEv", "idol::Callback::terminate"], [70, 2, 1, "_CPPv4NK4idol8Callback4timeEv", "idol::Callback::time"], [70, 2, 1, "_CPPv4N4idol8CallbackD0Ev", "idol::Callback::~Callback"], [81, 6, 1, "_CPPv4N4idol13CallbackEventE", "idol::CallbackEvent"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent17IncumbentSolutionE", "idol::CallbackEvent::IncumbentSolution"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent15InvalidSolutionE", "idol::CallbackEvent::InvalidSolution"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent10NodeLoadedE", "idol::CallbackEvent::NodeLoaded"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent14PrunedSolutionE", "idol::CallbackEvent::PrunedSolution"], [71, 1, 1, "_CPPv4N4idol15CallbackFactoryE", "idol::CallbackFactory"], [71, 2, 1, "_CPPv4NK4idol15CallbackFactory5cloneEv", "idol::CallbackFactory::clone"], [71, 2, 1, "_CPPv4N4idol15CallbackFactoryclEv", "idol::CallbackFactory::operator()"], [71, 2, 1, "_CPPv4N4idol15CallbackFactoryD0Ev", "idol::CallbackFactory::~CallbackFactory"], [36, 1, 1, "_CPPv4N4idol6ColumnE", "idol::Column"], [36, 2, 1, "_CPPv4N4idol6Column6ColumnERK6Column", "idol::Column::Column"], [36, 2, 1, "_CPPv4N4idol6Column6ColumnERK8Constant", "idol::Column::Column"], [36, 2, 1, "_CPPv4N4idol6Column6ColumnERR6Column", "idol::Column::Column"], [36, 2, 1, "_CPPv4N4idol6Column6ColumnERR8Constant", "idol::Column::Column"], [36, 2, 1, "_CPPv4N4idol6Column6ColumnEv", "idol::Column::Column"], [36, 4, 1, "_CPPv4N4idol6Column6ColumnERK8Constant", "idol::Column::Column::t_obj"], [36, 4, 1, "_CPPv4N4idol6Column6ColumnERR8Constant", "idol::Column::Column::t_obj"], [36, 4, 1, "_CPPv4N4idol6Column6ColumnERK6Column", "idol::Column::Column::t_src"], [36, 4, 1, "_CPPv4N4idol6Column6ColumnERR6Column", "idol::Column::Column::t_src"], [36, 7, 1, "_CPPv4N4idol6Column11EmptyColumnE", "idol::Column::EmptyColumn"], [36, 2, 1, "_CPPv4NK4idol6Column3fixERKN8Solution6PrimalE", "idol::Column::fix"], [36, 4, 1, "_CPPv4NK4idol6Column3fixERKN8Solution6PrimalE", "idol::Column::fix::t_primals"], [36, 2, 1, "_CPPv4N4idol6Column6linearEv", "idol::Column::linear"], [36, 2, 1, "_CPPv4NK4idol6Column6linearEv", "idol::Column::linear"], [36, 2, 1, "_CPPv4N4idol6Column3objEv", "idol::Column::obj"], [36, 2, 1, "_CPPv4NK4idol6Column3objEv", "idol::Column::obj"], [36, 2, 1, "_CPPv4N4idol6Column13obj_quadraticEv", "idol::Column::obj_quadratic"], [36, 2, 1, "_CPPv4NK4idol6Column13obj_quadraticEv", "idol::Column::obj_quadratic"], [36, 2, 1, "_CPPv4N4idol6ColumnmLEd", "idol::Column::operator*="], [36, 4, 1, "_CPPv4N4idol6ColumnmLEd", "idol::Column::operator*=::t_rhs"], [36, 2, 1, "_CPPv4N4idol6ColumnpLERK6Column", "idol::Column::operator+="], [36, 4, 1, "_CPPv4N4idol6ColumnpLERK6Column", "idol::Column::operator+=::t_rhs"], [36, 2, 1, "_CPPv4N4idol6ColumnmIERK6Column", "idol::Column::operator-="], [36, 4, 1, "_CPPv4N4idol6ColumnmIERK6Column", "idol::Column::operator-=::t_rhs"], [36, 2, 1, "_CPPv4N4idol6ColumnaSERK6Column", "idol::Column::operator="], [36, 2, 1, "_CPPv4N4idol6ColumnaSERR6Column", "idol::Column::operator="], [36, 4, 1, "_CPPv4N4idol6ColumnaSERK6Column", "idol::Column::operator=::t_src"], [36, 4, 1, "_CPPv4N4idol6ColumnaSERR6Column", "idol::Column::operator=::t_src"], [36, 2, 1, "_CPPv4N4idol6Column9quadraticEv", "idol::Column::quadratic"], [36, 2, 1, "_CPPv4NK4idol6Column9quadraticEv", "idol::Column::quadratic"], [36, 2, 1, "_CPPv4N4idol6Column10set_linearERK7LinExprI3CtrE", "idol::Column::set_linear"], [36, 2, 1, "_CPPv4N4idol6Column10set_linearERR7LinExprI3CtrE", "idol::Column::set_linear"], [36, 4, 1, "_CPPv4N4idol6Column10set_linearERK7LinExprI3CtrE", "idol::Column::set_linear::t_lin_expr"], [36, 4, 1, "_CPPv4N4idol6Column10set_linearERR7LinExprI3CtrE", "idol::Column::set_linear::t_lin_expr"], [36, 2, 1, "_CPPv4N4idol6Column7set_objERK8Constant", "idol::Column::set_obj"], [36, 2, 1, "_CPPv4N4idol6Column7set_objERR8Constant", "idol::Column::set_obj"], [36, 4, 1, "_CPPv4N4idol6Column7set_objERK8Constant", "idol::Column::set_obj::t_obj"], [36, 4, 1, "_CPPv4N4idol6Column7set_objERR8Constant", "idol::Column::set_obj::t_obj"], [36, 2, 1, "_CPPv4N4idol6Column13set_quadraticERK8QuadExprI3Ctr3VarE", "idol::Column::set_quadratic"], [36, 2, 1, "_CPPv4N4idol6Column13set_quadraticERR8QuadExprI3Ctr3VarE", "idol::Column::set_quadratic"], [36, 4, 1, "_CPPv4N4idol6Column13set_quadraticERK8QuadExprI3Ctr3VarE", "idol::Column::set_quadratic::t_quad_expr"], [36, 4, 1, "_CPPv4N4idol6Column13set_quadraticERR8QuadExprI3Ctr3VarE", "idol::Column::set_quadratic::t_quad_expr"], [37, 1, 1, "_CPPv4N4idol8ConstantE", "idol::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantERK5ParamRK5Paramd", "idol::Constant::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantERK5Paramd", "idol::Constant::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantERK8Constant", "idol::Constant::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantERR8Constant", "idol::Constant::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantEd", "idol::Constant::Constant"], [37, 2, 1, "_CPPv4N4idol8Constant8ConstantEv", "idol::Constant::Constant"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantEd", "idol::Constant::Constant::t_constant"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK5Paramd", "idol::Constant::Constant::t_param"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK5ParamRK5Paramd", "idol::Constant::Constant::t_param_1"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK5ParamRK5Paramd", "idol::Constant::Constant::t_param_2"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK8Constant", "idol::Constant::Constant::t_src"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK5ParamRK5Paramd", "idol::Constant::Constant::t_value"], [37, 4, 1, "_CPPv4N4idol8Constant8ConstantERK5Paramd", "idol::Constant::Constant::t_value"], [37, 7, 1, "_CPPv4N4idol8Constant4ZeroE", "idol::Constant::Zero"], [37, 2, 1, "_CPPv4NK4idol8Constant12as_numericalEv", "idol::Constant::as_numerical"], [37, 2, 1, "_CPPv4NK4idol8Constant3fixERKN8Solution4DualE", "idol::Constant::fix"], [37, 2, 1, "_CPPv4NK4idol8Constant3fixERKN8Solution6PrimalE", "idol::Constant::fix"], [37, 4, 1, "_CPPv4NK4idol8Constant3fixERKN8Solution4DualE", "idol::Constant::fix::t_duals"], [37, 4, 1, "_CPPv4NK4idol8Constant3fixERKN8Solution6PrimalE", "idol::Constant::fix::t_primals"], [37, 2, 1, "_CPPv4NK4idol8Constant3getERK5Param", "idol::Constant::get"], [37, 2, 1, "_CPPv4NK4idol8Constant3getERK5ParamRK5Param", "idol::Constant::get"], [37, 4, 1, "_CPPv4NK4idol8Constant3getERK5Param", "idol::Constant::get::t_param"], [37, 4, 1, "_CPPv4NK4idol8Constant3getERK5ParamRK5Param", "idol::Constant::get::t_param_1"], [37, 4, 1, "_CPPv4NK4idol8Constant3getERK5ParamRK5Param", "idol::Constant::get::t_param_2"], [37, 2, 1, "_CPPv4NK4idol8Constant12is_numericalEv", "idol::Constant::is_numerical"], [37, 2, 1, "_CPPv4NK4idol8Constant7is_zeroEv", "idol::Constant::is_zero"], [37, 2, 1, "_CPPv4N4idol8Constant6linearEv", "idol::Constant::linear"], [37, 2, 1, "_CPPv4NK4idol8Constant6linearEv", "idol::Constant::linear"], [37, 2, 1, "_CPPv4N4idol8Constant23multiply_with_precisionEdj", "idol::Constant::multiply_with_precision"], [37, 4, 1, "_CPPv4N4idol8Constant23multiply_with_precisionEdj", "idol::Constant::multiply_with_precision::t_factor"], [37, 4, 1, "_CPPv4N4idol8Constant23multiply_with_precisionEdj", "idol::Constant::multiply_with_precision::t_n_digits"], [37, 2, 1, "_CPPv4N4idol8Constant38multiply_with_precision_by_power_of_10Ejj", "idol::Constant::multiply_with_precision_by_power_of_10"], [37, 4, 1, "_CPPv4N4idol8Constant38multiply_with_precision_by_power_of_10Ejj", "idol::Constant::multiply_with_precision_by_power_of_10::t_exponent"], [37, 4, 1, "_CPPv4N4idol8Constant38multiply_with_precision_by_power_of_10Ejj", "idol::Constant::multiply_with_precision_by_power_of_10::t_n_digits"], [37, 2, 1, "_CPPv4NK4idol8Constant9numericalEv", "idol::Constant::numerical"], [37, 2, 1, "_CPPv4N4idol8ConstantmLEd", "idol::Constant::operator*="], [37, 4, 1, "_CPPv4N4idol8ConstantmLEd", "idol::Constant::operator*=::t_coefficient"], [37, 2, 1, "_CPPv4N4idol8ConstantpLERK5Param", "idol::Constant::operator+="], [37, 2, 1, "_CPPv4N4idol8ConstantpLERK8Constant", "idol::Constant::operator+="], [37, 2, 1, "_CPPv4N4idol8ConstantpLEd", "idol::Constant::operator+="], [37, 4, 1, "_CPPv4N4idol8ConstantpLERK5Param", "idol::Constant::operator+=::t_term"], [37, 4, 1, "_CPPv4N4idol8ConstantpLERK8Constant", "idol::Constant::operator+=::t_term"], [37, 4, 1, "_CPPv4N4idol8ConstantpLEd", "idol::Constant::operator+=::t_term"], [37, 2, 1, "_CPPv4N4idol8ConstantmIE5Param", "idol::Constant::operator-="], [37, 2, 1, "_CPPv4N4idol8ConstantmIERK8Constant", "idol::Constant::operator-="], [37, 2, 1, "_CPPv4N4idol8ConstantmIEd", "idol::Constant::operator-="], [37, 4, 1, "_CPPv4N4idol8ConstantmIE5Param", "idol::Constant::operator-=::t_term"], [37, 4, 1, "_CPPv4N4idol8ConstantmIERK8Constant", "idol::Constant::operator-=::t_term"], [37, 4, 1, "_CPPv4N4idol8ConstantmIEd", "idol::Constant::operator-=::t_term"], [37, 2, 1, "_CPPv4N4idol8ConstantdVEd", "idol::Constant::operator/="], [37, 4, 1, "_CPPv4N4idol8ConstantdVEd", "idol::Constant::operator/=::t_coefficient"], [37, 2, 1, "_CPPv4N4idol8ConstantaSERK8Constant", "idol::Constant::operator="], [37, 2, 1, "_CPPv4N4idol8ConstantaSERR8Constant", "idol::Constant::operator="], [37, 4, 1, "_CPPv4N4idol8ConstantaSERK8Constant", "idol::Constant::operator=::t_rhs"], [37, 2, 1, "_CPPv4N4idol8Constant9quadraticEv", "idol::Constant::quadratic"], [37, 2, 1, "_CPPv4NK4idol8Constant9quadraticEv", "idol::Constant::quadratic"], [37, 2, 1, "_CPPv4N4idol8Constant5roundEv", "idol::Constant::round"], [37, 2, 1, "_CPPv4N4idol8Constant3setERK5ParamRK5Paramd", "idol::Constant::set"], [37, 2, 1, "_CPPv4N4idol8Constant3setERK5Paramd", "idol::Constant::set"], [37, 4, 1, "_CPPv4N4idol8Constant3setERK5Paramd", "idol::Constant::set::t_param"], [37, 4, 1, "_CPPv4N4idol8Constant3setERK5ParamRK5Paramd", "idol::Constant::set::t_param_1"], [37, 4, 1, "_CPPv4N4idol8Constant3setERK5ParamRK5Paramd", "idol::Constant::set::t_param_2"], [37, 4, 1, "_CPPv4N4idol8Constant3setERK5ParamRK5Paramd", "idol::Constant::set::t_value"], [37, 4, 1, "_CPPv4N4idol8Constant3setERK5Paramd", "idol::Constant::set::t_value"], [37, 2, 1, "_CPPv4N4idol8Constant13set_numericalEd", "idol::Constant::set_numerical"], [37, 4, 1, "_CPPv4N4idol8Constant13set_numericalEd", "idol::Constant::set_numerical::t_constant"], [37, 2, 1, "_CPPv4NK4idol8Constant4sizeEv", "idol::Constant::size"], [78, 5, 1, "_CPPv4N4idol7VarType10ContinuousE", "idol::Continuous"], [38, 1, 1, "_CPPv4N4idol3CtrE", "idol::Ctr"], [38, 2, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", "idol::Ctr::Ctr"], [38, 2, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", "idol::Ctr::Ctr"], [38, 2, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRK7TempCtrNSt6stringE", "idol::Ctr::Ctr"], [38, 2, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRR7TempCtrNSt6stringE", "idol::Ctr::Ctr"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", "idol::Ctr::Ctr::t_constant"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", "idol::Ctr::Ctr::t_constant"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", "idol::Ctr::Ctr::t_env"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", "idol::Ctr::Ctr::t_env"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRK7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_env"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRR7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_env"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", "idol::Ctr::Ctr::t_name"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", "idol::Ctr::Ctr::t_name"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRK7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_name"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRR7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_name"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRK7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_temp_ctr"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3EnvRR7TempCtrNSt6stringE", "idol::Ctr::Ctr::t_temp_ctr"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRK8ConstantNSt6stringE", "idol::Ctr::Ctr::t_type"], [38, 4, 1, "_CPPv4N4idol3Ctr3CtrER3Env7CtrTypeRR8ConstantNSt6stringE", "idol::Ctr::Ctr::t_type"], [38, 2, 1, "_CPPv4NK4idol3Ctr3getERK10AnnotationI3Ctr6ValueTE", "idol::Ctr::get"], [38, 4, 1, "_CPPv4NK4idol3Ctr3getERK10AnnotationI3Ctr6ValueTE", "idol::Ctr::get::t_annotation"], [38, 2, 1, "_CPPv4NK4idol3Ctr2idEv", "idol::Ctr::id"], [38, 2, 1, "_CPPv4NK4idol3Ctr5is_inERK5Model", "idol::Ctr::is_in"], [38, 4, 1, "_CPPv4NK4idol3Ctr5is_inERK5Model", "idol::Ctr::is_in::t_model"], [38, 2, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector"], [38, 3, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::I"], [38, 3, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::N"], [38, 4, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::t_constant"], [38, 4, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::t_dim"], [38, 4, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::t_env"], [38, 4, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::t_name"], [38, 4, 1, "_CPPv4I_j_jEN4idol3Ctr11make_vectorE6VectorI3CtrXmi1N1IEER3EnvRK3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Ctr::make_vector::t_type"], [38, 2, 1, "_CPPv4NK4idol3Ctr4nameEv", "idol::Ctr::name"], [38, 2, 1, "_CPPv4NK4idol3Ctr3setERK10AnnotationI3Ctr6ValueTEDpRR5ArgsT", "idol::Ctr::set"], [38, 4, 1, "_CPPv4NK4idol3Ctr3setERK10AnnotationI3Ctr6ValueTEDpRR5ArgsT", "idol::Ctr::set::t_annotation"], [38, 4, 1, "_CPPv4NK4idol3Ctr3setERK10AnnotationI3Ctr6ValueTEDpRR5ArgsT", "idol::Ctr::set::t_args"], [3, 1, 1, "_CPPv4I0EN4idol4Cuts13KnapsackCoverE", "idol::Cuts::KnapsackCover"], [3, 3, 1, "_CPPv4I0EN4idol4Cuts13KnapsackCoverE", "idol::Cuts::KnapsackCover::NodeInfoT"], [3, 1, 1, "_CPPv4N4idol4Cuts13KnapsackCover8StrategyE", "idol::Cuts::KnapsackCover::Strategy"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", "idol::Cuts::KnapsackCover::Strategy::Strategy"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", "idol::Cuts::KnapsackCover::Strategy::Strategy::t_apply_to_tree_nodes"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", "idol::Cuts::KnapsackCover::Strategy::Strategy::t_max_cuts_factor"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", "idol::Cuts::KnapsackCover::Strategy::Strategy::t_max_pass_root_node"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover8Strategy8StrategyEbbjd", "idol::Cuts::KnapsackCover::Strategy::Strategy::t_use_lifting"], [3, 2, 1, "_CPPv4NK4idol4Cuts13KnapsackCover5cloneEv", "idol::Cuts::KnapsackCover::clone"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCoverclEv", "idol::Cuts::KnapsackCover::operator()"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCover12with_liftingEb", "idol::Cuts::KnapsackCover::with_lifting"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover12with_liftingEb", "idol::Cuts::KnapsackCover::with_lifting::t_value"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCover20with_max_cuts_factorEd", "idol::Cuts::KnapsackCover::with_max_cuts_factor"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover20with_max_cuts_factorEd", "idol::Cuts::KnapsackCover::with_max_cuts_factor::t_value"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCover23with_max_pass_root_nodeEj", "idol::Cuts::KnapsackCover::with_max_pass_root_node"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover23with_max_pass_root_nodeEj", "idol::Cuts::KnapsackCover::with_max_pass_root_node::t_value"], [3, 2, 1, "_CPPv4N4idol4Cuts13KnapsackCover19with_tree_node_cutsEb", "idol::Cuts::KnapsackCover::with_tree_node_cuts"], [3, 4, 1, "_CPPv4N4idol4Cuts13KnapsackCover19with_tree_node_cutsEb", "idol::Cuts::KnapsackCover::with_tree_node_cuts::t_value"], [26, 1, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCostsE", "idol::DantzigWolfe::ArtificialCosts"], [26, 1, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8StrategyE", "idol::DantzigWolfe::ArtificialCosts::Strategy"], [26, 2, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy8StrategyEddj", "idol::DantzigWolfe::ArtificialCosts::Strategy::Strategy"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy8StrategyEddj", "idol::DantzigWolfe::ArtificialCosts::Strategy::Strategy::t_initial_costs"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy8StrategyEddj", "idol::DantzigWolfe::ArtificialCosts::Strategy::Strategy::t_max_updates_before_phase_I"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy8StrategyEddj", "idol::DantzigWolfe::ArtificialCosts::Strategy::Strategy::t_update_factor"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy10best_boundEv", "idol::DantzigWolfe::ArtificialCosts::Strategy::best_bound"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy8best_objEv", "idol::DantzigWolfe::ArtificialCosts::Strategy::best_obj"], [26, 2, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", "idol::DantzigWolfe::ArtificialCosts::Strategy::execute"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", "idol::DantzigWolfe::ArtificialCosts::Strategy::execute::t_parent"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy15primal_solutionEv", "idol::DantzigWolfe::ArtificialCosts::Strategy::primal_solution"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy6reasonEv", "idol::DantzigWolfe::ArtificialCosts::Strategy::reason"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts8Strategy6statusEv", "idol::DantzigWolfe::ArtificialCosts::Strategy::status"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCosts5cloneEv", "idol::DantzigWolfe::ArtificialCosts::clone"], [26, 2, 1, "_CPPv4NK4idol12DantzigWolfe15ArtificialCostsclEv", "idol::DantzigWolfe::ArtificialCosts::operator()"], [26, 2, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_initial_costsEd", "idol::DantzigWolfe::ArtificialCosts::with_initial_costs"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_initial_costsEd", "idol::DantzigWolfe::ArtificialCosts::with_initial_costs::t_value"], [26, 2, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts31with_max_updates_before_phase_IEj", "idol::DantzigWolfe::ArtificialCosts::with_max_updates_before_phase_I"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts31with_max_updates_before_phase_IEj", "idol::DantzigWolfe::ArtificialCosts::with_max_updates_before_phase_I::t_value"], [26, 2, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_update_factorEd", "idol::DantzigWolfe::ArtificialCosts::with_update_factor"], [26, 4, 1, "_CPPv4N4idol12DantzigWolfe15ArtificialCosts18with_update_factorEd", "idol::DantzigWolfe::ArtificialCosts::with_update_factor::t_value"], [28, 1, 1, "_CPPv4N4idol12DantzigWolfe13FarkasPricingE", "idol::DantzigWolfe::FarkasPricing"], [28, 1, 1, "_CPPv4N4idol12DantzigWolfe13FarkasPricing8StrategyE", "idol::DantzigWolfe::FarkasPricing::Strategy"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy10best_boundEv", "idol::DantzigWolfe::FarkasPricing::Strategy::best_bound"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy8best_objEv", "idol::DantzigWolfe::FarkasPricing::Strategy::best_obj"], [28, 2, 1, "_CPPv4N4idol12DantzigWolfe13FarkasPricing8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", "idol::DantzigWolfe::FarkasPricing::Strategy::execute"], [28, 4, 1, "_CPPv4N4idol12DantzigWolfe13FarkasPricing8Strategy7executeERN10Optimizers25DantzigWolfeDecompositionE", "idol::DantzigWolfe::FarkasPricing::Strategy::execute::t_parent"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy15primal_solutionEv", "idol::DantzigWolfe::FarkasPricing::Strategy::primal_solution"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy6reasonEv", "idol::DantzigWolfe::FarkasPricing::Strategy::reason"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing8Strategy6statusEv", "idol::DantzigWolfe::FarkasPricing::Strategy::status"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricing5cloneEv", "idol::DantzigWolfe::FarkasPricing::clone"], [28, 2, 1, "_CPPv4NK4idol12DantzigWolfe13FarkasPricingclEv", "idol::DantzigWolfe::FarkasPricing::operator()"], [32, 1, 1, "_CPPv4N4idol12DantzigWolfe5NeameE", "idol::DantzigWolfe::Neame"], [32, 2, 1, "_CPPv4N4idol12DantzigWolfe5Neame5NeameEd", "idol::DantzigWolfe::Neame::Neame"], [32, 4, 1, "_CPPv4N4idol12DantzigWolfe5Neame5NeameEd", "idol::DantzigWolfe::Neame::Neame::t_initial_factor"], [32, 1, 1, "_CPPv4N4idol12DantzigWolfe5Neame8StrategyE", "idol::DantzigWolfe::Neame::Strategy"], [32, 2, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy8StrategyEd", "idol::DantzigWolfe::Neame::Strategy::Strategy"], [32, 4, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy8StrategyEd", "idol::DantzigWolfe::Neame::Strategy::Strategy::t_initial_factor"], [32, 2, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", "idol::DantzigWolfe::Neame::Strategy::compute_smoothed_dual_solution"], [32, 4, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", "idol::DantzigWolfe::Neame::Strategy::compute_smoothed_dual_solution::t_master_dual"], [32, 2, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy10initializeEv", "idol::DantzigWolfe::Neame::Strategy::initialize"], [32, 2, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy23update_stability_centerERKN8Solution4DualE", "idol::DantzigWolfe::Neame::Strategy::update_stability_center"], [32, 4, 1, "_CPPv4N4idol12DantzigWolfe5Neame8Strategy23update_stability_centerERKN8Solution4DualE", "idol::DantzigWolfe::Neame::Strategy::update_stability_center::t_master_dual"], [32, 2, 1, "_CPPv4NK4idol12DantzigWolfe5Neame5cloneEv", "idol::DantzigWolfe::Neame::clone"], [32, 2, 1, "_CPPv4NK4idol12DantzigWolfe5NeameclEv", "idol::DantzigWolfe::Neame::operator()"], [33, 1, 1, "_CPPv4N4idol12DantzigWolfe7WentgesE", "idol::DantzigWolfe::Wentges"], [33, 1, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8StrategyE", "idol::DantzigWolfe::Wentges::Strategy"], [33, 2, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy8StrategyEd", "idol::DantzigWolfe::Wentges::Strategy::Strategy"], [33, 4, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy8StrategyEd", "idol::DantzigWolfe::Wentges::Strategy::Strategy::t_initial_factor"], [33, 2, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", "idol::DantzigWolfe::Wentges::Strategy::compute_smoothed_dual_solution"], [33, 4, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy30compute_smoothed_dual_solutionERKN8Solution4DualE", "idol::DantzigWolfe::Wentges::Strategy::compute_smoothed_dual_solution::t_master_dual"], [33, 2, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy10initializeEv", "idol::DantzigWolfe::Wentges::Strategy::initialize"], [33, 2, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy23update_stability_centerERKN8Solution4DualE", "idol::DantzigWolfe::Wentges::Strategy::update_stability_center"], [33, 4, 1, "_CPPv4N4idol12DantzigWolfe7Wentges8Strategy23update_stability_centerERKN8Solution4DualE", "idol::DantzigWolfe::Wentges::Strategy::update_stability_center::t_master_dual"], [33, 2, 1, "_CPPv4N4idol12DantzigWolfe7Wentges7WentgesEd", "idol::DantzigWolfe::Wentges::Wentges"], [33, 4, 1, "_CPPv4N4idol12DantzigWolfe7Wentges7WentgesEd", "idol::DantzigWolfe::Wentges::Wentges::t_initial_factor"], [33, 2, 1, "_CPPv4NK4idol12DantzigWolfe7Wentges5cloneEv", "idol::DantzigWolfe::Wentges::clone"], [33, 2, 1, "_CPPv4NK4idol12DantzigWolfe7WentgesclEv", "idol::DantzigWolfe::Wentges::operator()"], [27, 1, 1, "_CPPv4N4idol25DantzigWolfeDecompositionE", "idol::DantzigWolfeDecomposition"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE10AnnotationI3VarjE", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK25DantzigWolfeDecomposition", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE10AnnotationI3VarjE", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_ctr_decomposition"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_decomposition"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK25DantzigWolfeDecomposition", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_src"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition25DantzigWolfeDecompositionE10AnnotationI3CtrjE10AnnotationI3VarjE", "idol::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_var_decomposition"], [27, 2, 1, "_CPPv4I0EN4idol25DantzigWolfeDecomposition2asER1Tv", "idol::DantzigWolfeDecomposition::as"], [27, 2, 1, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2asERK1Tv", "idol::DantzigWolfeDecomposition::as"], [27, 3, 1, "_CPPv4I0EN4idol25DantzigWolfeDecomposition2asER1Tv", "idol::DantzigWolfeDecomposition::as::T"], [27, 3, 1, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2asERK1Tv", "idol::DantzigWolfeDecomposition::as::T"], [27, 2, 1, "_CPPv4NK4idol25DantzigWolfeDecomposition5cloneEv", "idol::DantzigWolfeDecomposition::clone"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEERKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional::t_conditional_value"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEERKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional::t_conditional_value"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEERKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional::t_else"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional::t_if"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11conditionalEbRKNSt8functionIFvR25DantzigWolfeDecompositionEEERKNSt8functionIFvR25DantzigWolfeDecompositionEEE", "idol::DantzigWolfeDecomposition::conditional::t_if"], [27, 2, 1, "_CPPv4NK4idol25DantzigWolfeDecomposition20get_sub_problem_specEj", "idol::DantzigWolfeDecomposition::get_sub_problem_spec"], [27, 4, 1, "_CPPv4NK4idol25DantzigWolfeDecomposition20get_sub_problem_specEj", "idol::DantzigWolfeDecomposition::get_sub_problem_spec::t_id"], [27, 2, 1, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2isEbv", "idol::DantzigWolfeDecomposition::is"], [27, 3, 1, "_CPPv4I0ENK4idol25DantzigWolfeDecomposition2isEbv", "idol::DantzigWolfeDecomposition::is::T"], [27, 2, 1, "_CPPv4NK4idol25DantzigWolfeDecompositionclERK5Model", "idol::DantzigWolfeDecomposition::operator()"], [27, 4, 1, "_CPPv4NK4idol25DantzigWolfeDecompositionclERK5Model", "idol::DantzigWolfeDecomposition::operator()::t_model"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_absolute_gap_toleranceEd", "idol::DantzigWolfeDecomposition::with_absolute_gap_tolerance"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_absolute_gap_toleranceEd", "idol::DantzigWolfeDecomposition::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition20with_best_bound_stopEd", "idol::DantzigWolfeDecomposition::with_best_bound_stop"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition20with_best_bound_stopEd", "idol::DantzigWolfeDecomposition::with_best_bound_stop::t_best_bound_stop"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition18with_best_obj_stopEd", "idol::DantzigWolfeDecomposition::with_best_obj_stop"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition18with_best_obj_stopEd", "idol::DantzigWolfeDecomposition::with_best_obj_stop::t_user_best_obj"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition29with_default_sub_problem_specEN12DantzigWolfe10SubProblemE", "idol::DantzigWolfeDecomposition::with_default_sub_problem_spec"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition29with_default_sub_problem_specEN12DantzigWolfe10SubProblemE", "idol::DantzigWolfeDecomposition::with_default_sub_problem_spec::t_sub_problem"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition39with_dual_price_smoothing_stabilizationERKN12DantzigWolfe31DualPriceSmoothingStabilizationE", "idol::DantzigWolfeDecomposition::with_dual_price_smoothing_stabilization"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition39with_dual_price_smoothing_stabilizationERKN12DantzigWolfe31DualPriceSmoothingStabilizationE", "idol::DantzigWolfeDecomposition::with_dual_price_smoothing_stabilization::t_stabilization"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition19with_hard_branchingEb", "idol::DantzigWolfeDecomposition::with_hard_branching"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition19with_hard_branchingEb", "idol::DantzigWolfeDecomposition::with_hard_branching::t_value"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_infeasibility_strategyERKN12DantzigWolfe28InfeasibilityStrategyFactoryE", "idol::DantzigWolfeDecomposition::with_infeasibility_strategy"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_infeasibility_strategyERKN12DantzigWolfe28InfeasibilityStrategyFactoryE", "idol::DantzigWolfeDecomposition::with_infeasibility_strategy::t_strategy"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition31with_infeasible_columns_removalEb", "idol::DantzigWolfeDecomposition::with_infeasible_columns_removal"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition31with_infeasible_columns_removalEb", "idol::DantzigWolfeDecomposition::with_infeasible_columns_removal::t_value"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition33with_infeasible_or_unbounded_infoEb", "idol::DantzigWolfeDecomposition::with_infeasible_or_unbounded_info"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition33with_infeasible_or_unbounded_infoEb", "idol::DantzigWolfeDecomposition::with_infeasible_or_unbounded_info::t_value"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition20with_iteration_limitEj", "idol::DantzigWolfeDecomposition::with_iteration_limit"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition20with_iteration_limitEj", "idol::DantzigWolfeDecomposition::with_iteration_limit::t_iteration_count_limit"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11with_loggerERKN4Logs12DantzigWolfe7FactoryE", "idol::DantzigWolfeDecomposition::with_logger"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition11with_loggerERKN4Logs12DantzigWolfe7FactoryE", "idol::DantzigWolfeDecomposition::with_logger::t_logger"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition9with_logsEb", "idol::DantzigWolfeDecomposition::with_logs"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition9with_logsEb", "idol::DantzigWolfeDecomposition::with_logs::t_value"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition21with_master_optimizerERK16OptimizerFactory", "idol::DantzigWolfeDecomposition::with_master_optimizer"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition21with_master_optimizerERK16OptimizerFactory", "idol::DantzigWolfeDecomposition::with_master_optimizer::t_optimizer_factory"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition30with_max_parallel_sub_problemsEj", "idol::DantzigWolfeDecomposition::with_max_parallel_sub_problems"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition30with_max_parallel_sub_problemsEj", "idol::DantzigWolfeDecomposition::with_max_parallel_sub_problems::t_n_sub_problems"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition13with_presolveEb", "idol::DantzigWolfeDecomposition::with_presolve"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition13with_presolveEb", "idol::DantzigWolfeDecomposition::with_presolve::t_value"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_relative_gap_toleranceEd", "idol::DantzigWolfeDecomposition::with_relative_gap_tolerance"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition27with_relative_gap_toleranceEd", "idol::DantzigWolfeDecomposition::with_relative_gap_tolerance::t_relative_gap_tolerance"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition21with_sub_problem_specEjN12DantzigWolfe10SubProblemE", "idol::DantzigWolfeDecomposition::with_sub_problem_spec"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition21with_sub_problem_specEjN12DantzigWolfe10SubProblemE", "idol::DantzigWolfeDecomposition::with_sub_problem_spec::t_id"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition21with_sub_problem_specEjN12DantzigWolfe10SubProblemE", "idol::DantzigWolfeDecomposition::with_sub_problem_spec::t_sub_problem"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition17with_thread_limitEj", "idol::DantzigWolfeDecomposition::with_thread_limit"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition17with_thread_limitEj", "idol::DantzigWolfeDecomposition::with_thread_limit::t_max_n_threads"], [27, 2, 1, "_CPPv4N4idol25DantzigWolfeDecomposition15with_time_limitEd", "idol::DantzigWolfeDecomposition::with_time_limit"], [27, 4, 1, "_CPPv4N4idol25DantzigWolfeDecomposition15with_time_limitEd", "idol::DantzigWolfeDecomposition::with_time_limit::t_time_limit"], [13, 1, 1, "_CPPv4N4idol10DepthFirstE", "idol::DepthFirst"], [13, 1, 1, "_CPPv4I0EN4idol10DepthFirst8StrategyE", "idol::DepthFirst::Strategy"], [13, 3, 1, "_CPPv4I0EN4idol10DepthFirst8StrategyE", "idol::DepthFirst::Strategy::NodeT"], [13, 2, 1, "_CPPv4N4idol10DepthFirst8Strategy8StrategyERK10DepthFirst", "idol::DepthFirst::Strategy::Strategy"], [13, 4, 1, "_CPPv4N4idol10DepthFirst8Strategy8StrategyERK10DepthFirst", "idol::DepthFirst::Strategy::Strategy::t_parent"], [13, 2, 1, "_CPPv4NK4idol10DepthFirst8Strategy5cloneEv", "idol::DepthFirst::Strategy::clone"], [13, 2, 1, "_CPPv4NK4idol10DepthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::DepthFirst::Strategy::operator()"], [13, 4, 1, "_CPPv4NK4idol10DepthFirst8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::DepthFirst::Strategy::operator()::t_parent"], [39, 1, 1, "_CPPv4N4idol3EnvE", "idol::Env"], [39, 2, 1, "_CPPv4N4idol3Env3EnvEv", "idol::Env::Env"], [39, 2, 1, "_CPPv4I0ENK4idol3EnvixERKDaRK1T", "idol::Env::operator[]"], [39, 3, 1, "_CPPv4I0ENK4idol3EnvixERKDaRK1T", "idol::Env::operator[]::T"], [39, 4, 1, "_CPPv4I0ENK4idol3EnvixERKDaRK1T", "idol::Env::operator[]::t_object"], [40, 1, 1, "_CPPv4I00EN4idol4ExprE", "idol::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK4Expr", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK4Key1", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK5Param", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1E", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1ERK8QuadExprI4Key14Key2ERK8Constant", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK8Constant", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERK8QuadExprI4Key1E", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERR4Expr", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1E", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1ERR8QuadExprI4Key14Key2ERR8Constant", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERR8Constant", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprERR8QuadExprI4Key1E", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprEd", "idol::Expr::Expr"], [40, 2, 1, "_CPPv4N4idol4Expr4ExprEv", "idol::Expr::Expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1ERK8QuadExprI4Key14Key2ERK8Constant", "idol::Expr::Expr::t_constant"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1ERR8QuadExprI4Key14Key2ERR8Constant", "idol::Expr::Expr::t_constant"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1E", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK8Constant", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK8QuadExprI4Key1E", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1E", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR8Constant", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR8QuadExprI4Key1E", "idol::Expr::Expr::t_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1ERK8QuadExprI4Key14Key2ERK8Constant", "idol::Expr::Expr::t_lin_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1ERR8QuadExprI4Key14Key2ERR8Constant", "idol::Expr::Expr::t_lin_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprEd", "idol::Expr::Expr::t_num"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK5Param", "idol::Expr::Expr::t_param"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK7LinExprI4Key1ERK8QuadExprI4Key14Key2ERK8Constant", "idol::Expr::Expr::t_quad_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERR7LinExprI4Key1ERR8QuadExprI4Key14Key2ERR8Constant", "idol::Expr::Expr::t_quad_expr"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK4Expr", "idol::Expr::Expr::t_src"], [40, 4, 1, "_CPPv4N4idol4Expr4ExprERK4Key1", "idol::Expr::Expr::t_var"], [40, 3, 1, "_CPPv4I00EN4idol4ExprE", "idol::Expr::Key1"], [40, 3, 1, "_CPPv4I00EN4idol4ExprE", "idol::Expr::Key2"], [40, 2, 1, "_CPPv4N4idol4Expr5clearEv", "idol::Expr::clear"], [40, 2, 1, "_CPPv4N4idol4Expr8constantEv", "idol::Expr::constant"], [40, 2, 1, "_CPPv4NK4idol4Expr8constantEv", "idol::Expr::constant"], [40, 2, 1, "_CPPv4NK4idol4Expr3fixERKN8Solution6PrimalE", "idol::Expr::fix"], [40, 4, 1, "_CPPv4NK4idol4Expr3fixERKN8Solution6PrimalE", "idol::Expr::fix::t_primals"], [40, 2, 1, "_CPPv4NK4idol4Expr3gcdEv", "idol::Expr::gcd"], [40, 2, 1, "_CPPv4NK4idol4Expr7is_zeroEv", "idol::Expr::is_zero"], [40, 2, 1, "_CPPv4N4idol4Expr6linearEv", "idol::Expr::linear"], [40, 2, 1, "_CPPv4NK4idol4Expr6linearEv", "idol::Expr::linear"], [40, 2, 1, "_CPPv4N4idol4Expr23multiply_with_precisionEdj", "idol::Expr::multiply_with_precision"], [40, 4, 1, "_CPPv4N4idol4Expr23multiply_with_precisionEdj", "idol::Expr::multiply_with_precision::t_factor"], [40, 4, 1, "_CPPv4N4idol4Expr23multiply_with_precisionEdj", "idol::Expr::multiply_with_precision::t_n_digits"], [40, 2, 1, "_CPPv4N4idol4Expr38multiply_with_precision_by_power_of_10Ejj", "idol::Expr::multiply_with_precision_by_power_of_10"], [40, 4, 1, "_CPPv4N4idol4Expr38multiply_with_precision_by_power_of_10Ejj", "idol::Expr::multiply_with_precision_by_power_of_10::t_exponent"], [40, 4, 1, "_CPPv4N4idol4Expr38multiply_with_precision_by_power_of_10Ejj", "idol::Expr::multiply_with_precision_by_power_of_10::t_n_digits"], [40, 2, 1, "_CPPv4N4idol4ExprmLEd", "idol::Expr::operator*="], [40, 4, 1, "_CPPv4N4idol4ExprmLEd", "idol::Expr::operator*=::t_rhs"], [40, 2, 1, "_CPPv4N4idol4ExprpLERK4ExprIN4idol3VarEN4idol3VarEE", "idol::Expr::operator+="], [40, 4, 1, "_CPPv4N4idol4ExprpLERK4ExprIN4idol3VarEN4idol3VarEE", "idol::Expr::operator+=::t_rhs"], [40, 2, 1, "_CPPv4N4idol4ExprmIERK4ExprIN4idol3VarEN4idol3VarEE", "idol::Expr::operator-="], [40, 4, 1, "_CPPv4N4idol4ExprmIERK4ExprIN4idol3VarEN4idol3VarEE", "idol::Expr::operator-=::t_rhs"], [40, 2, 1, "_CPPv4N4idol4ExprdVEd", "idol::Expr::operator/="], [40, 4, 1, "_CPPv4N4idol4ExprdVEd", "idol::Expr::operator/=::t_rhs"], [40, 2, 1, "_CPPv4N4idol4ExpraSERK4Expr", "idol::Expr::operator="], [40, 2, 1, "_CPPv4N4idol4ExpraSERR4Expr", "idol::Expr::operator="], [40, 4, 1, "_CPPv4N4idol4ExpraSERK4Expr", "idol::Expr::operator=::t_rhs"], [40, 2, 1, "_CPPv4N4idol4Expr9quadraticEv", "idol::Expr::quadratic"], [40, 2, 1, "_CPPv4NK4idol4Expr9quadraticEv", "idol::Expr::quadratic"], [40, 2, 1, "_CPPv4N4idol4Expr5roundEv", "idol::Expr::round"], [40, 2, 1, "_CPPv4N4idol4Expr17scale_to_integersEj", "idol::Expr::scale_to_integers"], [40, 4, 1, "_CPPv4N4idol4Expr17scale_to_integersEj", "idol::Expr::scale_to_integers::t_n_significant_digits"], [16, 1, 1, "_CPPv4N4idol20FirstInfeasibleFoundE", "idol::FirstInfeasibleFound"], [16, 2, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound20FirstInfeasibleFoundE9IteratorT9IteratorT", "idol::FirstInfeasibleFound::FirstInfeasibleFound"], [16, 2, 1, "_CPPv4N4idol20FirstInfeasibleFound20FirstInfeasibleFoundEv", "idol::FirstInfeasibleFound::FirstInfeasibleFound"], [16, 3, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound20FirstInfeasibleFoundE9IteratorT9IteratorT", "idol::FirstInfeasibleFound::FirstInfeasibleFound::IteratorT"], [16, 4, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound20FirstInfeasibleFoundE9IteratorT9IteratorT", "idol::FirstInfeasibleFound::FirstInfeasibleFound::t_begin"], [16, 4, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound20FirstInfeasibleFoundE9IteratorT9IteratorT", "idol::FirstInfeasibleFound::FirstInfeasibleFound::t_end"], [16, 1, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound8StrategyE", "idol::FirstInfeasibleFound::Strategy"], [16, 3, 1, "_CPPv4I0EN4idol20FirstInfeasibleFound8StrategyE", "idol::FirstInfeasibleFound::Strategy::NodeInfoT"], [16, 2, 1, "_CPPv4N4idol20FirstInfeasibleFound8Strategy8StrategyERK20FirstInfeasibleFound", "idol::FirstInfeasibleFound::Strategy::Strategy"], [16, 2, 1, "_CPPv4N4idol20FirstInfeasibleFound8Strategy8StrategyEv", "idol::FirstInfeasibleFound::Strategy::Strategy"], [16, 4, 1, "_CPPv4N4idol20FirstInfeasibleFound8Strategy8StrategyERK20FirstInfeasibleFound", "idol::FirstInfeasibleFound::Strategy::Strategy::t_parent"], [16, 2, 1, "_CPPv4NK4idol20FirstInfeasibleFound8Strategy5cloneEv", "idol::FirstInfeasibleFound::Strategy::clone"], [16, 2, 1, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::FirstInfeasibleFound::Strategy::operator()"], [16, 2, 1, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::FirstInfeasibleFound::Strategy::operator()"], [16, 4, 1, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::FirstInfeasibleFound::Strategy::operator()::t_parent"], [16, 4, 1, "_CPPv4NK4idol20FirstInfeasibleFound8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::FirstInfeasibleFound::Strategy::operator()::t_parent"], [55, 1, 1, "_CPPv4N4idol4GLPKE", "idol::GLPK"], [55, 2, 1, "_CPPv4N4idol4GLPK20ContinuousRelaxationEv", "idol::GLPK::ContinuousRelaxation"], [55, 2, 1, "_CPPv4N4idol4GLPK4GLPKERK4GLPK", "idol::GLPK::GLPK"], [55, 2, 1, "_CPPv4N4idol4GLPK4GLPKERR4GLPK", "idol::GLPK::GLPK"], [55, 2, 1, "_CPPv4N4idol4GLPK4GLPKEv", "idol::GLPK::GLPK"], [55, 2, 1, "_CPPv4I0EN4idol4GLPK2asER1Tv", "idol::GLPK::as"], [55, 2, 1, "_CPPv4I0ENK4idol4GLPK2asERK1Tv", "idol::GLPK::as"], [55, 3, 1, "_CPPv4I0EN4idol4GLPK2asER1Tv", "idol::GLPK::as::T"], [55, 3, 1, "_CPPv4I0ENK4idol4GLPK2asERK1Tv", "idol::GLPK::as::T"], [55, 2, 1, "_CPPv4NK4idol4GLPK5cloneEv", "idol::GLPK::clone"], [55, 2, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional"], [55, 2, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEERKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional"], [55, 4, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional::t_conditional_value"], [55, 4, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEERKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional::t_conditional_value"], [55, 4, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEERKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional::t_else"], [55, 4, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional::t_if"], [55, 4, 1, "_CPPv4N4idol4GLPK11conditionalEbRKNSt8functionIFvR4GLPKEEERKNSt8functionIFvR4GLPKEEE", "idol::GLPK::conditional::t_if"], [55, 2, 1, "_CPPv4I0ENK4idol4GLPK2isEbv", "idol::GLPK::is"], [55, 3, 1, "_CPPv4I0ENK4idol4GLPK2isEbv", "idol::GLPK::is::T"], [55, 2, 1, "_CPPv4NK4idol4GLPKclERK5Model", "idol::GLPK::operator()"], [55, 4, 1, "_CPPv4NK4idol4GLPKclERK5Model", "idol::GLPK::operator()::t_model"], [55, 2, 1, "_CPPv4N4idol4GLPKaSERK4GLPK", "idol::GLPK::operator="], [55, 2, 1, "_CPPv4N4idol4GLPKaSERR4GLPK", "idol::GLPK::operator="], [55, 2, 1, "_CPPv4N4idol4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::GLPK::read_from_file"], [55, 4, 1, "_CPPv4N4idol4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::GLPK::read_from_file::t_env"], [55, 4, 1, "_CPPv4N4idol4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::GLPK::read_from_file::t_filename"], [55, 2, 1, "_CPPv4N4idol4GLPK27with_absolute_gap_toleranceEd", "idol::GLPK::with_absolute_gap_tolerance"], [55, 4, 1, "_CPPv4N4idol4GLPK27with_absolute_gap_toleranceEd", "idol::GLPK::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [55, 2, 1, "_CPPv4N4idol4GLPK20with_best_bound_stopEd", "idol::GLPK::with_best_bound_stop"], [55, 4, 1, "_CPPv4N4idol4GLPK20with_best_bound_stopEd", "idol::GLPK::with_best_bound_stop::t_best_bound_stop"], [55, 2, 1, "_CPPv4N4idol4GLPK18with_best_obj_stopEd", "idol::GLPK::with_best_obj_stop"], [55, 4, 1, "_CPPv4N4idol4GLPK18with_best_obj_stopEd", "idol::GLPK::with_best_obj_stop::t_user_best_obj"], [55, 2, 1, "_CPPv4N4idol4GLPK33with_infeasible_or_unbounded_infoEb", "idol::GLPK::with_infeasible_or_unbounded_info"], [55, 4, 1, "_CPPv4N4idol4GLPK33with_infeasible_or_unbounded_infoEb", "idol::GLPK::with_infeasible_or_unbounded_info::t_value"], [55, 2, 1, "_CPPv4N4idol4GLPK20with_iteration_limitEj", "idol::GLPK::with_iteration_limit"], [55, 4, 1, "_CPPv4N4idol4GLPK20with_iteration_limitEj", "idol::GLPK::with_iteration_limit::t_iteration_count_limit"], [55, 2, 1, "_CPPv4N4idol4GLPK9with_logsEb", "idol::GLPK::with_logs"], [55, 4, 1, "_CPPv4N4idol4GLPK9with_logsEb", "idol::GLPK::with_logs::t_value"], [55, 2, 1, "_CPPv4N4idol4GLPK13with_presolveEb", "idol::GLPK::with_presolve"], [55, 4, 1, "_CPPv4N4idol4GLPK13with_presolveEb", "idol::GLPK::with_presolve::t_value"], [55, 2, 1, "_CPPv4N4idol4GLPK27with_relative_gap_toleranceEd", "idol::GLPK::with_relative_gap_tolerance"], [55, 4, 1, "_CPPv4N4idol4GLPK27with_relative_gap_toleranceEd", "idol::GLPK::with_relative_gap_tolerance::t_relative_gap_tolerance"], [55, 2, 1, "_CPPv4N4idol4GLPK17with_thread_limitEj", "idol::GLPK::with_thread_limit"], [55, 4, 1, "_CPPv4N4idol4GLPK17with_thread_limitEj", "idol::GLPK::with_thread_limit::t_max_n_threads"], [55, 2, 1, "_CPPv4N4idol4GLPK15with_time_limitEd", "idol::GLPK::with_time_limit"], [55, 4, 1, "_CPPv4N4idol4GLPK15with_time_limitEd", "idol::GLPK::with_time_limit::t_time_limit"], [56, 1, 1, "_CPPv4N4idol6GurobiE", "idol::Gurobi"], [56, 2, 1, "_CPPv4N4idol6Gurobi20ContinuousRelaxationEv", "idol::Gurobi::ContinuousRelaxation"], [56, 2, 1, "_CPPv4N4idol6Gurobi6GurobiERK6Gurobi", "idol::Gurobi::Gurobi"], [56, 2, 1, "_CPPv4N4idol6Gurobi6GurobiERR6Gurobi", "idol::Gurobi::Gurobi"], [56, 2, 1, "_CPPv4N4idol6Gurobi6GurobiEv", "idol::Gurobi::Gurobi"], [56, 4, 1, "_CPPv4N4idol6Gurobi6GurobiERK6Gurobi", "idol::Gurobi::Gurobi::t_src"], [56, 2, 1, "_CPPv4N4idol6Gurobi12add_callbackERK15CallbackFactory", "idol::Gurobi::add_callback"], [56, 4, 1, "_CPPv4N4idol6Gurobi12add_callbackERK15CallbackFactory", "idol::Gurobi::add_callback::t_cb"], [56, 2, 1, "_CPPv4I0EN4idol6Gurobi2asER1Tv", "idol::Gurobi::as"], [56, 2, 1, "_CPPv4I0ENK4idol6Gurobi2asERK1Tv", "idol::Gurobi::as"], [56, 3, 1, "_CPPv4I0EN4idol6Gurobi2asER1Tv", "idol::Gurobi::as::T"], [56, 3, 1, "_CPPv4I0ENK4idol6Gurobi2asERK1Tv", "idol::Gurobi::as::T"], [56, 2, 1, "_CPPv4NK4idol6Gurobi5cloneEv", "idol::Gurobi::clone"], [56, 2, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional"], [56, 2, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEERKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional"], [56, 4, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional::t_conditional_value"], [56, 4, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEERKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional::t_conditional_value"], [56, 4, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEERKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional::t_else"], [56, 4, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional::t_if"], [56, 4, 1, "_CPPv4N4idol6Gurobi11conditionalEbRKNSt8functionIFvR6GurobiEEERKNSt8functionIFvR6GurobiEEE", "idol::Gurobi::conditional::t_if"], [56, 2, 1, "_CPPv4I0ENK4idol6Gurobi2isEbv", "idol::Gurobi::is"], [56, 3, 1, "_CPPv4I0ENK4idol6Gurobi2isEbv", "idol::Gurobi::is::T"], [56, 2, 1, "_CPPv4NK4idol6GurobiclERK5Model", "idol::Gurobi::operator()"], [56, 4, 1, "_CPPv4NK4idol6GurobiclERK5Model", "idol::Gurobi::operator()::t_model"], [56, 2, 1, "_CPPv4N4idol6GurobiaSERK6Gurobi", "idol::Gurobi::operator="], [56, 2, 1, "_CPPv4N4idol6GurobiaSERR6Gurobi", "idol::Gurobi::operator="], [56, 2, 1, "_CPPv4N4idol6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Gurobi::read_from_file"], [56, 4, 1, "_CPPv4N4idol6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Gurobi::read_from_file::t_env"], [56, 4, 1, "_CPPv4N4idol6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Gurobi::read_from_file::t_filename"], [56, 2, 1, "_CPPv4N4idol6Gurobi27with_absolute_gap_toleranceEd", "idol::Gurobi::with_absolute_gap_tolerance"], [56, 4, 1, "_CPPv4N4idol6Gurobi27with_absolute_gap_toleranceEd", "idol::Gurobi::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [56, 2, 1, "_CPPv4N4idol6Gurobi20with_best_bound_stopEd", "idol::Gurobi::with_best_bound_stop"], [56, 4, 1, "_CPPv4N4idol6Gurobi20with_best_bound_stopEd", "idol::Gurobi::with_best_bound_stop::t_best_bound_stop"], [56, 2, 1, "_CPPv4N4idol6Gurobi18with_best_obj_stopEd", "idol::Gurobi::with_best_obj_stop"], [56, 4, 1, "_CPPv4N4idol6Gurobi18with_best_obj_stopEd", "idol::Gurobi::with_best_obj_stop::t_user_best_obj"], [56, 2, 1, "_CPPv4N4idol6Gurobi31with_continuous_relaxation_onlyEb", "idol::Gurobi::with_continuous_relaxation_only"], [56, 4, 1, "_CPPv4N4idol6Gurobi31with_continuous_relaxation_onlyEb", "idol::Gurobi::with_continuous_relaxation_only::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi19with_external_paramE12GRB_IntParami", "idol::Gurobi::with_external_param"], [56, 2, 1, "_CPPv4N4idol6Gurobi19with_external_paramE15GRB_DoubleParamd", "idol::Gurobi::with_external_param"], [56, 4, 1, "_CPPv4N4idol6Gurobi19with_external_paramE12GRB_IntParami", "idol::Gurobi::with_external_param::t_param"], [56, 4, 1, "_CPPv4N4idol6Gurobi19with_external_paramE15GRB_DoubleParamd", "idol::Gurobi::with_external_param::t_param"], [56, 4, 1, "_CPPv4N4idol6Gurobi19with_external_paramE12GRB_IntParami", "idol::Gurobi::with_external_param::t_value"], [56, 4, 1, "_CPPv4N4idol6Gurobi19with_external_paramE15GRB_DoubleParamd", "idol::Gurobi::with_external_param::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi33with_infeasible_or_unbounded_infoEb", "idol::Gurobi::with_infeasible_or_unbounded_info"], [56, 4, 1, "_CPPv4N4idol6Gurobi33with_infeasible_or_unbounded_infoEb", "idol::Gurobi::with_infeasible_or_unbounded_info::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi20with_iteration_limitEj", "idol::Gurobi::with_iteration_limit"], [56, 4, 1, "_CPPv4N4idol6Gurobi20with_iteration_limitEj", "idol::Gurobi::with_iteration_limit::t_iteration_count_limit"], [56, 2, 1, "_CPPv4N4idol6Gurobi13with_lazy_cutEb", "idol::Gurobi::with_lazy_cut"], [56, 4, 1, "_CPPv4N4idol6Gurobi13with_lazy_cutEb", "idol::Gurobi::with_lazy_cut::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi9with_logsEb", "idol::Gurobi::with_logs"], [56, 4, 1, "_CPPv4N4idol6Gurobi9with_logsEb", "idol::Gurobi::with_logs::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi27with_max_n_solution_in_poolEj", "idol::Gurobi::with_max_n_solution_in_pool"], [56, 4, 1, "_CPPv4N4idol6Gurobi27with_max_n_solution_in_poolEj", "idol::Gurobi::with_max_n_solution_in_pool::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi13with_presolveEb", "idol::Gurobi::with_presolve"], [56, 4, 1, "_CPPv4N4idol6Gurobi13with_presolveEb", "idol::Gurobi::with_presolve::t_value"], [56, 2, 1, "_CPPv4N4idol6Gurobi27with_relative_gap_toleranceEd", "idol::Gurobi::with_relative_gap_tolerance"], [56, 4, 1, "_CPPv4N4idol6Gurobi27with_relative_gap_toleranceEd", "idol::Gurobi::with_relative_gap_tolerance::t_relative_gap_tolerance"], [56, 2, 1, "_CPPv4N4idol6Gurobi17with_thread_limitEj", "idol::Gurobi::with_thread_limit"], [56, 4, 1, "_CPPv4N4idol6Gurobi17with_thread_limitEj", "idol::Gurobi::with_thread_limit::t_max_n_threads"], [56, 2, 1, "_CPPv4N4idol6Gurobi15with_time_limitEd", "idol::Gurobi::with_time_limit"], [56, 4, 1, "_CPPv4N4idol6Gurobi15with_time_limitEd", "idol::Gurobi::with_time_limit::t_time_limit"], [29, 1, 1, "_CPPv4I0EN4idol10Heuristics13IntegerMasterE", "idol::Heuristics::IntegerMaster"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster13IntegerMasterERR13IntegerMaster", "idol::Heuristics::IntegerMaster::IntegerMaster"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster13IntegerMasterEv", "idol::Heuristics::IntegerMaster::IntegerMaster"], [29, 3, 1, "_CPPv4I0EN4idol10Heuristics13IntegerMasterE", "idol::Heuristics::IntegerMaster::NodeInfoT"], [29, 1, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8StrategyE", "idol::Heuristics::IntegerMaster::Strategy"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy8StrategyERK16OptimizerFactory", "idol::Heuristics::IntegerMaster::Strategy::Strategy"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy8StrategyERK16OptimizerFactory", "idol::Heuristics::IntegerMaster::Strategy::Strategy::t_optimizer"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_frequencyEj", "idol::Heuristics::IntegerMaster::Strategy::set_frequency"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_frequencyEj", "idol::Heuristics::IntegerMaster::Strategy::set_frequency::t_frequency"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_integer_columnsEb", "idol::Heuristics::IntegerMaster::Strategy::set_integer_columns"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_integer_columnsEb", "idol::Heuristics::IntegerMaster::Strategy::set_integer_columns::t_value"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_iteration_limitEj", "idol::Heuristics::IntegerMaster::Strategy::set_iteration_limit"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy19set_iteration_limitEj", "idol::Heuristics::IntegerMaster::Strategy::set_iteration_limit::t_iteration_limit"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_max_depthEj", "idol::Heuristics::IntegerMaster::Strategy::set_max_depth"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy13set_max_depthEj", "idol::Heuristics::IntegerMaster::Strategy::set_max_depth::t_max_depth"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy14set_time_limitEd", "idol::Heuristics::IntegerMaster::Strategy::set_time_limit"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster8Strategy14set_time_limitEd", "idol::Heuristics::IntegerMaster::Strategy::set_time_limit::t_time_limit"], [29, 2, 1, "_CPPv4NK4idol10Heuristics13IntegerMaster8Strategy20with_integer_columnsEv", "idol::Heuristics::IntegerMaster::Strategy::with_integer_columns"], [29, 2, 1, "_CPPv4NK4idol10Heuristics13IntegerMaster5cloneEv", "idol::Heuristics::IntegerMaster::clone"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMasterclEv", "idol::Heuristics::IntegerMaster::operator()"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMasteraSERK13IntegerMaster", "idol::Heuristics::IntegerMaster::operator="], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMasteraSERR13IntegerMaster", "idol::Heuristics::IntegerMaster::operator="], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_frequencyEj", "idol::Heuristics::IntegerMaster::with_frequency"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_frequencyEj", "idol::Heuristics::IntegerMaster::with_frequency::t_frequency"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster20with_integer_columnsEb", "idol::Heuristics::IntegerMaster::with_integer_columns"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster20with_integer_columnsEb", "idol::Heuristics::IntegerMaster::with_integer_columns::t_value"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster20with_iteration_limitEj", "idol::Heuristics::IntegerMaster::with_iteration_limit"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster20with_iteration_limitEj", "idol::Heuristics::IntegerMaster::with_iteration_limit::t_iteration_limit"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_max_depthEj", "idol::Heuristics::IntegerMaster::with_max_depth"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_max_depthEj", "idol::Heuristics::IntegerMaster::with_max_depth::t_max_depth"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_optimizerERK16OptimizerFactory", "idol::Heuristics::IntegerMaster::with_optimizer"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster14with_optimizerERK16OptimizerFactory", "idol::Heuristics::IntegerMaster::with_optimizer::t_optimizer"], [29, 2, 1, "_CPPv4N4idol10Heuristics13IntegerMaster15with_time_limitEd", "idol::Heuristics::IntegerMaster::with_time_limit"], [29, 4, 1, "_CPPv4N4idol10Heuristics13IntegerMaster15with_time_limitEd", "idol::Heuristics::IntegerMaster::with_time_limit::t_time_limit"], [5, 1, 1, "_CPPv4N4idol10Heuristics14LocalBranchingE", "idol::Heuristics::LocalBranching"], [5, 2, 1, "_CPPv4N4idol10Heuristics14LocalBranching14LocalBranchingEv", "idol::Heuristics::LocalBranching::LocalBranching"], [5, 1, 1, "_CPPv4N4idol10Heuristics14LocalBranching8StrategyE", "idol::Heuristics::LocalBranching::Strategy"], [5, 2, 1, "_CPPv4N4idol10Heuristics14LocalBranching8Strategy8StrategyEjP16OptimizerFactory", "idol::Heuristics::LocalBranching::Strategy::Strategy"], [5, 4, 1, "_CPPv4N4idol10Heuristics14LocalBranching8Strategy8StrategyEjP16OptimizerFactory", "idol::Heuristics::LocalBranching::Strategy::Strategy::t_neighbourhood_size"], [5, 4, 1, "_CPPv4N4idol10Heuristics14LocalBranching8Strategy8StrategyEjP16OptimizerFactory", "idol::Heuristics::LocalBranching::Strategy::Strategy::t_optimizer_factory"], [5, 2, 1, "_CPPv4NK4idol10Heuristics14LocalBranching5cloneEv", "idol::Heuristics::LocalBranching::clone"], [5, 2, 1, "_CPPv4N4idol10Heuristics14LocalBranchingclEv", "idol::Heuristics::LocalBranching::operator()"], [5, 2, 1, "_CPPv4N4idol10Heuristics14LocalBranching14with_optimizerERK16OptimizerFactory", "idol::Heuristics::LocalBranching::with_optimizer"], [5, 4, 1, "_CPPv4N4idol10Heuristics14LocalBranching14with_optimizerERK16OptimizerFactory", "idol::Heuristics::LocalBranching::with_optimizer::t_optimizer_factory"], [6, 1, 1, "_CPPv4N4idol10Heuristics4RENSE", "idol::Heuristics::RENS"], [6, 2, 1, "_CPPv4N4idol10Heuristics4RENS4RENSEv", "idol::Heuristics::RENS::RENS"], [6, 1, 1, "_CPPv4N4idol10Heuristics4RENS8StrategyE", "idol::Heuristics::RENS::Strategy"], [6, 2, 1, "_CPPv4N4idol10Heuristics4RENS8Strategy8StrategyEddP16OptimizerFactory", "idol::Heuristics::RENS::Strategy::Strategy"], [6, 4, 1, "_CPPv4N4idol10Heuristics4RENS8Strategy8StrategyEddP16OptimizerFactory", "idol::Heuristics::RENS::Strategy::Strategy::t_minimum_ratio_of_integer_variables_to_fix"], [6, 4, 1, "_CPPv4N4idol10Heuristics4RENS8Strategy8StrategyEddP16OptimizerFactory", "idol::Heuristics::RENS::Strategy::Strategy::t_minimum_ratio_of_variables_to_fix"], [6, 4, 1, "_CPPv4N4idol10Heuristics4RENS8Strategy8StrategyEddP16OptimizerFactory", "idol::Heuristics::RENS::Strategy::Strategy::t_optimizer_factory"], [6, 2, 1, "_CPPv4NK4idol10Heuristics4RENS5cloneEv", "idol::Heuristics::RENS::clone"], [6, 2, 1, "_CPPv4N4idol10Heuristics4RENSclEv", "idol::Heuristics::RENS::operator()"], [6, 2, 1, "_CPPv4N4idol10Heuristics4RENS14with_optimizerERK16OptimizerFactory", "idol::Heuristics::RENS::with_optimizer"], [6, 4, 1, "_CPPv4N4idol10Heuristics4RENS14with_optimizerERK16OptimizerFactory", "idol::Heuristics::RENS::with_optimizer::t_optimizer_factory"], [7, 1, 1, "_CPPv4N4idol10Heuristics14SimpleRoundingE", "idol::Heuristics::SimpleRounding"], [7, 2, 1, "_CPPv4N4idol10Heuristics14SimpleRounding14SimpleRoundingEv", "idol::Heuristics::SimpleRounding::SimpleRounding"], [7, 1, 1, "_CPPv4N4idol10Heuristics14SimpleRounding8StrategyE", "idol::Heuristics::SimpleRounding::Strategy"], [7, 2, 1, "_CPPv4NK4idol10Heuristics14SimpleRounding5cloneEv", "idol::Heuristics::SimpleRounding::clone"], [7, 2, 1, "_CPPv4N4idol10Heuristics14SimpleRoundingclEv", "idol::Heuristics::SimpleRounding::operator()"], [57, 1, 1, "_CPPv4N4idol5HiGHSE", "idol::HiGHS"], [57, 2, 1, "_CPPv4N4idol5HiGHS20ContinuousRelaxationEv", "idol::HiGHS::ContinuousRelaxation"], [57, 2, 1, "_CPPv4N4idol5HiGHS5HiGHSERK5HiGHS", "idol::HiGHS::HiGHS"], [57, 2, 1, "_CPPv4N4idol5HiGHS5HiGHSERR5HiGHS", "idol::HiGHS::HiGHS"], [57, 2, 1, "_CPPv4N4idol5HiGHS5HiGHSEv", "idol::HiGHS::HiGHS"], [57, 2, 1, "_CPPv4I0EN4idol5HiGHS2asER1Tv", "idol::HiGHS::as"], [57, 2, 1, "_CPPv4I0ENK4idol5HiGHS2asERK1Tv", "idol::HiGHS::as"], [57, 3, 1, "_CPPv4I0EN4idol5HiGHS2asER1Tv", "idol::HiGHS::as::T"], [57, 3, 1, "_CPPv4I0ENK4idol5HiGHS2asERK1Tv", "idol::HiGHS::as::T"], [57, 2, 1, "_CPPv4NK4idol5HiGHS5cloneEv", "idol::HiGHS::clone"], [57, 2, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional"], [57, 2, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEERKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional"], [57, 4, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional::t_conditional_value"], [57, 4, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEERKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional::t_conditional_value"], [57, 4, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEERKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional::t_else"], [57, 4, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional::t_if"], [57, 4, 1, "_CPPv4N4idol5HiGHS11conditionalEbRKNSt8functionIFvR5HiGHSEEERKNSt8functionIFvR5HiGHSEEE", "idol::HiGHS::conditional::t_if"], [57, 2, 1, "_CPPv4I0ENK4idol5HiGHS2isEbv", "idol::HiGHS::is"], [57, 3, 1, "_CPPv4I0ENK4idol5HiGHS2isEbv", "idol::HiGHS::is::T"], [57, 2, 1, "_CPPv4NK4idol5HiGHSclERK5Model", "idol::HiGHS::operator()"], [57, 4, 1, "_CPPv4NK4idol5HiGHSclERK5Model", "idol::HiGHS::operator()::t_model"], [57, 2, 1, "_CPPv4N4idol5HiGHSaSERK5HiGHS", "idol::HiGHS::operator="], [57, 2, 1, "_CPPv4N4idol5HiGHSaSERR5HiGHS", "idol::HiGHS::operator="], [57, 2, 1, "_CPPv4N4idol5HiGHS27with_absolute_gap_toleranceEd", "idol::HiGHS::with_absolute_gap_tolerance"], [57, 4, 1, "_CPPv4N4idol5HiGHS27with_absolute_gap_toleranceEd", "idol::HiGHS::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [57, 2, 1, "_CPPv4N4idol5HiGHS20with_best_bound_stopEd", "idol::HiGHS::with_best_bound_stop"], [57, 4, 1, "_CPPv4N4idol5HiGHS20with_best_bound_stopEd", "idol::HiGHS::with_best_bound_stop::t_best_bound_stop"], [57, 2, 1, "_CPPv4N4idol5HiGHS18with_best_obj_stopEd", "idol::HiGHS::with_best_obj_stop"], [57, 4, 1, "_CPPv4N4idol5HiGHS18with_best_obj_stopEd", "idol::HiGHS::with_best_obj_stop::t_user_best_obj"], [57, 2, 1, "_CPPv4N4idol5HiGHS31with_continuous_relaxation_onlyEb", "idol::HiGHS::with_continuous_relaxation_only"], [57, 4, 1, "_CPPv4N4idol5HiGHS31with_continuous_relaxation_onlyEb", "idol::HiGHS::with_continuous_relaxation_only::t_value"], [57, 2, 1, "_CPPv4N4idol5HiGHS33with_infeasible_or_unbounded_infoEb", "idol::HiGHS::with_infeasible_or_unbounded_info"], [57, 4, 1, "_CPPv4N4idol5HiGHS33with_infeasible_or_unbounded_infoEb", "idol::HiGHS::with_infeasible_or_unbounded_info::t_value"], [57, 2, 1, "_CPPv4N4idol5HiGHS20with_iteration_limitEj", "idol::HiGHS::with_iteration_limit"], [57, 4, 1, "_CPPv4N4idol5HiGHS20with_iteration_limitEj", "idol::HiGHS::with_iteration_limit::t_iteration_count_limit"], [57, 2, 1, "_CPPv4N4idol5HiGHS9with_logsEb", "idol::HiGHS::with_logs"], [57, 4, 1, "_CPPv4N4idol5HiGHS9with_logsEb", "idol::HiGHS::with_logs::t_value"], [57, 2, 1, "_CPPv4N4idol5HiGHS13with_presolveEb", "idol::HiGHS::with_presolve"], [57, 4, 1, "_CPPv4N4idol5HiGHS13with_presolveEb", "idol::HiGHS::with_presolve::t_value"], [57, 2, 1, "_CPPv4N4idol5HiGHS27with_relative_gap_toleranceEd", "idol::HiGHS::with_relative_gap_tolerance"], [57, 4, 1, "_CPPv4N4idol5HiGHS27with_relative_gap_toleranceEd", "idol::HiGHS::with_relative_gap_tolerance::t_relative_gap_tolerance"], [57, 2, 1, "_CPPv4N4idol5HiGHS17with_thread_limitEj", "idol::HiGHS::with_thread_limit"], [57, 4, 1, "_CPPv4N4idol5HiGHS17with_thread_limitEj", "idol::HiGHS::with_thread_limit::t_max_n_threads"], [57, 2, 1, "_CPPv4N4idol5HiGHS15with_time_limitEd", "idol::HiGHS::with_time_limit"], [57, 4, 1, "_CPPv4N4idol5HiGHS15with_time_limitEd", "idol::HiGHS::with_time_limit::t_time_limit"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent17IncumbentSolutionE", "idol::IncumbentSolution"], [76, 7, 1, "_CPPv4N4idol3InfE", "idol::Inf"], [78, 5, 1, "_CPPv4N4idol7VarType7IntegerE", "idol::Integer"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent15InvalidSolutionE", "idol::InvalidSolution"], [72, 1, 1, "_CPPv4N4idol15LazyCutCallbackE", "idol::LazyCutCallback"], [72, 2, 1, "_CPPv4N4idol15LazyCutCallback15LazyCutCallbackERK5Model7TempCtr", "idol::LazyCutCallback::LazyCutCallback"], [72, 4, 1, "_CPPv4N4idol15LazyCutCallback15LazyCutCallbackERK5Model7TempCtr", "idol::LazyCutCallback::LazyCutCallback::t_cut"], [72, 4, 1, "_CPPv4N4idol15LazyCutCallback15LazyCutCallbackERK5Model7TempCtr", "idol::LazyCutCallback::LazyCutCallback::t_model"], [72, 1, 1, "_CPPv4N4idol15LazyCutCallback8StrategyE", "idol::LazyCutCallback::Strategy"], [72, 2, 1, "_CPPv4N4idol15LazyCutCallback8Strategy8StrategyEP5Model7TempCtr", "idol::LazyCutCallback::Strategy::Strategy"], [72, 4, 1, "_CPPv4N4idol15LazyCutCallback8Strategy8StrategyEP5Model7TempCtr", "idol::LazyCutCallback::Strategy::Strategy::t_cut"], [72, 4, 1, "_CPPv4N4idol15LazyCutCallback8Strategy8StrategyEP5Model7TempCtr", "idol::LazyCutCallback::Strategy::Strategy::t_separation_problem"], [72, 2, 1, "_CPPv4NK4idol15LazyCutCallback5cloneEv", "idol::LazyCutCallback::clone"], [72, 2, 1, "_CPPv4N4idol15LazyCutCallbackclEv", "idol::LazyCutCallback::operator()"], [72, 2, 1, "_CPPv4N4idol15LazyCutCallback25with_separation_optimizerERK16OptimizerFactory", "idol::LazyCutCallback::with_separation_optimizer"], [72, 4, 1, "_CPPv4N4idol15LazyCutCallback25with_separation_optimizerERK16OptimizerFactory", "idol::LazyCutCallback::with_separation_optimizer::t_optimizer_factory"], [17, 1, 1, "_CPPv4N4idol15LeastInfeasibleE", "idol::LeastInfeasible"], [17, 2, 1, "_CPPv4I0EN4idol15LeastInfeasible15LeastInfeasibleE9IteratorT9IteratorT", "idol::LeastInfeasible::LeastInfeasible"], [17, 2, 1, "_CPPv4N4idol15LeastInfeasible15LeastInfeasibleEv", "idol::LeastInfeasible::LeastInfeasible"], [17, 3, 1, "_CPPv4I0EN4idol15LeastInfeasible15LeastInfeasibleE9IteratorT9IteratorT", "idol::LeastInfeasible::LeastInfeasible::IteratorT"], [17, 4, 1, "_CPPv4I0EN4idol15LeastInfeasible15LeastInfeasibleE9IteratorT9IteratorT", "idol::LeastInfeasible::LeastInfeasible::t_begin"], [17, 4, 1, "_CPPv4I0EN4idol15LeastInfeasible15LeastInfeasibleE9IteratorT9IteratorT", "idol::LeastInfeasible::LeastInfeasible::t_end"], [17, 1, 1, "_CPPv4I0EN4idol15LeastInfeasible8StrategyE", "idol::LeastInfeasible::Strategy"], [17, 3, 1, "_CPPv4I0EN4idol15LeastInfeasible8StrategyE", "idol::LeastInfeasible::Strategy::NodeInfoT"], [17, 2, 1, "_CPPv4N4idol15LeastInfeasible8Strategy8StrategyERK15LeastInfeasible", "idol::LeastInfeasible::Strategy::Strategy"], [17, 2, 1, "_CPPv4N4idol15LeastInfeasible8Strategy8StrategyEv", "idol::LeastInfeasible::Strategy::Strategy"], [17, 4, 1, "_CPPv4N4idol15LeastInfeasible8Strategy8StrategyERK15LeastInfeasible", "idol::LeastInfeasible::Strategy::Strategy::t_parent"], [17, 2, 1, "_CPPv4NK4idol15LeastInfeasible8Strategy5cloneEv", "idol::LeastInfeasible::Strategy::clone"], [17, 2, 1, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::LeastInfeasible::Strategy::operator()"], [17, 2, 1, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::LeastInfeasible::Strategy::operator()"], [17, 4, 1, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::LeastInfeasible::Strategy::operator()::t_parent"], [17, 4, 1, "_CPPv4NK4idol15LeastInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::LeastInfeasible::Strategy::operator()::t_parent"], [41, 1, 1, "_CPPv4I0EN4idol7LinExprE", "idol::LinExpr"], [41, 3, 1, "_CPPv4I0EN4idol7LinExprE", "idol::LinExpr::Key"], [41, 2, 1, "_CPPv4N4idol7LinExpr7LinExprERK3Key", "idol::LinExpr::LinExpr"], [41, 2, 1, "_CPPv4N4idol7LinExpr7LinExprERK8ConstantRK3Key", "idol::LinExpr::LinExpr"], [41, 2, 1, "_CPPv4N4idol7LinExpr7LinExprERR8ConstantRK3Key", "idol::LinExpr::LinExpr"], [41, 2, 1, "_CPPv4N4idol7LinExpr7LinExprEv", "idol::LinExpr::LinExpr"], [41, 4, 1, "_CPPv4N4idol7LinExpr7LinExprERK8ConstantRK3Key", "idol::LinExpr::LinExpr::t_factor"], [41, 4, 1, "_CPPv4N4idol7LinExpr7LinExprERR8ConstantRK3Key", "idol::LinExpr::LinExpr::t_factor"], [41, 4, 1, "_CPPv4N4idol7LinExpr7LinExprERK3Key", "idol::LinExpr::LinExpr::t_key"], [41, 4, 1, "_CPPv4N4idol7LinExpr7LinExprERK8ConstantRK3Key", "idol::LinExpr::LinExpr::t_key"], [41, 4, 1, "_CPPv4N4idol7LinExpr7LinExprERR8ConstantRK3Key", "idol::LinExpr::LinExpr::t_key"], [41, 2, 1, "_CPPv4NK4idol7LinExpr5beginEv", "idol::LinExpr::begin"], [41, 2, 1, "_CPPv4N4idol7LinExpr5clearEv", "idol::LinExpr::clear"], [41, 2, 1, "_CPPv4NK4idol7LinExpr5emptyEv", "idol::LinExpr::empty"], [41, 2, 1, "_CPPv4NK4idol7LinExpr3endEv", "idol::LinExpr::end"], [41, 2, 1, "_CPPv4NK4idol7LinExpr3fixERKN8Solution6PrimalE", "idol::LinExpr::fix"], [41, 4, 1, "_CPPv4NK4idol7LinExpr3fixERKN8Solution6PrimalE", "idol::LinExpr::fix::t_primals"], [41, 2, 1, "_CPPv4NK4idol7LinExpr3gcdEv", "idol::LinExpr::gcd"], [41, 2, 1, "_CPPv4NK4idol7LinExpr3getERK3Key", "idol::LinExpr::get"], [41, 4, 1, "_CPPv4NK4idol7LinExpr3getERK3Key", "idol::LinExpr::get::t_key"], [41, 2, 1, "_CPPv4N4idol7LinExpr23multiply_with_precisionEdj", "idol::LinExpr::multiply_with_precision"], [41, 4, 1, "_CPPv4N4idol7LinExpr23multiply_with_precisionEdj", "idol::LinExpr::multiply_with_precision::t_factor"], [41, 4, 1, "_CPPv4N4idol7LinExpr23multiply_with_precisionEdj", "idol::LinExpr::multiply_with_precision::t_n_digits"], [41, 2, 1, "_CPPv4N4idol7LinExpr38multiply_with_precision_by_power_of_10Ejj", "idol::LinExpr::multiply_with_precision_by_power_of_10"], [41, 4, 1, "_CPPv4N4idol7LinExpr38multiply_with_precision_by_power_of_10Ejj", "idol::LinExpr::multiply_with_precision_by_power_of_10::t_exponent"], [41, 4, 1, "_CPPv4N4idol7LinExpr38multiply_with_precision_by_power_of_10Ejj", "idol::LinExpr::multiply_with_precision_by_power_of_10::t_n_digits"], [41, 2, 1, "_CPPv4N4idol7LinExprmLEd", "idol::LinExpr::operator*="], [41, 4, 1, "_CPPv4N4idol7LinExprmLEd", "idol::LinExpr::operator*=::t_factor"], [41, 2, 1, "_CPPv4N4idol7LinExprpLERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", "idol::LinExpr::operator+="], [41, 4, 1, "_CPPv4N4idol7LinExprpLERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", "idol::LinExpr::operator+=::t_rhs"], [41, 2, 1, "_CPPv4N4idol7LinExprmIERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", "idol::LinExpr::operator-="], [41, 4, 1, "_CPPv4N4idol7LinExprmIERK12AbstractExprI3Key15IteratorOutputT4Hash7EqualToE", "idol::LinExpr::operator-=::t_rhs"], [41, 2, 1, "_CPPv4N4idol7LinExprdVEd", "idol::LinExpr::operator/="], [41, 4, 1, "_CPPv4N4idol7LinExprdVEd", "idol::LinExpr::operator/=::t_factor"], [41, 2, 1, "_CPPv4N4idol7LinExpr6removeERK3Key", "idol::LinExpr::remove"], [41, 4, 1, "_CPPv4N4idol7LinExpr6removeERK3Key", "idol::LinExpr::remove::t_key"], [41, 2, 1, "_CPPv4N4idol7LinExpr5roundEv", "idol::LinExpr::round"], [41, 2, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRK8Constant", "idol::LinExpr::set"], [41, 2, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRR8Constant", "idol::LinExpr::set"], [41, 4, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRK8Constant", "idol::LinExpr::set::t_coefficient"], [41, 4, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRR8Constant", "idol::LinExpr::set::t_coefficient"], [41, 4, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRK8Constant", "idol::LinExpr::set::t_key"], [41, 4, 1, "_CPPv4N4idol7LinExpr3setERK3KeyRR8Constant", "idol::LinExpr::set::t_key"], [41, 2, 1, "_CPPv4NK4idol7LinExpr4sizeEv", "idol::LinExpr::size"], [42, 1, 1, "_CPPv4N4idol5ModelE", "idol::Model"], [42, 2, 1, "_CPPv4N4idol5Model5ModelER3Env", "idol::Model::Model"], [42, 2, 1, "_CPPv4N4idol5Model5ModelER3Env14ObjectiveSense", "idol::Model::Model"], [42, 2, 1, "_CPPv4N4idol5Model5ModelERR5Model", "idol::Model::Model"], [42, 4, 1, "_CPPv4N4idol5Model5ModelER3Env", "idol::Model::Model::t_env"], [42, 4, 1, "_CPPv4N4idol5Model5ModelER3Env14ObjectiveSense", "idol::Model::Model::t_env"], [42, 4, 1, "_CPPv4N4idol5Model5ModelER3Env14ObjectiveSense", "idol::Model::Model::t_sense"], [42, 2, 1, "_CPPv4N4idol5Model3addERK3Ctr", "idol::Model::add"], [42, 2, 1, "_CPPv4N4idol5Model3addERK3Ctr7TempCtr", "idol::Model::add"], [42, 2, 1, "_CPPv4N4idol5Model3addERK3Var", "idol::Model::add"], [42, 2, 1, "_CPPv4N4idol5Model3addERK3Var7TempVar", "idol::Model::add"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Ctr", "idol::Model::add::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Ctr7TempCtr", "idol::Model::add::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Ctr7TempCtr", "idol::Model::add::t_temp_ctr"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Var7TempVar", "idol::Model::add::t_temp_var"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Var", "idol::Model::add::t_var"], [42, 4, 1, "_CPPv4N4idol5Model3addERK3Var7TempVar", "idol::Model::add::t_var"], [42, 2, 1, "_CPPv4N4idol5Model7add_ctrE7TempCtrNSt6stringE", "idol::Model::add_ctr"], [42, 2, 1, "_CPPv4N4idol5Model7add_ctrERR3Row7CtrTypeNSt6stringE", "idol::Model::add_ctr"], [42, 4, 1, "_CPPv4N4idol5Model7add_ctrE7TempCtrNSt6stringE", "idol::Model::add_ctr::t_name"], [42, 4, 1, "_CPPv4N4idol5Model7add_ctrERR3Row7CtrTypeNSt6stringE", "idol::Model::add_ctr::t_name"], [42, 4, 1, "_CPPv4N4idol5Model7add_ctrERR3Row7CtrTypeNSt6stringE", "idol::Model::add_ctr::t_row"], [42, 4, 1, "_CPPv4N4idol5Model7add_ctrE7TempCtrNSt6stringE", "idol::Model::add_ctr::t_temp_ctr"], [42, 4, 1, "_CPPv4N4idol5Model7add_ctrERR3Row7CtrTypeNSt6stringE", "idol::Model::add_ctr::t_type"], [42, 2, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs"], [42, 2, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs"], [42, 3, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::N"], [42, 3, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::N"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_constant"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_constant"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_dim"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_dim"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_name"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_name"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsE6VectorI3Ctr1NE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_type"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_ctrsEN4idol6VectorIN4idol3CtrE1NEE3DimI1NE7CtrTypeRK8ConstantRKNSt6stringE", "idol::Model::add_ctrs::t_type"], [42, 2, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var"], [42, 2, 1, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", "idol::Model::add_var"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var::t_column"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var::t_lb"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", "idol::Model::add_var::t_lb"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var::t_name"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", "idol::Model::add_var::t_name"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var::t_type"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", "idol::Model::add_var::t_type"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarType6ColumnNSt6stringE", "idol::Model::add_var::t_ub"], [42, 4, 1, "_CPPv4N4idol5Model7add_varEdd7VarTypeNSt6stringE", "idol::Model::add_var::t_ub"], [42, 2, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars"], [42, 2, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars"], [42, 3, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::N"], [42, 3, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::N"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_dim"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_dim"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_lb"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_lb"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_name"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_name"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_type"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_type"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsE6VectorI3Var1NE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_ub"], [42, 4, 1, "_CPPv4I_jEN4idol5Model8add_varsEN4idol6VectorIN4idol3VarE1NEE3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Model::add_vars::t_ub"], [42, 2, 1, "_CPPv4I0_jEN4idol5Model10add_vectorEvRK6VectorI1T1NE", "idol::Model::add_vector"], [42, 3, 1, "_CPPv4I0_jEN4idol5Model10add_vectorEvRK6VectorI1T1NE", "idol::Model::add_vector::N"], [42, 3, 1, "_CPPv4I0_jEN4idol5Model10add_vectorEvRK6VectorI1T1NE", "idol::Model::add_vector::T"], [42, 4, 1, "_CPPv4I0_jEN4idol5Model10add_vectorEvRK6VectorI1T1NE", "idol::Model::add_vector::t_vector"], [42, 2, 1, "_CPPv4NK4idol5Model5cloneEv", "idol::Model::clone"], [42, 2, 1, "_CPPv4NK4idol5Model4copyEv", "idol::Model::copy"], [42, 2, 1, "_CPPv4NK4idol5Model4ctrsEv", "idol::Model::ctrs"], [42, 2, 1, "_CPPv4NK4idol5Model3envEv", "idol::Model::env"], [42, 2, 1, "_CPPv4NK4idol5Model3fixERKN8Solution6PrimalE", "idol::Model::fix"], [42, 4, 1, "_CPPv4NK4idol5Model3fixERKN8Solution6PrimalE", "idol::Model::fix::t_primals"], [42, 2, 1, "_CPPv4NK4idol5Model14get_best_boundEv", "idol::Model::get_best_bound"], [42, 2, 1, "_CPPv4NK4idol5Model12get_best_objEv", "idol::Model::get_best_obj"], [42, 2, 1, "_CPPv4NK4idol5Model16get_ctr_by_indexEj", "idol::Model::get_ctr_by_index"], [42, 4, 1, "_CPPv4NK4idol5Model16get_ctr_by_indexEj", "idol::Model::get_ctr_by_index::t_index"], [42, 2, 1, "_CPPv4NK4idol5Model12get_ctr_dualERK3Ctr", "idol::Model::get_ctr_dual"], [42, 4, 1, "_CPPv4NK4idol5Model12get_ctr_dualERK3Ctr", "idol::Model::get_ctr_dual::t_ctr"], [42, 2, 1, "_CPPv4NK4idol5Model14get_ctr_farkasERK3Ctr", "idol::Model::get_ctr_farkas"], [42, 4, 1, "_CPPv4NK4idol5Model14get_ctr_farkasERK3Ctr", "idol::Model::get_ctr_farkas::t_ctr"], [42, 2, 1, "_CPPv4NK4idol5Model13get_ctr_indexERK3Ctr", "idol::Model::get_ctr_index"], [42, 4, 1, "_CPPv4NK4idol5Model13get_ctr_indexERK3Ctr", "idol::Model::get_ctr_index::t_ctr"], [42, 2, 1, "_CPPv4NK4idol5Model11get_ctr_rowERK3Ctr", "idol::Model::get_ctr_row"], [42, 4, 1, "_CPPv4NK4idol5Model11get_ctr_rowERK3Ctr", "idol::Model::get_ctr_row::t_ctr"], [42, 2, 1, "_CPPv4NK4idol5Model12get_ctr_typeERK3Ctr", "idol::Model::get_ctr_type"], [42, 4, 1, "_CPPv4NK4idol5Model12get_ctr_typeERK3Ctr", "idol::Model::get_ctr_type::t_ctr"], [42, 2, 1, "_CPPv4NK4idol5Model13get_mat_coeffERK3CtrRK3Var", "idol::Model::get_mat_coeff"], [42, 4, 1, "_CPPv4NK4idol5Model13get_mat_coeffERK3CtrRK3Var", "idol::Model::get_mat_coeff::t_ctr"], [42, 4, 1, "_CPPv4NK4idol5Model13get_mat_coeffERK3CtrRK3Var", "idol::Model::get_mat_coeff::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model15get_n_solutionsEv", "idol::Model::get_n_solutions"], [42, 2, 1, "_CPPv4NK4idol5Model12get_obj_exprEv", "idol::Model::get_obj_expr"], [42, 2, 1, "_CPPv4NK4idol5Model13get_obj_senseEv", "idol::Model::get_obj_sense"], [42, 2, 1, "_CPPv4NK4idol5Model10get_reasonEv", "idol::Model::get_reason"], [42, 2, 1, "_CPPv4NK4idol5Model12get_rhs_exprEv", "idol::Model::get_rhs_expr"], [42, 2, 1, "_CPPv4NK4idol5Model18get_solution_indexEv", "idol::Model::get_solution_index"], [42, 2, 1, "_CPPv4NK4idol5Model10get_statusEv", "idol::Model::get_status"], [42, 2, 1, "_CPPv4NK4idol5Model16get_var_by_indexEj", "idol::Model::get_var_by_index"], [42, 4, 1, "_CPPv4NK4idol5Model16get_var_by_indexEj", "idol::Model::get_var_by_index::t_index"], [42, 2, 1, "_CPPv4NK4idol5Model14get_var_columnERK3Var", "idol::Model::get_var_column"], [42, 4, 1, "_CPPv4NK4idol5Model14get_var_columnERK3Var", "idol::Model::get_var_column::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model13get_var_indexERK3Var", "idol::Model::get_var_index"], [42, 4, 1, "_CPPv4NK4idol5Model13get_var_indexERK3Var", "idol::Model::get_var_index::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model10get_var_lbERK3Var", "idol::Model::get_var_lb"], [42, 4, 1, "_CPPv4NK4idol5Model10get_var_lbERK3Var", "idol::Model::get_var_lb::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model14get_var_primalERK3Var", "idol::Model::get_var_primal"], [42, 4, 1, "_CPPv4NK4idol5Model14get_var_primalERK3Var", "idol::Model::get_var_primal::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model11get_var_rayERK3Var", "idol::Model::get_var_ray"], [42, 4, 1, "_CPPv4NK4idol5Model11get_var_rayERK3Var", "idol::Model::get_var_ray::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model20get_var_reduced_costERK3Var", "idol::Model::get_var_reduced_cost"], [42, 4, 1, "_CPPv4NK4idol5Model20get_var_reduced_costERK3Var", "idol::Model::get_var_reduced_cost::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model12get_var_typeERK3Var", "idol::Model::get_var_type"], [42, 4, 1, "_CPPv4NK4idol5Model12get_var_typeERK3Var", "idol::Model::get_var_type::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model10get_var_ubERK3Var", "idol::Model::get_var_ub"], [42, 4, 1, "_CPPv4NK4idol5Model10get_var_ubERK3Var", "idol::Model::get_var_ub::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model3hasERK3Ctr", "idol::Model::has"], [42, 2, 1, "_CPPv4NK4idol5Model3hasERK3Var", "idol::Model::has"], [42, 4, 1, "_CPPv4NK4idol5Model3hasERK3Ctr", "idol::Model::has::t_ctr"], [42, 4, 1, "_CPPv4NK4idol5Model3hasERK3Var", "idol::Model::has::t_var"], [42, 2, 1, "_CPPv4NK4idol5Model13has_optimizerEv", "idol::Model::has_optimizer"], [42, 2, 1, "_CPPv4NK4idol5Model21has_optimizer_factoryEv", "idol::Model::has_optimizer_factory"], [42, 2, 1, "_CPPv4NK4idol5Model2idEv", "idol::Model::id"], [42, 2, 1, "_CPPv4N4idol5ModelaSERK5Model", "idol::Model::operator="], [42, 2, 1, "_CPPv4N4idol5ModelaSERR5Model", "idol::Model::operator="], [42, 2, 1, "_CPPv4N4idol5Model8optimizeEv", "idol::Model::optimize"], [42, 2, 1, "_CPPv4N4idol5Model9optimizerEv", "idol::Model::optimizer"], [42, 2, 1, "_CPPv4NK4idol5Model9optimizerEv", "idol::Model::optimizer"], [42, 2, 1, "_CPPv4NK4idol5Model17optimizer_factoryEv", "idol::Model::optimizer_factory"], [42, 2, 1, "_CPPv4N4idol5Model6removeERK3Ctr", "idol::Model::remove"], [42, 2, 1, "_CPPv4N4idol5Model6removeERK3Var", "idol::Model::remove"], [42, 4, 1, "_CPPv4N4idol5Model6removeERK3Ctr", "idol::Model::remove::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model6removeERK3Var", "idol::Model::remove::t_var"], [42, 2, 1, "_CPPv4N4idol5Model12reserve_ctrsEj", "idol::Model::reserve_ctrs"], [42, 4, 1, "_CPPv4N4idol5Model12reserve_ctrsEj", "idol::Model::reserve_ctrs::t_size"], [42, 2, 1, "_CPPv4N4idol5Model12reserve_varsEj", "idol::Model::reserve_vars"], [42, 4, 1, "_CPPv4N4idol5Model12reserve_varsEj", "idol::Model::reserve_vars::t_size"], [42, 2, 1, "_CPPv4N4idol5Model17scale_to_integersEj", "idol::Model::scale_to_integers"], [42, 4, 1, "_CPPv4N4idol5Model17scale_to_integersEj", "idol::Model::scale_to_integers::t_n_digits"], [42, 2, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRK8Constant", "idol::Model::set_ctr_rhs"], [42, 2, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRR8Constant", "idol::Model::set_ctr_rhs"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRK8Constant", "idol::Model::set_ctr_rhs::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRR8Constant", "idol::Model::set_ctr_rhs::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRK8Constant", "idol::Model::set_ctr_rhs::t_rhs"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rhsERK3CtrRR8Constant", "idol::Model::set_ctr_rhs::t_rhs"], [42, 2, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRK3Row", "idol::Model::set_ctr_row"], [42, 2, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRR3Row", "idol::Model::set_ctr_row"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRK3Row", "idol::Model::set_ctr_row::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRR3Row", "idol::Model::set_ctr_row::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRK3Row", "idol::Model::set_ctr_row::t_row"], [42, 4, 1, "_CPPv4N4idol5Model11set_ctr_rowERK3CtrRR3Row", "idol::Model::set_ctr_row::t_row"], [42, 2, 1, "_CPPv4N4idol5Model12set_ctr_typeERK3Ctr7CtrType", "idol::Model::set_ctr_type"], [42, 4, 1, "_CPPv4N4idol5Model12set_ctr_typeERK3Ctr7CtrType", "idol::Model::set_ctr_type::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model12set_ctr_typeERK3Ctr7CtrType", "idol::Model::set_ctr_type::t_type"], [42, 2, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRK8Constant", "idol::Model::set_mat_coeff"], [42, 2, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRR8Constant", "idol::Model::set_mat_coeff"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRK8Constant", "idol::Model::set_mat_coeff::t_coeff"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRR8Constant", "idol::Model::set_mat_coeff::t_coeff"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRK8Constant", "idol::Model::set_mat_coeff::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRR8Constant", "idol::Model::set_mat_coeff::t_ctr"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRK8Constant", "idol::Model::set_mat_coeff::t_var"], [42, 4, 1, "_CPPv4N4idol5Model13set_mat_coeffERK3CtrRK3VarRR8Constant", "idol::Model::set_mat_coeff::t_var"], [42, 2, 1, "_CPPv4N4idol5Model13set_obj_constERK8Constant", "idol::Model::set_obj_const"], [42, 2, 1, "_CPPv4N4idol5Model13set_obj_constERR8Constant", "idol::Model::set_obj_const"], [42, 4, 1, "_CPPv4N4idol5Model13set_obj_constERK8Constant", "idol::Model::set_obj_const::t_constant"], [42, 4, 1, "_CPPv4N4idol5Model13set_obj_constERR8Constant", "idol::Model::set_obj_const::t_constant"], [42, 2, 1, "_CPPv4N4idol5Model12set_obj_exprERK4ExprI3Var3VarE", "idol::Model::set_obj_expr"], [42, 2, 1, "_CPPv4N4idol5Model12set_obj_exprERR4ExprI3Var3VarE", "idol::Model::set_obj_expr"], [42, 4, 1, "_CPPv4N4idol5Model12set_obj_exprERK4ExprI3Var3VarE", "idol::Model::set_obj_expr::t_objective"], [42, 4, 1, "_CPPv4N4idol5Model12set_obj_exprERR4ExprI3Var3VarE", "idol::Model::set_obj_expr::t_objective"], [42, 2, 1, "_CPPv4N4idol5Model13set_obj_senseE14ObjectiveSense", "idol::Model::set_obj_sense"], [42, 4, 1, "_CPPv4N4idol5Model13set_obj_senseE14ObjectiveSense", "idol::Model::set_obj_sense::t_value"], [42, 2, 1, "_CPPv4N4idol5Model12set_rhs_exprERK7LinExprI3CtrE", "idol::Model::set_rhs_expr"], [42, 2, 1, "_CPPv4N4idol5Model12set_rhs_exprERR7LinExprI3CtrE", "idol::Model::set_rhs_expr"], [42, 4, 1, "_CPPv4N4idol5Model12set_rhs_exprERK7LinExprI3CtrE", "idol::Model::set_rhs_expr::t_rhs"], [42, 4, 1, "_CPPv4N4idol5Model12set_rhs_exprERR7LinExprI3CtrE", "idol::Model::set_rhs_expr::t_rhs"], [42, 2, 1, "_CPPv4N4idol5Model18set_solution_indexEj", "idol::Model::set_solution_index"], [42, 4, 1, "_CPPv4N4idol5Model18set_solution_indexEj", "idol::Model::set_solution_index::t_index"], [42, 2, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRK6Column", "idol::Model::set_var_column"], [42, 2, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRR6Column", "idol::Model::set_var_column"], [42, 4, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRK6Column", "idol::Model::set_var_column::t_column"], [42, 4, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRR6Column", "idol::Model::set_var_column::t_column"], [42, 4, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRK6Column", "idol::Model::set_var_column::t_var"], [42, 4, 1, "_CPPv4N4idol5Model14set_var_columnERK3VarRR6Column", "idol::Model::set_var_column::t_var"], [42, 2, 1, "_CPPv4N4idol5Model10set_var_lbERK3Vard", "idol::Model::set_var_lb"], [42, 4, 1, "_CPPv4N4idol5Model10set_var_lbERK3Vard", "idol::Model::set_var_lb::t_lb"], [42, 4, 1, "_CPPv4N4idol5Model10set_var_lbERK3Vard", "idol::Model::set_var_lb::t_var"], [42, 2, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRK8Constant", "idol::Model::set_var_obj"], [42, 2, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRR8Constant", "idol::Model::set_var_obj"], [42, 4, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRK8Constant", "idol::Model::set_var_obj::t_obj"], [42, 4, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRR8Constant", "idol::Model::set_var_obj::t_obj"], [42, 4, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRK8Constant", "idol::Model::set_var_obj::t_var"], [42, 4, 1, "_CPPv4N4idol5Model11set_var_objERK3VarRR8Constant", "idol::Model::set_var_obj::t_var"], [42, 2, 1, "_CPPv4N4idol5Model12set_var_typeERK3Var7VarType", "idol::Model::set_var_type"], [42, 4, 1, "_CPPv4N4idol5Model12set_var_typeERK3Var7VarType", "idol::Model::set_var_type::t_type"], [42, 4, 1, "_CPPv4N4idol5Model12set_var_typeERK3Var7VarType", "idol::Model::set_var_type::t_var"], [42, 2, 1, "_CPPv4N4idol5Model10set_var_ubERK3Vard", "idol::Model::set_var_ub"], [42, 4, 1, "_CPPv4N4idol5Model10set_var_ubERK3Vard", "idol::Model::set_var_ub::t_ub"], [42, 4, 1, "_CPPv4N4idol5Model10set_var_ubERK3Vard", "idol::Model::set_var_ub::t_var"], [42, 2, 1, "_CPPv4N4idol5Model5unuseEv", "idol::Model::unuse"], [42, 2, 1, "_CPPv4N4idol5Model6updateEv", "idol::Model::update"], [42, 2, 1, "_CPPv4N4idol5Model3useERK16OptimizerFactory", "idol::Model::use"], [42, 4, 1, "_CPPv4N4idol5Model3useERK16OptimizerFactory", "idol::Model::use::t_optimizer_factory"], [42, 2, 1, "_CPPv4NK4idol5Model4varsEv", "idol::Model::vars"], [42, 2, 1, "_CPPv4N4idol5Model5writeERKNSt6stringE", "idol::Model::write"], [42, 4, 1, "_CPPv4N4idol5Model5writeERKNSt6stringE", "idol::Model::write::t_name"], [42, 2, 1, "_CPPv4N4idol5ModelD0Ev", "idol::Model::~Model"], [58, 1, 1, "_CPPv4N4idol5MosekE", "idol::Mosek"], [58, 2, 1, "_CPPv4N4idol5Mosek20ContinuousRelaxationEv", "idol::Mosek::ContinuousRelaxation"], [58, 2, 1, "_CPPv4N4idol5Mosek5MosekERK5Mosek", "idol::Mosek::Mosek"], [58, 2, 1, "_CPPv4N4idol5Mosek5MosekERR5Mosek", "idol::Mosek::Mosek"], [58, 2, 1, "_CPPv4N4idol5Mosek5MosekEv", "idol::Mosek::Mosek"], [58, 2, 1, "_CPPv4N4idol5Mosek12add_callbackERK15CallbackFactory", "idol::Mosek::add_callback"], [58, 4, 1, "_CPPv4N4idol5Mosek12add_callbackERK15CallbackFactory", "idol::Mosek::add_callback::t_cb"], [58, 2, 1, "_CPPv4I0EN4idol5Mosek2asER1Tv", "idol::Mosek::as"], [58, 2, 1, "_CPPv4I0ENK4idol5Mosek2asERK1Tv", "idol::Mosek::as"], [58, 3, 1, "_CPPv4I0EN4idol5Mosek2asER1Tv", "idol::Mosek::as::T"], [58, 3, 1, "_CPPv4I0ENK4idol5Mosek2asERK1Tv", "idol::Mosek::as::T"], [58, 2, 1, "_CPPv4NK4idol5Mosek5cloneEv", "idol::Mosek::clone"], [58, 2, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional"], [58, 2, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEERKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional"], [58, 4, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional::t_conditional_value"], [58, 4, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEERKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional::t_conditional_value"], [58, 4, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEERKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional::t_else"], [58, 4, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional::t_if"], [58, 4, 1, "_CPPv4N4idol5Mosek11conditionalEbRKNSt8functionIFvR5MosekEEERKNSt8functionIFvR5MosekEEE", "idol::Mosek::conditional::t_if"], [58, 2, 1, "_CPPv4I0ENK4idol5Mosek2isEbv", "idol::Mosek::is"], [58, 3, 1, "_CPPv4I0ENK4idol5Mosek2isEbv", "idol::Mosek::is::T"], [58, 2, 1, "_CPPv4NK4idol5MosekclERK5Model", "idol::Mosek::operator()"], [58, 4, 1, "_CPPv4NK4idol5MosekclERK5Model", "idol::Mosek::operator()::t_model"], [58, 2, 1, "_CPPv4N4idol5MosekaSERK5Mosek", "idol::Mosek::operator="], [58, 2, 1, "_CPPv4N4idol5MosekaSERR5Mosek", "idol::Mosek::operator="], [58, 2, 1, "_CPPv4N4idol5Mosek27with_absolute_gap_toleranceEd", "idol::Mosek::with_absolute_gap_tolerance"], [58, 4, 1, "_CPPv4N4idol5Mosek27with_absolute_gap_toleranceEd", "idol::Mosek::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [58, 2, 1, "_CPPv4N4idol5Mosek20with_best_bound_stopEd", "idol::Mosek::with_best_bound_stop"], [58, 4, 1, "_CPPv4N4idol5Mosek20with_best_bound_stopEd", "idol::Mosek::with_best_bound_stop::t_best_bound_stop"], [58, 2, 1, "_CPPv4N4idol5Mosek18with_best_obj_stopEd", "idol::Mosek::with_best_obj_stop"], [58, 4, 1, "_CPPv4N4idol5Mosek18with_best_obj_stopEd", "idol::Mosek::with_best_obj_stop::t_user_best_obj"], [58, 2, 1, "_CPPv4N4idol5Mosek31with_continuous_relaxation_onlyEb", "idol::Mosek::with_continuous_relaxation_only"], [58, 4, 1, "_CPPv4N4idol5Mosek31with_continuous_relaxation_onlyEb", "idol::Mosek::with_continuous_relaxation_only::t_value"], [58, 2, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringENSt6stringE", "idol::Mosek::with_external_parameter"], [58, 2, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEd", "idol::Mosek::with_external_parameter"], [58, 2, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEi", "idol::Mosek::with_external_parameter"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringENSt6stringE", "idol::Mosek::with_external_parameter::t_param"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEd", "idol::Mosek::with_external_parameter::t_param"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEi", "idol::Mosek::with_external_parameter::t_param"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringENSt6stringE", "idol::Mosek::with_external_parameter::t_value"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEd", "idol::Mosek::with_external_parameter::t_value"], [58, 4, 1, "_CPPv4N4idol5Mosek23with_external_parameterERKNSt6stringEi", "idol::Mosek::with_external_parameter::t_value"], [58, 2, 1, "_CPPv4N4idol5Mosek33with_infeasible_or_unbounded_infoEb", "idol::Mosek::with_infeasible_or_unbounded_info"], [58, 4, 1, "_CPPv4N4idol5Mosek33with_infeasible_or_unbounded_infoEb", "idol::Mosek::with_infeasible_or_unbounded_info::t_value"], [58, 2, 1, "_CPPv4N4idol5Mosek20with_iteration_limitEj", "idol::Mosek::with_iteration_limit"], [58, 4, 1, "_CPPv4N4idol5Mosek20with_iteration_limitEj", "idol::Mosek::with_iteration_limit::t_iteration_count_limit"], [58, 2, 1, "_CPPv4N4idol5Mosek9with_logsEb", "idol::Mosek::with_logs"], [58, 4, 1, "_CPPv4N4idol5Mosek9with_logsEb", "idol::Mosek::with_logs::t_value"], [58, 2, 1, "_CPPv4N4idol5Mosek13with_presolveEb", "idol::Mosek::with_presolve"], [58, 4, 1, "_CPPv4N4idol5Mosek13with_presolveEb", "idol::Mosek::with_presolve::t_value"], [58, 2, 1, "_CPPv4N4idol5Mosek27with_relative_gap_toleranceEd", "idol::Mosek::with_relative_gap_tolerance"], [58, 4, 1, "_CPPv4N4idol5Mosek27with_relative_gap_toleranceEd", "idol::Mosek::with_relative_gap_tolerance::t_relative_gap_tolerance"], [58, 2, 1, "_CPPv4N4idol5Mosek17with_thread_limitEj", "idol::Mosek::with_thread_limit"], [58, 4, 1, "_CPPv4N4idol5Mosek17with_thread_limitEj", "idol::Mosek::with_thread_limit::t_max_n_threads"], [58, 2, 1, "_CPPv4N4idol5Mosek15with_time_limitEd", "idol::Mosek::with_time_limit"], [58, 4, 1, "_CPPv4N4idol5Mosek15with_time_limitEd", "idol::Mosek::with_time_limit::t_time_limit"], [18, 1, 1, "_CPPv4N4idol14MostInfeasibleE", "idol::MostInfeasible"], [18, 2, 1, "_CPPv4I0EN4idol14MostInfeasible14MostInfeasibleE9IteratorT9IteratorT", "idol::MostInfeasible::MostInfeasible"], [18, 2, 1, "_CPPv4N4idol14MostInfeasible14MostInfeasibleEv", "idol::MostInfeasible::MostInfeasible"], [18, 3, 1, "_CPPv4I0EN4idol14MostInfeasible14MostInfeasibleE9IteratorT9IteratorT", "idol::MostInfeasible::MostInfeasible::IteratorT"], [18, 4, 1, "_CPPv4I0EN4idol14MostInfeasible14MostInfeasibleE9IteratorT9IteratorT", "idol::MostInfeasible::MostInfeasible::t_begin"], [18, 4, 1, "_CPPv4I0EN4idol14MostInfeasible14MostInfeasibleE9IteratorT9IteratorT", "idol::MostInfeasible::MostInfeasible::t_end"], [18, 1, 1, "_CPPv4I0EN4idol14MostInfeasible8StrategyE", "idol::MostInfeasible::Strategy"], [18, 3, 1, "_CPPv4I0EN4idol14MostInfeasible8StrategyE", "idol::MostInfeasible::Strategy::NodeInfoT"], [18, 2, 1, "_CPPv4N4idol14MostInfeasible8Strategy8StrategyERK14MostInfeasible", "idol::MostInfeasible::Strategy::Strategy"], [18, 2, 1, "_CPPv4N4idol14MostInfeasible8Strategy8StrategyEv", "idol::MostInfeasible::Strategy::Strategy"], [18, 4, 1, "_CPPv4N4idol14MostInfeasible8Strategy8StrategyERK14MostInfeasible", "idol::MostInfeasible::Strategy::Strategy::t_parent"], [18, 2, 1, "_CPPv4NK4idol14MostInfeasible8Strategy5cloneEv", "idol::MostInfeasible::Strategy::clone"], [18, 2, 1, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::MostInfeasible::Strategy::operator()"], [18, 2, 1, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::MostInfeasible::Strategy::operator()"], [18, 4, 1, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::MostInfeasible::Strategy::operator()::t_parent"], [18, 4, 1, "_CPPv4NK4idol14MostInfeasible8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::MostInfeasible::Strategy::operator()::t_parent"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent10NodeLoadedE", "idol::NodeLoaded"], [30, 1, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecompositionE", "idol::Optimizers::DantzigWolfeDecomposition"], [30, 1, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGenerationE", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration16ColumnGenerationER25DantzigWolfeDecompositionbd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::ColumnGeneration"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration16ColumnGenerationER25DantzigWolfeDecompositionbd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::ColumnGeneration::t_best_bound_stop"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration16ColumnGenerationER25DantzigWolfeDecompositionbd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::ColumnGeneration::t_parent"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration16ColumnGenerationER25DantzigWolfeDecompositionbd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::ColumnGeneration::t_use_farkas_for_infeasibility"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration10best_boundEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::best_bound"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration8best_objEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::best_obj"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration7executeEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::execute"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6parentEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::parent"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6parentEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::parent"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration15primal_solutionEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::primal_solution"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6reasonEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::reason"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration19set_best_bound_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::set_best_bound_stop"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration19set_best_bound_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::set_best_bound_stop::t_best_bound_stop"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16ColumnGeneration6statusEv", "idol::Optimizers::DantzigWolfeDecomposition::ColumnGeneration::status"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_formulation"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_logger_factory"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_master_optimizer_factory"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_max_parallel_pricing"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_model"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_remove_infeasible_columns"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_stabilization"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_strategy"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_sub_problem_specifications"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25DantzigWolfeDecompositionERK5ModelRRN4idol12DantzigWolfe11FormulationERK16OptimizerFactoryRKN12DantzigWolfe31DualPriceSmoothingStabilizationEjbbRRNSt6vectorIN12DantzigWolfe10SubProblemEEERKN12DantzigWolfe28InfeasibilityStrategyFactoryERKN4Logs12DantzigWolfe7FactoryE", "idol::Optimizers::DantzigWolfeDecomposition::DantzigWolfeDecomposition::t_use_hard_branching"], [30, 2, 1, "_CPPv4I0EN4idol10Optimizers25DantzigWolfeDecomposition2asER1Tv", "idol::Optimizers::DantzigWolfeDecomposition::as"], [30, 2, 1, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2asERK1Tv", "idol::Optimizers::DantzigWolfeDecomposition::as"], [30, 3, 1, "_CPPv4I0EN4idol10Optimizers25DantzigWolfeDecomposition2asER1Tv", "idol::Optimizers::DantzigWolfeDecomposition::as::T"], [30, 3, 1, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2asERK1Tv", "idol::Optimizers::DantzigWolfeDecomposition::as::T"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition11formulationEv", "idol::Optimizers::DantzigWolfeDecomposition::formulation"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition11formulationEv", "idol::Optimizers::DantzigWolfeDecomposition::formulation"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16get_absolute_gapEv", "idol::Optimizers::DantzigWolfeDecomposition::get_absolute_gap"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition14get_best_boundEv", "idol::Optimizers::DantzigWolfeDecomposition::get_best_bound"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition12get_best_objEv", "idol::Optimizers::DantzigWolfeDecomposition::get_best_obj"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition25get_param_best_bound_stopEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_best_bound_stop"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition23get_param_best_obj_stopEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_best_obj_stop"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition38get_param_infeasible_or_unbounded_infoEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_infeasible_or_unbounded_info"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition25get_param_iteration_limitEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_iteration_limit"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition14get_param_logsEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_logs"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_param_presolveEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_presolve"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition22get_param_thread_limitEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_thread_limit"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition20get_param_time_limitEv", "idol::Optimizers::DantzigWolfeDecomposition::get_param_time_limit"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition10get_reasonEv", "idol::Optimizers::DantzigWolfeDecomposition::get_reason"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition16get_relative_gapEv", "idol::Optimizers::DantzigWolfeDecomposition::get_relative_gap"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_remaining_timeEv", "idol::Optimizers::DantzigWolfeDecomposition::get_remaining_time"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition10get_statusEv", "idol::Optimizers::DantzigWolfeDecomposition::get_status"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition19get_tol_feasibilityEv", "idol::Optimizers::DantzigWolfeDecomposition::get_tol_feasibility"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition15get_tol_integerEv", "idol::Optimizers::DantzigWolfeDecomposition::get_tol_integer"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition24get_tol_mip_absolute_gapEv", "idol::Optimizers::DantzigWolfeDecomposition::get_tol_mip_absolute_gap"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition24get_tol_mip_relative_gapEv", "idol::Optimizers::DantzigWolfeDecomposition::get_tol_mip_relative_gap"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition18get_tol_optimalityEv", "idol::Optimizers::DantzigWolfeDecomposition::get_tol_optimality"], [30, 2, 1, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2isEbv", "idol::Optimizers::DantzigWolfeDecomposition::is"], [30, 3, 1, "_CPPv4I0ENK4idol10Optimizers25DantzigWolfeDecomposition2isEbv", "idol::Optimizers::DantzigWolfeDecomposition::is::T"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition13is_terminatedEv", "idol::Optimizers::DantzigWolfeDecomposition::is_terminated"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition4nameEv", "idol::Optimizers::DantzigWolfeDecomposition::name"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition6parentEv", "idol::Optimizers::DantzigWolfeDecomposition::parent"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_best_bound_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_best_bound_stop"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_best_bound_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_best_bound_stop::t_best_bound_stop"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition23set_param_best_obj_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_best_obj_stop"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition23set_param_best_obj_stopEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_best_obj_stop::t_best_obj_stop"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_infeasible_or_unbounded_info"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_infeasible_or_unbounded_info::t_value"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_iteration_limitEj", "idol::Optimizers::DantzigWolfeDecomposition::set_param_iteration_limit"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition25set_param_iteration_limitEj", "idol::Optimizers::DantzigWolfeDecomposition::set_param_iteration_limit::t_iteration_limit"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition14set_param_logsEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_logs"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition14set_param_logsEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_logs::t_value"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_param_presolveEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_presolve"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_param_presolveEb", "idol::Optimizers::DantzigWolfeDecomposition::set_param_presolve::t_value"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition17set_param_threadsEj", "idol::Optimizers::DantzigWolfeDecomposition::set_param_threads"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition17set_param_threadsEj", "idol::Optimizers::DantzigWolfeDecomposition::set_param_threads::t_threads"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition20set_param_time_limitEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_time_limit"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition20set_param_time_limitEd", "idol::Optimizers::DantzigWolfeDecomposition::set_param_time_limit::t_time_limit"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition19set_tol_feasibilityEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_feasibility"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition19set_tol_feasibilityEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_feasibility::t_tol_feasibility"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition15set_tol_integerEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_integer"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition15set_tol_integerEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_integer::t_tol_integer"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_absolute_gapEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_mip_absolute_gap"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_absolute_gapEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_mip_absolute_gap::t_mip_tol_absolute_gap"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_relative_gapEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_mip_relative_gap"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition24set_tol_mip_relative_gapEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_mip_relative_gap::t_tol_mip_relative_gap"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_tol_optimalityEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_optimality"], [30, 4, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition18set_tol_optimalityEd", "idol::Optimizers::DantzigWolfeDecomposition::set_tol_optimality::t_tol_optimality"], [30, 2, 1, "_CPPv4N4idol10Optimizers25DantzigWolfeDecomposition9terminateEv", "idol::Optimizers::DantzigWolfeDecomposition::terminate"], [30, 2, 1, "_CPPv4NK4idol10Optimizers25DantzigWolfeDecomposition4timeEv", "idol::Optimizers::DantzigWolfeDecomposition::time"], [59, 1, 1, "_CPPv4N4idol10Optimizers4GLPKE", "idol::Optimizers::GLPK"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK4GLPKERK5Modelb", "idol::Optimizers::GLPK::GLPK"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK4GLPKERK5Modelb", "idol::Optimizers::GLPK::GLPK::t_continuous_relaxation"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK4GLPKERK5Modelb", "idol::Optimizers::GLPK::GLPK::t_model"], [59, 2, 1, "_CPPv4I0EN4idol10Optimizers4GLPK2asER1Tv", "idol::Optimizers::GLPK::as"], [59, 2, 1, "_CPPv4I0ENK4idol10Optimizers4GLPK2asERK1Tv", "idol::Optimizers::GLPK::as"], [59, 3, 1, "_CPPv4I0EN4idol10Optimizers4GLPK2asER1Tv", "idol::Optimizers::GLPK::as::T"], [59, 3, 1, "_CPPv4I0ENK4idol10Optimizers4GLPK2asERK1Tv", "idol::Optimizers::GLPK::as::T"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK25get_param_best_bound_stopEv", "idol::Optimizers::GLPK::get_param_best_bound_stop"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK23get_param_best_obj_stopEv", "idol::Optimizers::GLPK::get_param_best_obj_stop"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK38get_param_infeasible_or_unbounded_infoEv", "idol::Optimizers::GLPK::get_param_infeasible_or_unbounded_info"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK25get_param_iteration_limitEv", "idol::Optimizers::GLPK::get_param_iteration_limit"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK14get_param_logsEv", "idol::Optimizers::GLPK::get_param_logs"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK18get_param_presolveEv", "idol::Optimizers::GLPK::get_param_presolve"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK22get_param_thread_limitEv", "idol::Optimizers::GLPK::get_param_thread_limit"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK20get_param_time_limitEv", "idol::Optimizers::GLPK::get_param_time_limit"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK18get_remaining_timeEv", "idol::Optimizers::GLPK::get_remaining_time"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK19get_tol_feasibilityEv", "idol::Optimizers::GLPK::get_tol_feasibility"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK15get_tol_integerEv", "idol::Optimizers::GLPK::get_tol_integer"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK24get_tol_mip_absolute_gapEv", "idol::Optimizers::GLPK::get_tol_mip_absolute_gap"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK24get_tol_mip_relative_gapEv", "idol::Optimizers::GLPK::get_tol_mip_relative_gap"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK18get_tol_optimalityEv", "idol::Optimizers::GLPK::get_tol_optimality"], [59, 2, 1, "_CPPv4I0ENK4idol10Optimizers4GLPK2isEbv", "idol::Optimizers::GLPK::is"], [59, 3, 1, "_CPPv4I0ENK4idol10Optimizers4GLPK2isEbv", "idol::Optimizers::GLPK::is::T"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK13is_terminatedEv", "idol::Optimizers::GLPK::is_terminated"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK4nameEv", "idol::Optimizers::GLPK::name"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPKixERK3Ctr", "idol::Optimizers::GLPK::operator[]"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPKixERK3Var", "idol::Optimizers::GLPK::operator[]"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPKixERK3Ctr", "idol::Optimizers::GLPK::operator[]"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPKixERK3Var", "idol::Optimizers::GLPK::operator[]"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPKixERK3Ctr", "idol::Optimizers::GLPK::operator[]::t_ctr"], [59, 4, 1, "_CPPv4NK4idol10Optimizers4GLPKixERK3Ctr", "idol::Optimizers::GLPK::operator[]::t_ctr"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPKixERK3Var", "idol::Optimizers::GLPK::operator[]::t_var"], [59, 4, 1, "_CPPv4NK4idol10Optimizers4GLPKixERK3Var", "idol::Optimizers::GLPK::operator[]::t_var"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK6parentEv", "idol::Optimizers::GLPK::parent"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::GLPK::read_from_file"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::GLPK::read_from_file::t_env"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::GLPK::read_from_file::t_filename"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK25set_param_best_bound_stopEd", "idol::Optimizers::GLPK::set_param_best_bound_stop"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK25set_param_best_bound_stopEd", "idol::Optimizers::GLPK::set_param_best_bound_stop::t_best_bound_stop"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK23set_param_best_obj_stopEd", "idol::Optimizers::GLPK::set_param_best_obj_stop"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK23set_param_best_obj_stopEd", "idol::Optimizers::GLPK::set_param_best_obj_stop::t_best_obj_stop"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::GLPK::set_param_infeasible_or_unbounded_info"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::GLPK::set_param_infeasible_or_unbounded_info::t_value"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK25set_param_iteration_limitEj", "idol::Optimizers::GLPK::set_param_iteration_limit"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK25set_param_iteration_limitEj", "idol::Optimizers::GLPK::set_param_iteration_limit::t_iteration_limit"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK14set_param_logsEb", "idol::Optimizers::GLPK::set_param_logs"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK14set_param_logsEb", "idol::Optimizers::GLPK::set_param_logs::t_value"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK18set_param_presolveEb", "idol::Optimizers::GLPK::set_param_presolve"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK18set_param_presolveEb", "idol::Optimizers::GLPK::set_param_presolve::t_value"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK17set_param_threadsEj", "idol::Optimizers::GLPK::set_param_threads"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK17set_param_threadsEj", "idol::Optimizers::GLPK::set_param_threads::t_threads"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK20set_param_time_limitEd", "idol::Optimizers::GLPK::set_param_time_limit"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK20set_param_time_limitEd", "idol::Optimizers::GLPK::set_param_time_limit::t_time_limit"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK19set_tol_feasibilityEd", "idol::Optimizers::GLPK::set_tol_feasibility"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK19set_tol_feasibilityEd", "idol::Optimizers::GLPK::set_tol_feasibility::t_tol_feasibility"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK15set_tol_integerEd", "idol::Optimizers::GLPK::set_tol_integer"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK15set_tol_integerEd", "idol::Optimizers::GLPK::set_tol_integer::t_tol_integer"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_absolute_gapEd", "idol::Optimizers::GLPK::set_tol_mip_absolute_gap"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_absolute_gapEd", "idol::Optimizers::GLPK::set_tol_mip_absolute_gap::t_mip_tol_absolute_gap"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_relative_gapEd", "idol::Optimizers::GLPK::set_tol_mip_relative_gap"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK24set_tol_mip_relative_gapEd", "idol::Optimizers::GLPK::set_tol_mip_relative_gap::t_tol_mip_relative_gap"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK18set_tol_optimalityEd", "idol::Optimizers::GLPK::set_tol_optimality"], [59, 4, 1, "_CPPv4N4idol10Optimizers4GLPK18set_tol_optimalityEd", "idol::Optimizers::GLPK::set_tol_optimality::t_tol_optimality"], [59, 2, 1, "_CPPv4N4idol10Optimizers4GLPK9terminateEv", "idol::Optimizers::GLPK::terminate"], [59, 2, 1, "_CPPv4NK4idol10Optimizers4GLPK4timeEv", "idol::Optimizers::GLPK::time"], [60, 1, 1, "_CPPv4N4idol10Optimizers6GurobiE", "idol::Optimizers::Gurobi"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5Modelb", "idol::Optimizers::Gurobi::Gurobi"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5ModelbR6GRBEnv", "idol::Optimizers::Gurobi::Gurobi"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5Modelb", "idol::Optimizers::Gurobi::Gurobi::t_continuous_relaxation"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5ModelbR6GRBEnv", "idol::Optimizers::Gurobi::Gurobi::t_continuous_relaxation"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5ModelbR6GRBEnv", "idol::Optimizers::Gurobi::Gurobi::t_env"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5Modelb", "idol::Optimizers::Gurobi::Gurobi::t_model"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi6GurobiERK5ModelbR6GRBEnv", "idol::Optimizers::Gurobi::Gurobi::t_model"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi12add_callbackEP8Callback", "idol::Optimizers::Gurobi::add_callback"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi12add_callbackEP8Callback", "idol::Optimizers::Gurobi::add_callback::t_ptr_to_callback"], [60, 2, 1, "_CPPv4I0EN4idol10Optimizers6Gurobi2asER1Tv", "idol::Optimizers::Gurobi::as"], [60, 2, 1, "_CPPv4I0ENK4idol10Optimizers6Gurobi2asERK1Tv", "idol::Optimizers::Gurobi::as"], [60, 3, 1, "_CPPv4I0EN4idol10Optimizers6Gurobi2asER1Tv", "idol::Optimizers::Gurobi::as::T"], [60, 3, 1, "_CPPv4I0ENK4idol10Optimizers6Gurobi2asERK1Tv", "idol::Optimizers::Gurobi::as::T"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi3envEv", "idol::Optimizers::Gurobi::env"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi3envEv", "idol::Optimizers::Gurobi::env"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi25get_param_best_bound_stopEv", "idol::Optimizers::Gurobi::get_param_best_bound_stop"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi23get_param_best_obj_stopEv", "idol::Optimizers::Gurobi::get_param_best_obj_stop"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi38get_param_infeasible_or_unbounded_infoEv", "idol::Optimizers::Gurobi::get_param_infeasible_or_unbounded_info"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi25get_param_iteration_limitEv", "idol::Optimizers::Gurobi::get_param_iteration_limit"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi14get_param_logsEv", "idol::Optimizers::Gurobi::get_param_logs"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi18get_param_presolveEv", "idol::Optimizers::Gurobi::get_param_presolve"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi22get_param_thread_limitEv", "idol::Optimizers::Gurobi::get_param_thread_limit"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi20get_param_time_limitEv", "idol::Optimizers::Gurobi::get_param_time_limit"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi18get_remaining_timeEv", "idol::Optimizers::Gurobi::get_remaining_time"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi19get_tol_feasibilityEv", "idol::Optimizers::Gurobi::get_tol_feasibility"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi15get_tol_integerEv", "idol::Optimizers::Gurobi::get_tol_integer"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi24get_tol_mip_absolute_gapEv", "idol::Optimizers::Gurobi::get_tol_mip_absolute_gap"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi24get_tol_mip_relative_gapEv", "idol::Optimizers::Gurobi::get_tol_mip_relative_gap"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi18get_tol_optimalityEv", "idol::Optimizers::Gurobi::get_tol_optimality"], [60, 2, 1, "_CPPv4I0ENK4idol10Optimizers6Gurobi2isEbv", "idol::Optimizers::Gurobi::is"], [60, 3, 1, "_CPPv4I0ENK4idol10Optimizers6Gurobi2isEbv", "idol::Optimizers::Gurobi::is::T"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi13is_terminatedEv", "idol::Optimizers::Gurobi::is_terminated"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi5modelEv", "idol::Optimizers::Gurobi::model"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi5modelEv", "idol::Optimizers::Gurobi::model"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi4nameEv", "idol::Optimizers::Gurobi::name"], [60, 2, 1, "_CPPv4N4idol10Optimizers6GurobiixERK3Ctr", "idol::Optimizers::Gurobi::operator[]"], [60, 2, 1, "_CPPv4N4idol10Optimizers6GurobiixERK3Var", "idol::Optimizers::Gurobi::operator[]"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6GurobiixERK3Ctr", "idol::Optimizers::Gurobi::operator[]"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6GurobiixERK3Var", "idol::Optimizers::Gurobi::operator[]"], [60, 4, 1, "_CPPv4N4idol10Optimizers6GurobiixERK3Ctr", "idol::Optimizers::Gurobi::operator[]::t_ctr"], [60, 4, 1, "_CPPv4NK4idol10Optimizers6GurobiixERK3Ctr", "idol::Optimizers::Gurobi::operator[]::t_ctr"], [60, 4, 1, "_CPPv4N4idol10Optimizers6GurobiixERK3Var", "idol::Optimizers::Gurobi::operator[]::t_var"], [60, 4, 1, "_CPPv4NK4idol10Optimizers6GurobiixERK3Var", "idol::Optimizers::Gurobi::operator[]::t_var"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi6parentEv", "idol::Optimizers::Gurobi::parent"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::Gurobi::read_from_file"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::Gurobi::read_from_file::t_env"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi14read_from_fileER3EnvRKNSt6stringE", "idol::Optimizers::Gurobi::read_from_file::t_filename"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi12set_lazy_cutEb", "idol::Optimizers::Gurobi::set_lazy_cut"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi12set_lazy_cutEb", "idol::Optimizers::Gurobi::set_lazy_cut::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi26set_max_n_solution_in_poolEj", "idol::Optimizers::Gurobi::set_max_n_solution_in_pool"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi26set_max_n_solution_in_poolEj", "idol::Optimizers::Gurobi::set_max_n_solution_in_pool::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE12GRB_IntParami", "idol::Optimizers::Gurobi::set_param"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE15GRB_DoubleParamd", "idol::Optimizers::Gurobi::set_param"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE12GRB_IntParami", "idol::Optimizers::Gurobi::set_param::t_param"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE15GRB_DoubleParamd", "idol::Optimizers::Gurobi::set_param::t_param"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE12GRB_IntParami", "idol::Optimizers::Gurobi::set_param::t_value"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi9set_paramE15GRB_DoubleParamd", "idol::Optimizers::Gurobi::set_param::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi25set_param_best_bound_stopEd", "idol::Optimizers::Gurobi::set_param_best_bound_stop"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi25set_param_best_bound_stopEd", "idol::Optimizers::Gurobi::set_param_best_bound_stop::t_best_bound_stop"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi23set_param_best_obj_stopEd", "idol::Optimizers::Gurobi::set_param_best_obj_stop"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi23set_param_best_obj_stopEd", "idol::Optimizers::Gurobi::set_param_best_obj_stop::t_best_obj_stop"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::Gurobi::set_param_infeasible_or_unbounded_info"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::Gurobi::set_param_infeasible_or_unbounded_info::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi25set_param_iteration_limitEj", "idol::Optimizers::Gurobi::set_param_iteration_limit"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi25set_param_iteration_limitEj", "idol::Optimizers::Gurobi::set_param_iteration_limit::t_iteration_limit"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi14set_param_logsEb", "idol::Optimizers::Gurobi::set_param_logs"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi14set_param_logsEb", "idol::Optimizers::Gurobi::set_param_logs::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi18set_param_presolveEb", "idol::Optimizers::Gurobi::set_param_presolve"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi18set_param_presolveEb", "idol::Optimizers::Gurobi::set_param_presolve::t_value"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi17set_param_threadsEj", "idol::Optimizers::Gurobi::set_param_threads"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi17set_param_threadsEj", "idol::Optimizers::Gurobi::set_param_threads::t_thread_limit"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi20set_param_time_limitEd", "idol::Optimizers::Gurobi::set_param_time_limit"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi20set_param_time_limitEd", "idol::Optimizers::Gurobi::set_param_time_limit::t_time_limit"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi19set_tol_feasibilityEd", "idol::Optimizers::Gurobi::set_tol_feasibility"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi19set_tol_feasibilityEd", "idol::Optimizers::Gurobi::set_tol_feasibility::t_tol_feasibility"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi15set_tol_integerEd", "idol::Optimizers::Gurobi::set_tol_integer"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi15set_tol_integerEd", "idol::Optimizers::Gurobi::set_tol_integer::t_tol_integer"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_absolute_gapEd", "idol::Optimizers::Gurobi::set_tol_mip_absolute_gap"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_absolute_gapEd", "idol::Optimizers::Gurobi::set_tol_mip_absolute_gap::t_absolute_gap_tolerance"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_relative_gapEd", "idol::Optimizers::Gurobi::set_tol_mip_relative_gap"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi24set_tol_mip_relative_gapEd", "idol::Optimizers::Gurobi::set_tol_mip_relative_gap::t_relative_gap_tolerance"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi18set_tol_optimalityEd", "idol::Optimizers::Gurobi::set_tol_optimality"], [60, 4, 1, "_CPPv4N4idol10Optimizers6Gurobi18set_tol_optimalityEd", "idol::Optimizers::Gurobi::set_tol_optimality::t_tol_optimality"], [60, 2, 1, "_CPPv4N4idol10Optimizers6Gurobi9terminateEv", "idol::Optimizers::Gurobi::terminate"], [60, 2, 1, "_CPPv4NK4idol10Optimizers6Gurobi4timeEv", "idol::Optimizers::Gurobi::time"], [24, 1, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGenerationE", "idol::Optimizers::Robust::ColumnAndConstraintGeneration"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_complete_recourse"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_lower_level_constraints"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_lower_level_variables"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_master_optimizer"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_parent"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_separator"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_stabilizer"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK5ModelRK5ModelRK16OptimizerFactoryRKN4idol6Robust12CCGSeparatorERKN4idol6Robust13CCGStabilizerERK10AnnotationI3VarjERK10AnnotationI3CtrjEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_uncertainty_set"], [24, 2, 1, "_CPPv4I0EN4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asER1Tv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::as"], [24, 2, 1, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asERK1Tv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::as"], [24, 3, 1, "_CPPv4I0EN4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asER1Tv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::as::T"], [24, 3, 1, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2asERK1Tv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::as::T"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration17complete_recourseEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::complete_recourse"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration16get_absolute_gapEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_absolute_gap"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_best_boundEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_best_bound"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12get_best_objEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_best_obj"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12get_ctr_dualERK3Ctr", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_ctr_dual"], [24, 4, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12get_ctr_dualERK3Ctr", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_ctr_dual::t_ctr"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_ctr_farkasERK3Ctr", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_ctr_farkas"], [24, 4, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_ctr_farkasERK3Ctr", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_ctr_farkas::t_ctr"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15get_n_solutionsEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_n_solutions"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration25get_param_best_bound_stopEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_best_bound_stop"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration23get_param_best_obj_stopEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_best_obj_stop"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration38get_param_infeasible_or_unbounded_infoEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_infeasible_or_unbounded_info"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration25get_param_iteration_limitEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_iteration_limit"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_param_logsEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_logs"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_param_presolveEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_presolve"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration22get_param_thread_limitEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_thread_limit"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration20get_param_time_limitEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_param_time_limit"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration10get_reasonEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_reason"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration16get_relative_gapEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_relative_gap"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_remaining_timeEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_remaining_time"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_solution_indexEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_solution_index"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration10get_statusEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_status"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration19get_tol_feasibilityEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_tol_feasibility"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15get_tol_integerEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_tol_integer"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration24get_tol_mip_absolute_gapEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_tol_mip_absolute_gap"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration24get_tol_mip_relative_gapEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_tol_mip_relative_gap"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration18get_tol_optimalityEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_tol_optimality"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_var_primalERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_primal"], [24, 4, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14get_var_primalERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_primal::t_var"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration11get_var_rayERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_ray"], [24, 4, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration11get_var_rayERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_ray::t_var"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration20get_var_reduced_costERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_reduced_cost"], [24, 4, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration20get_var_reduced_costERK3Var", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::get_var_reduced_cost::t_var"], [24, 2, 1, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2isEbv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::is"], [24, 3, 1, "_CPPv4I0ENK4idol10Optimizers6Robust29ColumnAndConstraintGeneration2isEbv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::is::T"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration13is_terminatedEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::is_terminated"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration23lower_level_constraintsEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::lower_level_constraints"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration21lower_level_variablesEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::lower_level_variables"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration14master_problemEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::master_problem"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration12n_iterationsEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::n_iterations"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration4nameEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::name"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration6parentEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::parent"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_best_bound_stopEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_best_bound_stop"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_best_bound_stopEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_best_bound_stop::t_best_bound_stop"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration23set_param_best_obj_stopEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_best_obj_stop"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration23set_param_best_obj_stopEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_best_obj_stop::t_best_obj_stop"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_infeasible_or_unbounded_info"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration38set_param_infeasible_or_unbounded_infoEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_infeasible_or_unbounded_info::t_value"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_iteration_limitEj", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_iteration_limit"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration25set_param_iteration_limitEj", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_iteration_limit::t_iteration_limit"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration14set_param_logsEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_logs"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration14set_param_logsEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_logs::t_value"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_param_presolveEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_presolve"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_param_presolveEb", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_presolve::t_value"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration17set_param_threadsEj", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_threads"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration17set_param_threadsEj", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_threads::t_threads"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration20set_param_time_limitEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_time_limit"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration20set_param_time_limitEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_param_time_limit::t_time_limit"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration19set_tol_feasibilityEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_feasibility"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration19set_tol_feasibilityEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_feasibility::t_tol_feasibility"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration15set_tol_integerEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_integer"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration15set_tol_integerEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_integer::t_tol_integer"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_absolute_gapEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_mip_absolute_gap"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_absolute_gapEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_mip_absolute_gap::t_mip_tol_absolute_gap"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_relative_gapEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_mip_relative_gap"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration24set_tol_mip_relative_gapEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_mip_relative_gap::t_tol_mip_relative_gap"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_tol_optimalityEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_optimality"], [24, 4, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration18set_tol_optimalityEd", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::set_tol_optimality::t_tol_optimality"], [24, 2, 1, "_CPPv4N4idol10Optimizers6Robust29ColumnAndConstraintGeneration9terminateEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::terminate"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration4timeEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::time"], [24, 2, 1, "_CPPv4NK4idol10Optimizers6Robust29ColumnAndConstraintGeneration15uncertainty_setEv", "idol::Optimizers::Robust::ColumnAndConstraintGeneration::uncertainty_set"], [67, 1, 1, "_CPPv4N4idol3OsiE", "idol::Osi"], [67, 2, 1, "_CPPv4N4idol3Osi20ContinuousRelaxationERK18OsiSolverInterface", "idol::Osi::ContinuousRelaxation"], [67, 4, 1, "_CPPv4N4idol3Osi20ContinuousRelaxationERK18OsiSolverInterface", "idol::Osi::ContinuousRelaxation::t_solver_interface"], [67, 2, 1, "_CPPv4N4idol3Osi3OsiERK18OsiSolverInterface", "idol::Osi::Osi"], [67, 2, 1, "_CPPv4N4idol3Osi3OsiERK3Osi", "idol::Osi::Osi"], [67, 2, 1, "_CPPv4N4idol3Osi3OsiERR3Osi", "idol::Osi::Osi"], [67, 4, 1, "_CPPv4N4idol3Osi3OsiERK18OsiSolverInterface", "idol::Osi::Osi::t_solver_interface"], [67, 4, 1, "_CPPv4N4idol3Osi3OsiERK3Osi", "idol::Osi::Osi::t_src"], [67, 2, 1, "_CPPv4I0EN4idol3Osi2asER1Tv", "idol::Osi::as"], [67, 2, 1, "_CPPv4I0ENK4idol3Osi2asERK1Tv", "idol::Osi::as"], [67, 3, 1, "_CPPv4I0EN4idol3Osi2asER1Tv", "idol::Osi::as::T"], [67, 3, 1, "_CPPv4I0ENK4idol3Osi2asERK1Tv", "idol::Osi::as::T"], [67, 2, 1, "_CPPv4NK4idol3Osi5cloneEv", "idol::Osi::clone"], [67, 2, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional"], [67, 2, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional"], [67, 4, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional::t_conditional_value"], [67, 4, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional::t_conditional_value"], [67, 4, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional::t_else"], [67, 4, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional::t_if"], [67, 4, 1, "_CPPv4N4idol3Osi11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::Osi::conditional::t_if"], [67, 2, 1, "_CPPv4NK4idol3Osi27create_osi_solver_interfaceEv", "idol::Osi::create_osi_solver_interface"], [67, 2, 1, "_CPPv4I0ENK4idol3Osi2isEbv", "idol::Osi::is"], [67, 3, 1, "_CPPv4I0ENK4idol3Osi2isEbv", "idol::Osi::is::T"], [67, 2, 1, "_CPPv4NK4idol3OsiclERK5Model", "idol::Osi::operator()"], [67, 4, 1, "_CPPv4NK4idol3OsiclERK5Model", "idol::Osi::operator()::t_model"], [67, 2, 1, "_CPPv4N4idol3OsiaSERK3Osi", "idol::Osi::operator="], [67, 2, 1, "_CPPv4N4idol3OsiaSERR3Osi", "idol::Osi::operator="], [67, 2, 1, "_CPPv4N4idol3Osi27with_absolute_gap_toleranceEd", "idol::Osi::with_absolute_gap_tolerance"], [67, 4, 1, "_CPPv4N4idol3Osi27with_absolute_gap_toleranceEd", "idol::Osi::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [67, 2, 1, "_CPPv4N4idol3Osi20with_best_bound_stopEd", "idol::Osi::with_best_bound_stop"], [67, 4, 1, "_CPPv4N4idol3Osi20with_best_bound_stopEd", "idol::Osi::with_best_bound_stop::t_best_bound_stop"], [67, 2, 1, "_CPPv4N4idol3Osi18with_best_obj_stopEd", "idol::Osi::with_best_obj_stop"], [67, 4, 1, "_CPPv4N4idol3Osi18with_best_obj_stopEd", "idol::Osi::with_best_obj_stop::t_user_best_obj"], [67, 2, 1, "_CPPv4N4idol3Osi33with_infeasible_or_unbounded_infoEb", "idol::Osi::with_infeasible_or_unbounded_info"], [67, 4, 1, "_CPPv4N4idol3Osi33with_infeasible_or_unbounded_infoEb", "idol::Osi::with_infeasible_or_unbounded_info::t_value"], [67, 2, 1, "_CPPv4N4idol3Osi20with_iteration_limitEj", "idol::Osi::with_iteration_limit"], [67, 4, 1, "_CPPv4N4idol3Osi20with_iteration_limitEj", "idol::Osi::with_iteration_limit::t_iteration_count_limit"], [67, 2, 1, "_CPPv4N4idol3Osi9with_logsEb", "idol::Osi::with_logs"], [67, 4, 1, "_CPPv4N4idol3Osi9with_logsEb", "idol::Osi::with_logs::t_value"], [67, 2, 1, "_CPPv4N4idol3Osi13with_presolveEb", "idol::Osi::with_presolve"], [67, 4, 1, "_CPPv4N4idol3Osi13with_presolveEb", "idol::Osi::with_presolve::t_value"], [67, 2, 1, "_CPPv4N4idol3Osi27with_relative_gap_toleranceEd", "idol::Osi::with_relative_gap_tolerance"], [67, 4, 1, "_CPPv4N4idol3Osi27with_relative_gap_toleranceEd", "idol::Osi::with_relative_gap_tolerance::t_relative_gap_tolerance"], [67, 2, 1, "_CPPv4N4idol3Osi17with_thread_limitEj", "idol::Osi::with_thread_limit"], [67, 4, 1, "_CPPv4N4idol3Osi17with_thread_limitEj", "idol::Osi::with_thread_limit::t_max_n_threads"], [67, 2, 1, "_CPPv4N4idol3Osi15with_time_limitEd", "idol::Osi::with_time_limit"], [67, 4, 1, "_CPPv4N4idol3Osi15with_time_limitEd", "idol::Osi::with_time_limit::t_time_limit"], [63, 1, 1, "_CPPv4N4idol6OsiCbcE", "idol::OsiCbc"], [63, 2, 1, "_CPPv4N4idol6OsiCbc20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiCbc::ContinuousRelaxation"], [63, 4, 1, "_CPPv4N4idol6OsiCbc20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiCbc::ContinuousRelaxation::t_solver_interface"], [63, 2, 1, "_CPPv4I0EN4idol6OsiCbc2asER1Tv", "idol::OsiCbc::as"], [63, 2, 1, "_CPPv4I0ENK4idol6OsiCbc2asERK1Tv", "idol::OsiCbc::as"], [63, 3, 1, "_CPPv4I0EN4idol6OsiCbc2asER1Tv", "idol::OsiCbc::as::T"], [63, 3, 1, "_CPPv4I0ENK4idol6OsiCbc2asERK1Tv", "idol::OsiCbc::as::T"], [63, 2, 1, "_CPPv4NK4idol6OsiCbc5cloneEv", "idol::OsiCbc::clone"], [63, 2, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional"], [63, 2, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional"], [63, 4, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional::t_conditional_value"], [63, 4, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional::t_conditional_value"], [63, 4, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional::t_else"], [63, 4, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional::t_if"], [63, 4, 1, "_CPPv4N4idol6OsiCbc11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCbc::conditional::t_if"], [63, 2, 1, "_CPPv4NK4idol6OsiCbc27create_osi_solver_interfaceEv", "idol::OsiCbc::create_osi_solver_interface"], [63, 2, 1, "_CPPv4I0ENK4idol6OsiCbc2isEbv", "idol::OsiCbc::is"], [63, 3, 1, "_CPPv4I0ENK4idol6OsiCbc2isEbv", "idol::OsiCbc::is::T"], [63, 2, 1, "_CPPv4NK4idol6OsiCbcclERK5Model", "idol::OsiCbc::operator()"], [63, 4, 1, "_CPPv4NK4idol6OsiCbcclERK5Model", "idol::OsiCbc::operator()::t_model"], [63, 2, 1, "_CPPv4N4idol6OsiCbc27with_absolute_gap_toleranceEd", "idol::OsiCbc::with_absolute_gap_tolerance"], [63, 4, 1, "_CPPv4N4idol6OsiCbc27with_absolute_gap_toleranceEd", "idol::OsiCbc::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [63, 2, 1, "_CPPv4N4idol6OsiCbc20with_best_bound_stopEd", "idol::OsiCbc::with_best_bound_stop"], [63, 4, 1, "_CPPv4N4idol6OsiCbc20with_best_bound_stopEd", "idol::OsiCbc::with_best_bound_stop::t_best_bound_stop"], [63, 2, 1, "_CPPv4N4idol6OsiCbc18with_best_obj_stopEd", "idol::OsiCbc::with_best_obj_stop"], [63, 4, 1, "_CPPv4N4idol6OsiCbc18with_best_obj_stopEd", "idol::OsiCbc::with_best_obj_stop::t_user_best_obj"], [63, 2, 1, "_CPPv4N4idol6OsiCbc33with_infeasible_or_unbounded_infoEb", "idol::OsiCbc::with_infeasible_or_unbounded_info"], [63, 4, 1, "_CPPv4N4idol6OsiCbc33with_infeasible_or_unbounded_infoEb", "idol::OsiCbc::with_infeasible_or_unbounded_info::t_value"], [63, 2, 1, "_CPPv4N4idol6OsiCbc20with_iteration_limitEj", "idol::OsiCbc::with_iteration_limit"], [63, 4, 1, "_CPPv4N4idol6OsiCbc20with_iteration_limitEj", "idol::OsiCbc::with_iteration_limit::t_iteration_count_limit"], [63, 2, 1, "_CPPv4N4idol6OsiCbc9with_logsEb", "idol::OsiCbc::with_logs"], [63, 4, 1, "_CPPv4N4idol6OsiCbc9with_logsEb", "idol::OsiCbc::with_logs::t_value"], [63, 2, 1, "_CPPv4N4idol6OsiCbc13with_presolveEb", "idol::OsiCbc::with_presolve"], [63, 4, 1, "_CPPv4N4idol6OsiCbc13with_presolveEb", "idol::OsiCbc::with_presolve::t_value"], [63, 2, 1, "_CPPv4N4idol6OsiCbc27with_relative_gap_toleranceEd", "idol::OsiCbc::with_relative_gap_tolerance"], [63, 4, 1, "_CPPv4N4idol6OsiCbc27with_relative_gap_toleranceEd", "idol::OsiCbc::with_relative_gap_tolerance::t_relative_gap_tolerance"], [63, 2, 1, "_CPPv4N4idol6OsiCbc17with_thread_limitEj", "idol::OsiCbc::with_thread_limit"], [63, 4, 1, "_CPPv4N4idol6OsiCbc17with_thread_limitEj", "idol::OsiCbc::with_thread_limit::t_max_n_threads"], [63, 2, 1, "_CPPv4N4idol6OsiCbc15with_time_limitEd", "idol::OsiCbc::with_time_limit"], [63, 4, 1, "_CPPv4N4idol6OsiCbc15with_time_limitEd", "idol::OsiCbc::with_time_limit::t_time_limit"], [64, 1, 1, "_CPPv4N4idol6OsiClpE", "idol::OsiClp"], [64, 2, 1, "_CPPv4N4idol6OsiClp20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiClp::ContinuousRelaxation"], [64, 4, 1, "_CPPv4N4idol6OsiClp20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiClp::ContinuousRelaxation::t_solver_interface"], [64, 2, 1, "_CPPv4I0EN4idol6OsiClp2asER1Tv", "idol::OsiClp::as"], [64, 2, 1, "_CPPv4I0ENK4idol6OsiClp2asERK1Tv", "idol::OsiClp::as"], [64, 3, 1, "_CPPv4I0EN4idol6OsiClp2asER1Tv", "idol::OsiClp::as::T"], [64, 3, 1, "_CPPv4I0ENK4idol6OsiClp2asERK1Tv", "idol::OsiClp::as::T"], [64, 2, 1, "_CPPv4NK4idol6OsiClp5cloneEv", "idol::OsiClp::clone"], [64, 2, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional"], [64, 2, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional"], [64, 4, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional::t_conditional_value"], [64, 4, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional::t_conditional_value"], [64, 4, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional::t_else"], [64, 4, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional::t_if"], [64, 4, 1, "_CPPv4N4idol6OsiClp11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiClp::conditional::t_if"], [64, 2, 1, "_CPPv4NK4idol6OsiClp27create_osi_solver_interfaceEv", "idol::OsiClp::create_osi_solver_interface"], [64, 2, 1, "_CPPv4I0ENK4idol6OsiClp2isEbv", "idol::OsiClp::is"], [64, 3, 1, "_CPPv4I0ENK4idol6OsiClp2isEbv", "idol::OsiClp::is::T"], [64, 2, 1, "_CPPv4NK4idol6OsiClpclERK5Model", "idol::OsiClp::operator()"], [64, 4, 1, "_CPPv4NK4idol6OsiClpclERK5Model", "idol::OsiClp::operator()::t_model"], [64, 2, 1, "_CPPv4N4idol6OsiClp27with_absolute_gap_toleranceEd", "idol::OsiClp::with_absolute_gap_tolerance"], [64, 4, 1, "_CPPv4N4idol6OsiClp27with_absolute_gap_toleranceEd", "idol::OsiClp::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [64, 2, 1, "_CPPv4N4idol6OsiClp20with_best_bound_stopEd", "idol::OsiClp::with_best_bound_stop"], [64, 4, 1, "_CPPv4N4idol6OsiClp20with_best_bound_stopEd", "idol::OsiClp::with_best_bound_stop::t_best_bound_stop"], [64, 2, 1, "_CPPv4N4idol6OsiClp18with_best_obj_stopEd", "idol::OsiClp::with_best_obj_stop"], [64, 4, 1, "_CPPv4N4idol6OsiClp18with_best_obj_stopEd", "idol::OsiClp::with_best_obj_stop::t_user_best_obj"], [64, 2, 1, "_CPPv4N4idol6OsiClp33with_infeasible_or_unbounded_infoEb", "idol::OsiClp::with_infeasible_or_unbounded_info"], [64, 4, 1, "_CPPv4N4idol6OsiClp33with_infeasible_or_unbounded_infoEb", "idol::OsiClp::with_infeasible_or_unbounded_info::t_value"], [64, 2, 1, "_CPPv4N4idol6OsiClp20with_iteration_limitEj", "idol::OsiClp::with_iteration_limit"], [64, 4, 1, "_CPPv4N4idol6OsiClp20with_iteration_limitEj", "idol::OsiClp::with_iteration_limit::t_iteration_count_limit"], [64, 2, 1, "_CPPv4N4idol6OsiClp9with_logsEb", "idol::OsiClp::with_logs"], [64, 4, 1, "_CPPv4N4idol6OsiClp9with_logsEb", "idol::OsiClp::with_logs::t_value"], [64, 2, 1, "_CPPv4N4idol6OsiClp13with_presolveEb", "idol::OsiClp::with_presolve"], [64, 4, 1, "_CPPv4N4idol6OsiClp13with_presolveEb", "idol::OsiClp::with_presolve::t_value"], [64, 2, 1, "_CPPv4N4idol6OsiClp27with_relative_gap_toleranceEd", "idol::OsiClp::with_relative_gap_tolerance"], [64, 4, 1, "_CPPv4N4idol6OsiClp27with_relative_gap_toleranceEd", "idol::OsiClp::with_relative_gap_tolerance::t_relative_gap_tolerance"], [64, 2, 1, "_CPPv4N4idol6OsiClp17with_thread_limitEj", "idol::OsiClp::with_thread_limit"], [64, 4, 1, "_CPPv4N4idol6OsiClp17with_thread_limitEj", "idol::OsiClp::with_thread_limit::t_max_n_threads"], [64, 2, 1, "_CPPv4N4idol6OsiClp15with_time_limitEd", "idol::OsiClp::with_time_limit"], [64, 4, 1, "_CPPv4N4idol6OsiClp15with_time_limitEd", "idol::OsiClp::with_time_limit::t_time_limit"], [65, 1, 1, "_CPPv4N4idol8OsiCplexE", "idol::OsiCplex"], [65, 2, 1, "_CPPv4N4idol8OsiCplex20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiCplex::ContinuousRelaxation"], [65, 4, 1, "_CPPv4N4idol8OsiCplex20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiCplex::ContinuousRelaxation::t_solver_interface"], [65, 2, 1, "_CPPv4I0EN4idol8OsiCplex2asER1Tv", "idol::OsiCplex::as"], [65, 2, 1, "_CPPv4I0ENK4idol8OsiCplex2asERK1Tv", "idol::OsiCplex::as"], [65, 3, 1, "_CPPv4I0EN4idol8OsiCplex2asER1Tv", "idol::OsiCplex::as::T"], [65, 3, 1, "_CPPv4I0ENK4idol8OsiCplex2asERK1Tv", "idol::OsiCplex::as::T"], [65, 2, 1, "_CPPv4NK4idol8OsiCplex5cloneEv", "idol::OsiCplex::clone"], [65, 2, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional"], [65, 2, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional"], [65, 4, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional::t_conditional_value"], [65, 4, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional::t_conditional_value"], [65, 4, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional::t_else"], [65, 4, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional::t_if"], [65, 4, 1, "_CPPv4N4idol8OsiCplex11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiCplex::conditional::t_if"], [65, 2, 1, "_CPPv4NK4idol8OsiCplex27create_osi_solver_interfaceEv", "idol::OsiCplex::create_osi_solver_interface"], [65, 2, 1, "_CPPv4I0ENK4idol8OsiCplex2isEbv", "idol::OsiCplex::is"], [65, 3, 1, "_CPPv4I0ENK4idol8OsiCplex2isEbv", "idol::OsiCplex::is::T"], [65, 2, 1, "_CPPv4NK4idol8OsiCplexclERK5Model", "idol::OsiCplex::operator()"], [65, 4, 1, "_CPPv4NK4idol8OsiCplexclERK5Model", "idol::OsiCplex::operator()::t_model"], [65, 2, 1, "_CPPv4N4idol8OsiCplex27with_absolute_gap_toleranceEd", "idol::OsiCplex::with_absolute_gap_tolerance"], [65, 4, 1, "_CPPv4N4idol8OsiCplex27with_absolute_gap_toleranceEd", "idol::OsiCplex::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [65, 2, 1, "_CPPv4N4idol8OsiCplex20with_best_bound_stopEd", "idol::OsiCplex::with_best_bound_stop"], [65, 4, 1, "_CPPv4N4idol8OsiCplex20with_best_bound_stopEd", "idol::OsiCplex::with_best_bound_stop::t_best_bound_stop"], [65, 2, 1, "_CPPv4N4idol8OsiCplex18with_best_obj_stopEd", "idol::OsiCplex::with_best_obj_stop"], [65, 4, 1, "_CPPv4N4idol8OsiCplex18with_best_obj_stopEd", "idol::OsiCplex::with_best_obj_stop::t_user_best_obj"], [65, 2, 1, "_CPPv4N4idol8OsiCplex33with_infeasible_or_unbounded_infoEb", "idol::OsiCplex::with_infeasible_or_unbounded_info"], [65, 4, 1, "_CPPv4N4idol8OsiCplex33with_infeasible_or_unbounded_infoEb", "idol::OsiCplex::with_infeasible_or_unbounded_info::t_value"], [65, 2, 1, "_CPPv4N4idol8OsiCplex20with_iteration_limitEj", "idol::OsiCplex::with_iteration_limit"], [65, 4, 1, "_CPPv4N4idol8OsiCplex20with_iteration_limitEj", "idol::OsiCplex::with_iteration_limit::t_iteration_count_limit"], [65, 2, 1, "_CPPv4N4idol8OsiCplex9with_logsEb", "idol::OsiCplex::with_logs"], [65, 4, 1, "_CPPv4N4idol8OsiCplex9with_logsEb", "idol::OsiCplex::with_logs::t_value"], [65, 2, 1, "_CPPv4N4idol8OsiCplex13with_presolveEb", "idol::OsiCplex::with_presolve"], [65, 4, 1, "_CPPv4N4idol8OsiCplex13with_presolveEb", "idol::OsiCplex::with_presolve::t_value"], [65, 2, 1, "_CPPv4N4idol8OsiCplex27with_relative_gap_toleranceEd", "idol::OsiCplex::with_relative_gap_tolerance"], [65, 4, 1, "_CPPv4N4idol8OsiCplex27with_relative_gap_toleranceEd", "idol::OsiCplex::with_relative_gap_tolerance::t_relative_gap_tolerance"], [65, 2, 1, "_CPPv4N4idol8OsiCplex17with_thread_limitEj", "idol::OsiCplex::with_thread_limit"], [65, 4, 1, "_CPPv4N4idol8OsiCplex17with_thread_limitEj", "idol::OsiCplex::with_thread_limit::t_max_n_threads"], [65, 2, 1, "_CPPv4N4idol8OsiCplex15with_time_limitEd", "idol::OsiCplex::with_time_limit"], [65, 4, 1, "_CPPv4N4idol8OsiCplex15with_time_limitEd", "idol::OsiCplex::with_time_limit::t_time_limit"], [66, 1, 1, "_CPPv4N4idol11OsiSymphonyE", "idol::OsiSymphony"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiSymphony::ContinuousRelaxation"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony20ContinuousRelaxationERK18OsiSolverInterface", "idol::OsiSymphony::ContinuousRelaxation::t_solver_interface"], [66, 2, 1, "_CPPv4I0EN4idol11OsiSymphony2asER1Tv", "idol::OsiSymphony::as"], [66, 2, 1, "_CPPv4I0ENK4idol11OsiSymphony2asERK1Tv", "idol::OsiSymphony::as"], [66, 3, 1, "_CPPv4I0EN4idol11OsiSymphony2asER1Tv", "idol::OsiSymphony::as::T"], [66, 3, 1, "_CPPv4I0ENK4idol11OsiSymphony2asERK1Tv", "idol::OsiSymphony::as::T"], [66, 2, 1, "_CPPv4NK4idol11OsiSymphony5cloneEv", "idol::OsiSymphony::clone"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional::t_conditional_value"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional::t_conditional_value"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional::t_else"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional::t_if"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony11conditionalEbRKNSt8functionIFvR3OsiEEERKNSt8functionIFvR3OsiEEE", "idol::OsiSymphony::conditional::t_if"], [66, 2, 1, "_CPPv4NK4idol11OsiSymphony27create_osi_solver_interfaceEv", "idol::OsiSymphony::create_osi_solver_interface"], [66, 2, 1, "_CPPv4I0ENK4idol11OsiSymphony2isEbv", "idol::OsiSymphony::is"], [66, 3, 1, "_CPPv4I0ENK4idol11OsiSymphony2isEbv", "idol::OsiSymphony::is::T"], [66, 2, 1, "_CPPv4NK4idol11OsiSymphonyclERK5Model", "idol::OsiSymphony::operator()"], [66, 4, 1, "_CPPv4NK4idol11OsiSymphonyclERK5Model", "idol::OsiSymphony::operator()::t_model"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony27with_absolute_gap_toleranceEd", "idol::OsiSymphony::with_absolute_gap_tolerance"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony27with_absolute_gap_toleranceEd", "idol::OsiSymphony::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony20with_best_bound_stopEd", "idol::OsiSymphony::with_best_bound_stop"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony20with_best_bound_stopEd", "idol::OsiSymphony::with_best_bound_stop::t_best_bound_stop"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony18with_best_obj_stopEd", "idol::OsiSymphony::with_best_obj_stop"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony18with_best_obj_stopEd", "idol::OsiSymphony::with_best_obj_stop::t_user_best_obj"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony33with_infeasible_or_unbounded_infoEb", "idol::OsiSymphony::with_infeasible_or_unbounded_info"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony33with_infeasible_or_unbounded_infoEb", "idol::OsiSymphony::with_infeasible_or_unbounded_info::t_value"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony20with_iteration_limitEj", "idol::OsiSymphony::with_iteration_limit"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony20with_iteration_limitEj", "idol::OsiSymphony::with_iteration_limit::t_iteration_count_limit"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony9with_logsEb", "idol::OsiSymphony::with_logs"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony9with_logsEb", "idol::OsiSymphony::with_logs::t_value"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony13with_presolveEb", "idol::OsiSymphony::with_presolve"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony13with_presolveEb", "idol::OsiSymphony::with_presolve::t_value"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony27with_relative_gap_toleranceEd", "idol::OsiSymphony::with_relative_gap_tolerance"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony27with_relative_gap_toleranceEd", "idol::OsiSymphony::with_relative_gap_tolerance::t_relative_gap_tolerance"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony17with_thread_limitEj", "idol::OsiSymphony::with_thread_limit"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony17with_thread_limitEj", "idol::OsiSymphony::with_thread_limit::t_max_n_threads"], [66, 2, 1, "_CPPv4N4idol11OsiSymphony15with_time_limitEd", "idol::OsiSymphony::with_time_limit"], [66, 4, 1, "_CPPv4N4idol11OsiSymphony15with_time_limitEd", "idol::OsiSymphony::with_time_limit::t_time_limit"], [43, 1, 1, "_CPPv4N4idol5ParamE", "idol::Param"], [43, 2, 1, "_CPPv4N4idol5Param5ParamERK3Ctr", "idol::Param::Param"], [43, 2, 1, "_CPPv4N4idol5Param5ParamERK3Var", "idol::Param::Param"], [43, 2, 1, "_CPPv4N4idol5Param5ParamERK5Param", "idol::Param::Param"], [43, 2, 1, "_CPPv4N4idol5Param5ParamERR5Param", "idol::Param::Param"], [43, 4, 1, "_CPPv4N4idol5Param5ParamERK3Ctr", "idol::Param::Param::t_ctr"], [43, 4, 1, "_CPPv4N4idol5Param5ParamERK5Param", "idol::Param::Param::t_param"], [43, 4, 1, "_CPPv4N4idol5Param5ParamERR5Param", "idol::Param::Param::t_param"], [43, 4, 1, "_CPPv4N4idol5Param5ParamERK3Var", "idol::Param::Param::t_var"], [43, 2, 1, "_CPPv4I0ENK4idol5Param2asE1Tv", "idol::Param::as"], [43, 3, 1, "_CPPv4I0ENK4idol5Param2asE1Tv", "idol::Param::as::T"], [43, 2, 1, "_CPPv4NK4idol5Param2idEv", "idol::Param::id"], [43, 2, 1, "_CPPv4I0ENK4idol5Param2isEbv", "idol::Param::is"], [43, 3, 1, "_CPPv4I0ENK4idol5Param2isEbv", "idol::Param::is::T"], [43, 2, 1, "_CPPv4NK4idol5Param4nameEv", "idol::Param::name"], [43, 2, 1, "_CPPv4N4idol5ParamaSERK5Param", "idol::Param::operator="], [43, 2, 1, "_CPPv4N4idol5ParamaSERR5Param", "idol::Param::operator="], [43, 4, 1, "_CPPv4N4idol5ParamaSERK5Param", "idol::Param::operator=::t_param"], [43, 4, 1, "_CPPv4N4idol5ParamaSERR5Param", "idol::Param::operator=::t_param"], [81, 5, 1, "_CPPv4N4idol13CallbackEvent14PrunedSolutionE", "idol::PrunedSolution"], [19, 1, 1, "_CPPv4N4idol10PseudoCostE", "idol::PseudoCost"], [19, 2, 1, "_CPPv4I0EN4idol10PseudoCost10PseudoCostE9IteratorT9IteratorT", "idol::PseudoCost::PseudoCost"], [19, 2, 1, "_CPPv4N4idol10PseudoCost10PseudoCostEv", "idol::PseudoCost::PseudoCost"], [19, 3, 1, "_CPPv4I0EN4idol10PseudoCost10PseudoCostE9IteratorT9IteratorT", "idol::PseudoCost::PseudoCost::IteratorT"], [19, 4, 1, "_CPPv4I0EN4idol10PseudoCost10PseudoCostE9IteratorT9IteratorT", "idol::PseudoCost::PseudoCost::t_begin"], [19, 4, 1, "_CPPv4I0EN4idol10PseudoCost10PseudoCostE9IteratorT9IteratorT", "idol::PseudoCost::PseudoCost::t_end"], [19, 1, 1, "_CPPv4I0EN4idol10PseudoCost8StrategyE", "idol::PseudoCost::Strategy"], [19, 3, 1, "_CPPv4I0EN4idol10PseudoCost8StrategyE", "idol::PseudoCost::Strategy::NodeInfoT"], [19, 2, 1, "_CPPv4N4idol10PseudoCost8Strategy8StrategyERK10PseudoCost", "idol::PseudoCost::Strategy::Strategy"], [19, 2, 1, "_CPPv4N4idol10PseudoCost8Strategy8StrategyEv", "idol::PseudoCost::Strategy::Strategy"], [19, 4, 1, "_CPPv4N4idol10PseudoCost8Strategy8StrategyERK10PseudoCost", "idol::PseudoCost::Strategy::Strategy::t_parent"], [19, 2, 1, "_CPPv4NK4idol10PseudoCost8Strategy5cloneEv", "idol::PseudoCost::Strategy::clone"], [19, 2, 1, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::PseudoCost::Strategy::operator()"], [19, 2, 1, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::PseudoCost::Strategy::operator()"], [19, 4, 1, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::PseudoCost::Strategy::operator()::t_parent"], [19, 4, 1, "_CPPv4NK4idol10PseudoCost8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::PseudoCost::Strategy::operator()::t_parent"], [44, 1, 1, "_CPPv4I0000EN4idol8QuadExprE", "idol::QuadExpr"], [44, 3, 1, "_CPPv4I0000EN4idol8QuadExprE", "idol::QuadExpr::EqualTo"], [44, 3, 1, "_CPPv4I0000EN4idol8QuadExprE", "idol::QuadExpr::Hash"], [44, 3, 1, "_CPPv4I0000EN4idol8QuadExprE", "idol::QuadExpr::Key1"], [44, 3, 1, "_CPPv4I0000EN4idol8QuadExprE", "idol::QuadExpr::Key2"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK4Key1RK4Key2", "idol::QuadExpr::QuadExpr"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK8QuadExpr", "idol::QuadExpr::QuadExpr"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprERR8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprERR8QuadExpr", "idol::QuadExpr::QuadExpr"], [44, 2, 1, "_CPPv4N4idol8QuadExpr8QuadExprEv", "idol::QuadExpr::QuadExpr"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_a"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_a"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERR8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_a"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_b"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_b"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERR8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_b"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERK8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_factor"], [44, 4, 1, "_CPPv4N4idol8QuadExpr8QuadExprERR8ConstantRK4Key1RK4Key2", "idol::QuadExpr::QuadExpr::t_factor"], [44, 2, 1, "_CPPv4NK4idol8QuadExpr3fixERKN8Solution6PrimalE", "idol::QuadExpr::fix"], [44, 4, 1, "_CPPv4NK4idol8QuadExpr3fixERKN8Solution6PrimalE", "idol::QuadExpr::fix::t_primals"], [44, 2, 1, "_CPPv4NK4idol8QuadExpr3getERK4Key1RK4Key2", "idol::QuadExpr::get"], [44, 4, 1, "_CPPv4NK4idol8QuadExpr3getERK4Key1RK4Key2", "idol::QuadExpr::get::t_a"], [44, 4, 1, "_CPPv4NK4idol8QuadExpr3getERK4Key1RK4Key2", "idol::QuadExpr::get::t_b"], [44, 2, 1, "_CPPv4N4idol8QuadExpraSERK8QuadExpr", "idol::QuadExpr::operator="], [44, 2, 1, "_CPPv4N4idol8QuadExpraSERR8QuadExpr", "idol::QuadExpr::operator="], [44, 2, 1, "_CPPv4N4idol8QuadExpr3setERK4Key1RK4Key28Constant", "idol::QuadExpr::set"], [44, 4, 1, "_CPPv4N4idol8QuadExpr3setERK4Key1RK4Key28Constant", "idol::QuadExpr::set::t_a"], [44, 4, 1, "_CPPv4N4idol8QuadExpr3setERK4Key1RK4Key28Constant", "idol::QuadExpr::set::t_b"], [44, 4, 1, "_CPPv4N4idol8QuadExpr3setERK4Key1RK4Key28Constant", "idol::QuadExpr::set::t_coefficient"], [44, 2, 1, "_CPPv4N4idol8QuadExprD0Ev", "idol::QuadExpr::~QuadExpr"], [23, 1, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationE", "idol::Robust::ColumnAndConstraintGeneration"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK10AnnotationI3VarjERK10AnnotationI3CtrjERK5Model", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK29ColumnAndConstraintGeneration", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERR29ColumnAndConstraintGeneration", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK10AnnotationI3VarjERK10AnnotationI3CtrjERK5Model", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_lower_level_constraints"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK10AnnotationI3VarjERK10AnnotationI3CtrjERK5Model", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_lower_level_variables"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK29ColumnAndConstraintGeneration", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_src"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration29ColumnAndConstraintGenerationERK10AnnotationI3VarjERK10AnnotationI3CtrjERK5Model", "idol::Robust::ColumnAndConstraintGeneration::ColumnAndConstraintGeneration::t_uncertainty_set"], [23, 2, 1, "_CPPv4I0EN4idol6Robust29ColumnAndConstraintGeneration2asER1Tv", "idol::Robust::ColumnAndConstraintGeneration::as"], [23, 2, 1, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2asERK1Tv", "idol::Robust::ColumnAndConstraintGeneration::as"], [23, 3, 1, "_CPPv4I0EN4idol6Robust29ColumnAndConstraintGeneration2asER1Tv", "idol::Robust::ColumnAndConstraintGeneration::as::T"], [23, 3, 1, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2asERK1Tv", "idol::Robust::ColumnAndConstraintGeneration::as::T"], [23, 2, 1, "_CPPv4NK4idol6Robust29ColumnAndConstraintGeneration5cloneEv", "idol::Robust::ColumnAndConstraintGeneration::clone"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEERKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional::t_conditional_value"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEERKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional::t_conditional_value"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEERKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional::t_else"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional::t_if"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration11conditionalEbRKNSt8functionIFvR29ColumnAndConstraintGenerationEEERKNSt8functionIFvR29ColumnAndConstraintGenerationEEE", "idol::Robust::ColumnAndConstraintGeneration::conditional::t_if"], [23, 2, 1, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2isEbv", "idol::Robust::ColumnAndConstraintGeneration::is"], [23, 3, 1, "_CPPv4I0ENK4idol6Robust29ColumnAndConstraintGeneration2isEbv", "idol::Robust::ColumnAndConstraintGeneration::is::T"], [23, 2, 1, "_CPPv4NK4idol6Robust29ColumnAndConstraintGenerationclERK5Model", "idol::Robust::ColumnAndConstraintGeneration::operator()"], [23, 4, 1, "_CPPv4NK4idol6Robust29ColumnAndConstraintGenerationclERK5Model", "idol::Robust::ColumnAndConstraintGeneration::operator()::t_model"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationaSERK29ColumnAndConstraintGeneration", "idol::Robust::ColumnAndConstraintGeneration::operator="], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGenerationaSERR29ColumnAndConstraintGeneration", "idol::Robust::ColumnAndConstraintGeneration::operator="], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_absolute_gap_toleranceEd", "idol::Robust::ColumnAndConstraintGeneration::with_absolute_gap_tolerance"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_absolute_gap_toleranceEd", "idol::Robust::ColumnAndConstraintGeneration::with_absolute_gap_tolerance::t_absolute_gap_tolerance"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_best_bound_stopEd", "idol::Robust::ColumnAndConstraintGeneration::with_best_bound_stop"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_best_bound_stopEd", "idol::Robust::ColumnAndConstraintGeneration::with_best_bound_stop::t_best_bound_stop"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_best_obj_stopEd", "idol::Robust::ColumnAndConstraintGeneration::with_best_obj_stop"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_best_obj_stopEd", "idol::Robust::ColumnAndConstraintGeneration::with_best_obj_stop::t_user_best_obj"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration22with_complete_recourseEb", "idol::Robust::ColumnAndConstraintGeneration::with_complete_recourse"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration22with_complete_recourseEb", "idol::Robust::ColumnAndConstraintGeneration::with_complete_recourse::t_value"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration33with_infeasible_or_unbounded_infoEb", "idol::Robust::ColumnAndConstraintGeneration::with_infeasible_or_unbounded_info"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration33with_infeasible_or_unbounded_infoEb", "idol::Robust::ColumnAndConstraintGeneration::with_infeasible_or_unbounded_info::t_value"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_iteration_limitEj", "idol::Robust::ColumnAndConstraintGeneration::with_iteration_limit"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration20with_iteration_limitEj", "idol::Robust::ColumnAndConstraintGeneration::with_iteration_limit::t_iteration_count_limit"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration9with_logsEb", "idol::Robust::ColumnAndConstraintGeneration::with_logs"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration9with_logsEb", "idol::Robust::ColumnAndConstraintGeneration::with_logs::t_value"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration21with_master_optimizerERK16OptimizerFactory", "idol::Robust::ColumnAndConstraintGeneration::with_master_optimizer"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration21with_master_optimizerERK16OptimizerFactory", "idol::Robust::ColumnAndConstraintGeneration::with_master_optimizer::t_optimizer"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration13with_presolveEb", "idol::Robust::ColumnAndConstraintGeneration::with_presolve"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration13with_presolveEb", "idol::Robust::ColumnAndConstraintGeneration::with_presolve::t_value"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_relative_gap_toleranceEd", "idol::Robust::ColumnAndConstraintGeneration::with_relative_gap_tolerance"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration27with_relative_gap_toleranceEd", "idol::Robust::ColumnAndConstraintGeneration::with_relative_gap_tolerance::t_relative_gap_tolerance"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration14with_separatorERK12CCGSeparator", "idol::Robust::ColumnAndConstraintGeneration::with_separator"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration14with_separatorERK12CCGSeparator", "idol::Robust::ColumnAndConstraintGeneration::with_separator::t_separator"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_stabilizationERK13CCGStabilizer", "idol::Robust::ColumnAndConstraintGeneration::with_stabilization"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration18with_stabilizationERK13CCGStabilizer", "idol::Robust::ColumnAndConstraintGeneration::with_stabilization::t_stabilizer"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration17with_thread_limitEj", "idol::Robust::ColumnAndConstraintGeneration::with_thread_limit"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration17with_thread_limitEj", "idol::Robust::ColumnAndConstraintGeneration::with_thread_limit::t_max_n_threads"], [23, 2, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration15with_time_limitEd", "idol::Robust::ColumnAndConstraintGeneration::with_time_limit"], [23, 4, 1, "_CPPv4N4idol6Robust29ColumnAndConstraintGeneration15with_time_limitEd", "idol::Robust::ColumnAndConstraintGeneration::with_time_limit::t_time_limit"], [45, 1, 1, "_CPPv4N4idol3RowE", "idol::Row"], [45, 7, 1, "_CPPv4N4idol3Row8EmptyRowE", "idol::Row::EmptyRow"], [45, 2, 1, "_CPPv4N4idol3Row3RowERK3Row", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowERR3Row", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row"], [45, 2, 1, "_CPPv4N4idol3Row3RowEv", "idol::Row::Row"], [45, 4, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row::t_lhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row::t_lhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row::t_lhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row::t_lhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row::t_rhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERK4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row::t_rhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERK4ExprI3Var3VarE", "idol::Row::Row::t_rhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERR4ExprI3Var3VarERR4ExprI3Var3VarE", "idol::Row::Row::t_rhs"], [45, 4, 1, "_CPPv4N4idol3Row3RowERK3Row", "idol::Row::Row::t_src"], [45, 4, 1, "_CPPv4N4idol3Row3RowERR3Row", "idol::Row::Row::t_src"], [45, 2, 1, "_CPPv4NK4idol3Row3fixERKN8Solution4DualE", "idol::Row::fix"], [45, 2, 1, "_CPPv4NK4idol3Row3fixERKN8Solution6PrimalE", "idol::Row::fix"], [45, 4, 1, "_CPPv4NK4idol3Row3fixERKN8Solution4DualE", "idol::Row::fix::t_duals"], [45, 4, 1, "_CPPv4NK4idol3Row3fixERKN8Solution6PrimalE", "idol::Row::fix::t_primals"], [45, 2, 1, "_CPPv4NK4idol3Row3gcdEv", "idol::Row::gcd"], [45, 2, 1, "_CPPv4NK4idol3Row11is_violatedERKN8Solution6PrimalE7CtrTyped", "idol::Row::is_violated"], [45, 4, 1, "_CPPv4NK4idol3Row11is_violatedERKN8Solution6PrimalE7CtrTyped", "idol::Row::is_violated::t_primals"], [45, 4, 1, "_CPPv4NK4idol3Row11is_violatedERKN8Solution6PrimalE7CtrTyped", "idol::Row::is_violated::t_tolerance"], [45, 4, 1, "_CPPv4NK4idol3Row11is_violatedERKN8Solution6PrimalE7CtrTyped", "idol::Row::is_violated::t_type"], [45, 2, 1, "_CPPv4N4idol3Row6linearEv", "idol::Row::linear"], [45, 2, 1, "_CPPv4NK4idol3Row6linearEv", "idol::Row::linear"], [45, 2, 1, "_CPPv4N4idol3Row38multiply_with_precision_by_power_of_10Ejj", "idol::Row::multiply_with_precision_by_power_of_10"], [45, 4, 1, "_CPPv4N4idol3Row38multiply_with_precision_by_power_of_10Ejj", "idol::Row::multiply_with_precision_by_power_of_10::t_exponent"], [45, 4, 1, "_CPPv4N4idol3Row38multiply_with_precision_by_power_of_10Ejj", "idol::Row::multiply_with_precision_by_power_of_10::t_n_significant_digits"], [45, 2, 1, "_CPPv4N4idol3RowmLEd", "idol::Row::operator*="], [45, 4, 1, "_CPPv4N4idol3RowmLEd", "idol::Row::operator*=::t_rhs"], [45, 2, 1, "_CPPv4N4idol3RowpLERK3Row", "idol::Row::operator+="], [45, 4, 1, "_CPPv4N4idol3RowpLERK3Row", "idol::Row::operator+=::t_rhs"], [45, 2, 1, "_CPPv4N4idol3RowmIERK3Row", "idol::Row::operator-="], [45, 4, 1, "_CPPv4N4idol3RowmIERK3Row", "idol::Row::operator-=::t_rhs"], [45, 2, 1, "_CPPv4N4idol3RowdVEd", "idol::Row::operator/="], [45, 4, 1, "_CPPv4N4idol3RowdVEd", "idol::Row::operator/=::t_rhs"], [45, 2, 1, "_CPPv4N4idol3RowaSERK3Row", "idol::Row::operator="], [45, 2, 1, "_CPPv4N4idol3RowaSERR3Row", "idol::Row::operator="], [45, 4, 1, "_CPPv4N4idol3RowaSERK3Row", "idol::Row::operator=::t_src"], [45, 4, 1, "_CPPv4N4idol3RowaSERR3Row", "idol::Row::operator=::t_src"], [45, 2, 1, "_CPPv4N4idol3Row9quadraticEv", "idol::Row::quadratic"], [45, 2, 1, "_CPPv4NK4idol3Row9quadraticEv", "idol::Row::quadratic"], [45, 2, 1, "_CPPv4N4idol3Row3rhsEv", "idol::Row::rhs"], [45, 2, 1, "_CPPv4NK4idol3Row3rhsEv", "idol::Row::rhs"], [45, 2, 1, "_CPPv4N4idol3Row17scale_to_integersEj", "idol::Row::scale_to_integers"], [45, 4, 1, "_CPPv4N4idol3Row17scale_to_integersEj", "idol::Row::scale_to_integers::t_n_significant_digits"], [45, 2, 1, "_CPPv4N4idol3Row10set_linearERK7LinExprI3VarE", "idol::Row::set_linear"], [45, 2, 1, "_CPPv4N4idol3Row10set_linearERR7LinExprI3VarE", "idol::Row::set_linear"], [45, 4, 1, "_CPPv4N4idol3Row10set_linearERK7LinExprI3VarE", "idol::Row::set_linear::t_lin_expr"], [45, 4, 1, "_CPPv4N4idol3Row10set_linearERR7LinExprI3VarE", "idol::Row::set_linear::t_lin_expr"], [45, 2, 1, "_CPPv4N4idol3Row13set_quadraticERK8QuadExprI3Var3VarE", "idol::Row::set_quadratic"], [45, 2, 1, "_CPPv4N4idol3Row13set_quadraticERR8QuadExprI3Var3VarE", "idol::Row::set_quadratic"], [45, 4, 1, "_CPPv4N4idol3Row13set_quadraticERK8QuadExprI3Var3VarE", "idol::Row::set_quadratic::t_quad_expr"], [45, 4, 1, "_CPPv4N4idol3Row13set_quadraticERR8QuadExprI3Var3VarE", "idol::Row::set_quadratic::t_quad_expr"], [45, 2, 1, "_CPPv4N4idol3Row7set_rhsERK8Constant", "idol::Row::set_rhs"], [45, 2, 1, "_CPPv4N4idol3Row7set_rhsERR8Constant", "idol::Row::set_rhs"], [45, 4, 1, "_CPPv4N4idol3Row7set_rhsERK8Constant", "idol::Row::set_rhs::t_rhs"], [45, 4, 1, "_CPPv4N4idol3Row7set_rhsERR8Constant", "idol::Row::set_rhs::t_rhs"], [45, 2, 1, "_CPPv4NK4idol3Row5valueERKN8Solution6PrimalE", "idol::Row::value"], [45, 4, 1, "_CPPv4NK4idol3Row5valueERKN8Solution6PrimalE", "idol::Row::value::t_primals"], [46, 1, 1, "_CPPv4N4idol8Solution4DualE", "idol::Solution::Dual"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual5beginEv", "idol::Solution::Dual::begin"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual6cbeginEv", "idol::Solution::Dual::cbegin"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual4cendEv", "idol::Solution::Dual::cend"], [46, 0, 1, "_CPPv4N4idol8Solution4Dual14const_iteratorE", "idol::Solution::Dual::const_iterator"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual3endEv", "idol::Solution::Dual::end"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual3getERK3Ctr", "idol::Solution::Dual::get"], [46, 4, 1, "_CPPv4NK4idol8Solution4Dual3getERK3Ctr", "idol::Solution::Dual::get::t_key"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual19has_objective_valueEv", "idol::Solution::Dual::has_objective_value"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual22merge_without_conflictE4Dual", "idol::Solution::Dual::merge_without_conflict"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual22merge_without_conflictE4Dual", "idol::Solution::Dual::merge_without_conflict::t_rhs"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual4normEd", "idol::Solution::Dual::norm"], [46, 4, 1, "_CPPv4NK4idol8Solution4Dual4normEd", "idol::Solution::Dual::norm::t_p"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual9normalizeEd", "idol::Solution::Dual::normalize"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual9normalizeEd", "idol::Solution::Dual::normalize::t_p"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual15objective_valueEv", "idol::Solution::Dual::objective_value"], [46, 2, 1, "_CPPv4N4idol8Solution4DualmLEd", "idol::Solution::Dual::operator*="], [46, 4, 1, "_CPPv4N4idol8Solution4DualmLEd", "idol::Solution::Dual::operator*=::t_factor"], [46, 2, 1, "_CPPv4N4idol8Solution4DualpLERK4Dual", "idol::Solution::Dual::operator+="], [46, 4, 1, "_CPPv4N4idol8Solution4DualpLERK4Dual", "idol::Solution::Dual::operator+=::t_rhs"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual6reasonEv", "idol::Solution::Dual::reason"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual21reset_objective_valueEv", "idol::Solution::Dual::reset_objective_value"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual5roundEj", "idol::Solution::Dual::round"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual5roundEj", "idol::Solution::Dual::round::t_n_digits"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual3setERK3Ctrd", "idol::Solution::Dual::set"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual3setERK3Ctrd", "idol::Solution::Dual::set::t_key"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual3setERK3Ctrd", "idol::Solution::Dual::set::t_value"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual19set_objective_valueEd", "idol::Solution::Dual::set_objective_value"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual19set_objective_valueEd", "idol::Solution::Dual::set_objective_value::t_value"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual10set_reasonE14SolutionReason", "idol::Solution::Dual::set_reason"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual10set_reasonE14SolutionReason", "idol::Solution::Dual::set_reason::t_reason"], [46, 2, 1, "_CPPv4N4idol8Solution4Dual10set_statusE14SolutionStatus", "idol::Solution::Dual::set_status"], [46, 4, 1, "_CPPv4N4idol8Solution4Dual10set_statusE14SolutionStatus", "idol::Solution::Dual::set_status::t_status"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual4sizeEv", "idol::Solution::Dual::size"], [46, 2, 1, "_CPPv4NK4idol8Solution4Dual6statusEv", "idol::Solution::Dual::status"], [47, 1, 1, "_CPPv4N4idol8Solution6PrimalE", "idol::Solution::Primal"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal5beginEv", "idol::Solution::Primal::begin"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal6cbeginEv", "idol::Solution::Primal::cbegin"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal4cendEv", "idol::Solution::Primal::cend"], [47, 0, 1, "_CPPv4N4idol8Solution6Primal14const_iteratorE", "idol::Solution::Primal::const_iterator"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal3endEv", "idol::Solution::Primal::end"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal3getERK3Var", "idol::Solution::Primal::get"], [47, 4, 1, "_CPPv4NK4idol8Solution6Primal3getERK3Var", "idol::Solution::Primal::get::t_key"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal19has_objective_valueEv", "idol::Solution::Primal::has_objective_value"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal22merge_without_conflictE6Primal", "idol::Solution::Primal::merge_without_conflict"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal22merge_without_conflictE6Primal", "idol::Solution::Primal::merge_without_conflict::t_rhs"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal4normEd", "idol::Solution::Primal::norm"], [47, 4, 1, "_CPPv4NK4idol8Solution6Primal4normEd", "idol::Solution::Primal::norm::t_p"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal9normalizeEd", "idol::Solution::Primal::normalize"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal9normalizeEd", "idol::Solution::Primal::normalize::t_p"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal15objective_valueEv", "idol::Solution::Primal::objective_value"], [47, 2, 1, "_CPPv4N4idol8Solution6PrimalmLEd", "idol::Solution::Primal::operator*="], [47, 4, 1, "_CPPv4N4idol8Solution6PrimalmLEd", "idol::Solution::Primal::operator*=::t_factor"], [47, 2, 1, "_CPPv4N4idol8Solution6PrimalpLERK6Primal", "idol::Solution::Primal::operator+="], [47, 4, 1, "_CPPv4N4idol8Solution6PrimalpLERK6Primal", "idol::Solution::Primal::operator+=::t_rhs"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal6reasonEv", "idol::Solution::Primal::reason"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal21reset_objective_valueEv", "idol::Solution::Primal::reset_objective_value"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal5roundEj", "idol::Solution::Primal::round"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal5roundEj", "idol::Solution::Primal::round::t_n_digits"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal3setERK3Vard", "idol::Solution::Primal::set"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal3setERK3Vard", "idol::Solution::Primal::set::t_key"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal3setERK3Vard", "idol::Solution::Primal::set::t_value"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal19set_objective_valueEd", "idol::Solution::Primal::set_objective_value"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal19set_objective_valueEd", "idol::Solution::Primal::set_objective_value::t_value"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal10set_reasonE14SolutionReason", "idol::Solution::Primal::set_reason"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal10set_reasonE14SolutionReason", "idol::Solution::Primal::set_reason::t_reason"], [47, 2, 1, "_CPPv4N4idol8Solution6Primal10set_statusE14SolutionStatus", "idol::Solution::Primal::set_status"], [47, 4, 1, "_CPPv4N4idol8Solution6Primal10set_statusE14SolutionStatus", "idol::Solution::Primal::set_status::t_status"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal4sizeEv", "idol::Solution::Primal::size"], [47, 2, 1, "_CPPv4NK4idol8Solution6Primal6statusEv", "idol::Solution::Primal::status"], [20, 1, 1, "_CPPv4N4idol15StrongBranchingE", "idol::StrongBranching"], [20, 1, 1, "_CPPv4I0EN4idol15StrongBranching8StrategyE", "idol::StrongBranching::Strategy"], [20, 3, 1, "_CPPv4I0EN4idol15StrongBranching8StrategyE", "idol::StrongBranching::Strategy::NodeInfoT"], [20, 2, 1, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK15StrongBranching", "idol::StrongBranching::Strategy::Strategy"], [20, 2, 1, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK8StrategyI9NodeInfoTE", "idol::StrongBranching::Strategy::Strategy"], [20, 2, 1, "_CPPv4N4idol15StrongBranching8Strategy8StrategyEv", "idol::StrongBranching::Strategy::Strategy"], [20, 4, 1, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK15StrongBranching", "idol::StrongBranching::Strategy::Strategy::t_parent"], [20, 4, 1, "_CPPv4N4idol15StrongBranching8Strategy8StrategyERK8StrategyI9NodeInfoTE", "idol::StrongBranching::Strategy::Strategy::t_src"], [20, 2, 1, "_CPPv4NK4idol15StrongBranching8Strategy5cloneEv", "idol::StrongBranching::Strategy::clone"], [20, 2, 1, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::StrongBranching::Strategy::operator()"], [20, 2, 1, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::StrongBranching::Strategy::operator()"], [20, 4, 1, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::StrongBranching::Strategy::operator()::t_parent"], [20, 4, 1, "_CPPv4NK4idol15StrongBranching8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::StrongBranching::Strategy::operator()::t_parent"], [20, 2, 1, "_CPPv4I0EN4idol15StrongBranching15StrongBranchingE9IteratorT9IteratorT", "idol::StrongBranching::StrongBranching"], [20, 2, 1, "_CPPv4N4idol15StrongBranching15StrongBranchingEv", "idol::StrongBranching::StrongBranching"], [20, 3, 1, "_CPPv4I0EN4idol15StrongBranching15StrongBranchingE9IteratorT9IteratorT", "idol::StrongBranching::StrongBranching::IteratorT"], [20, 4, 1, "_CPPv4I0EN4idol15StrongBranching15StrongBranchingE9IteratorT9IteratorT", "idol::StrongBranching::StrongBranching::t_begin"], [20, 4, 1, "_CPPv4I0EN4idol15StrongBranching15StrongBranchingE9IteratorT9IteratorT", "idol::StrongBranching::StrongBranching::t_end"], [20, 2, 1, "_CPPv4N4idol15StrongBranching9add_phaseERK24StrongBranchingPhaseTypejj", "idol::StrongBranching::add_phase"], [20, 4, 1, "_CPPv4N4idol15StrongBranching9add_phaseERK24StrongBranchingPhaseTypejj", "idol::StrongBranching::add_phase::t_max_depth"], [20, 4, 1, "_CPPv4N4idol15StrongBranching9add_phaseERK24StrongBranchingPhaseTypejj", "idol::StrongBranching::add_phase::t_max_n_variables"], [20, 4, 1, "_CPPv4N4idol15StrongBranching9add_phaseERK24StrongBranchingPhaseTypejj", "idol::StrongBranching::add_phase::t_phase"], [20, 2, 1, "_CPPv4N4idol15StrongBranching20with_max_n_variablesEj", "idol::StrongBranching::with_max_n_variables"], [20, 4, 1, "_CPPv4N4idol15StrongBranching20with_max_n_variablesEj", "idol::StrongBranching::with_max_n_variables::t_n_variables"], [20, 2, 1, "_CPPv4N4idol15StrongBranching26with_node_scoring_functionERK17NodeScoreFunction", "idol::StrongBranching::with_node_scoring_function"], [20, 4, 1, "_CPPv4N4idol15StrongBranching26with_node_scoring_functionERK17NodeScoreFunction", "idol::StrongBranching::with_node_scoring_function::t_score_function"], [48, 1, 1, "_CPPv4N4idol7TempCtrE", "idol::TempCtr"], [48, 2, 1, "_CPPv4N4idol7TempCtr7TempCtrERK7TempCtr", "idol::TempCtr::TempCtr"], [48, 2, 1, "_CPPv4N4idol7TempCtr7TempCtrERR3Row7CtrType", "idol::TempCtr::TempCtr"], [48, 2, 1, "_CPPv4N4idol7TempCtr7TempCtrERR7TempCtr", "idol::TempCtr::TempCtr"], [48, 2, 1, "_CPPv4N4idol7TempCtr7TempCtrEv", "idol::TempCtr::TempCtr"], [48, 4, 1, "_CPPv4N4idol7TempCtr7TempCtrERR3Row7CtrType", "idol::TempCtr::TempCtr::t_row"], [48, 4, 1, "_CPPv4N4idol7TempCtr7TempCtrERK7TempCtr", "idol::TempCtr::TempCtr::t_src"], [48, 4, 1, "_CPPv4N4idol7TempCtr7TempCtrERR7TempCtr", "idol::TempCtr::TempCtr::t_src"], [48, 4, 1, "_CPPv4N4idol7TempCtr7TempCtrERR3Row7CtrType", "idol::TempCtr::TempCtr::t_type"], [48, 2, 1, "_CPPv4NK4idol7TempCtr11is_violatedERKN8Solution6PrimalE", "idol::TempCtr::is_violated"], [48, 4, 1, "_CPPv4NK4idol7TempCtr11is_violatedERKN8Solution6PrimalE", "idol::TempCtr::is_violated::t_solution"], [48, 2, 1, "_CPPv4N4idol7TempCtraSERK7TempCtr", "idol::TempCtr::operator="], [48, 2, 1, "_CPPv4N4idol7TempCtraSERR7TempCtr", "idol::TempCtr::operator="], [48, 4, 1, "_CPPv4N4idol7TempCtraSERK7TempCtr", "idol::TempCtr::operator=::t_src"], [48, 4, 1, "_CPPv4N4idol7TempCtraSERR7TempCtr", "idol::TempCtr::operator=::t_src"], [48, 2, 1, "_CPPv4N4idol7TempCtr3rowEv", "idol::TempCtr::row"], [48, 2, 1, "_CPPv4NK4idol7TempCtr3rowEv", "idol::TempCtr::row"], [48, 2, 1, "_CPPv4N4idol7TempCtr8set_typeE7CtrType", "idol::TempCtr::set_type"], [48, 4, 1, "_CPPv4N4idol7TempCtr8set_typeE7CtrType", "idol::TempCtr::set_type::t_type"], [48, 2, 1, "_CPPv4NK4idol7TempCtr4typeEv", "idol::TempCtr::type"], [49, 1, 1, "_CPPv4N4idol7TempVarE", "idol::TempVar"], [49, 2, 1, "_CPPv4N4idol7TempVar7TempVarERK7TempVar", "idol::TempVar::TempVar"], [49, 2, 1, "_CPPv4N4idol7TempVar7TempVarERR7TempVar", "idol::TempVar::TempVar"], [49, 2, 1, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", "idol::TempVar::TempVar"], [49, 2, 1, "_CPPv4N4idol7TempVar7TempVarEv", "idol::TempVar::TempVar"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", "idol::TempVar::TempVar::t_column"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", "idol::TempVar::TempVar::t_lb"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarERK7TempVar", "idol::TempVar::TempVar::t_src"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarERR7TempVar", "idol::TempVar::TempVar::t_src"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", "idol::TempVar::TempVar::t_type"], [49, 4, 1, "_CPPv4N4idol7TempVar7TempVarEdd7VarTypeRR6Column", "idol::TempVar::TempVar::t_ub"], [49, 2, 1, "_CPPv4N4idol7TempVar6columnEv", "idol::TempVar::column"], [49, 2, 1, "_CPPv4NK4idol7TempVar6columnEv", "idol::TempVar::column"], [49, 2, 1, "_CPPv4NK4idol7TempVar2lbEv", "idol::TempVar::lb"], [49, 2, 1, "_CPPv4N4idol7TempVaraSERK7TempVar", "idol::TempVar::operator="], [49, 2, 1, "_CPPv4N4idol7TempVaraSERR7TempVar", "idol::TempVar::operator="], [49, 4, 1, "_CPPv4N4idol7TempVaraSERK7TempVar", "idol::TempVar::operator=::t_src"], [49, 4, 1, "_CPPv4N4idol7TempVaraSERR7TempVar", "idol::TempVar::operator=::t_src"], [49, 2, 1, "_CPPv4N4idol7TempVar6set_lbEd", "idol::TempVar::set_lb"], [49, 4, 1, "_CPPv4N4idol7TempVar6set_lbEd", "idol::TempVar::set_lb::t_lb"], [49, 2, 1, "_CPPv4N4idol7TempVar8set_typeE7VarType", "idol::TempVar::set_type"], [49, 4, 1, "_CPPv4N4idol7TempVar8set_typeE7VarType", "idol::TempVar::set_type::t_type"], [49, 2, 1, "_CPPv4N4idol7TempVar6set_ubEd", "idol::TempVar::set_ub"], [49, 4, 1, "_CPPv4N4idol7TempVar6set_ubEd", "idol::TempVar::set_ub::t_ub"], [49, 2, 1, "_CPPv4NK4idol7TempVar4typeEv", "idol::TempVar::type"], [49, 2, 1, "_CPPv4NK4idol7TempVar2ubEv", "idol::TempVar::ub"], [76, 0, 1, "_CPPv4N4idol9ToleranceE", "idol::Tolerance"], [76, 7, 1, "_CPPv4N4idol9Tolerance6DigitsE", "idol::Tolerance::Digits"], [76, 7, 1, "_CPPv4N4idol9Tolerance11FeasibilityE", "idol::Tolerance::Feasibility"], [76, 7, 1, "_CPPv4N4idol9Tolerance7IntegerE", "idol::Tolerance::Integer"], [76, 7, 1, "_CPPv4N4idol9Tolerance14MIPAbsoluteGapE", "idol::Tolerance::MIPAbsoluteGap"], [76, 7, 1, "_CPPv4N4idol9Tolerance14MIPRelativeGapE", "idol::Tolerance::MIPRelativeGap"], [76, 7, 1, "_CPPv4N4idol9Tolerance10OptimalityE", "idol::Tolerance::Optimality"], [76, 7, 1, "_CPPv4N4idol9Tolerance8SparsityE", "idol::Tolerance::Sparsity"], [21, 1, 1, "_CPPv4N4idol15UniformlyRandomE", "idol::UniformlyRandom"], [21, 1, 1, "_CPPv4I0EN4idol15UniformlyRandom8StrategyE", "idol::UniformlyRandom::Strategy"], [21, 3, 1, "_CPPv4I0EN4idol15UniformlyRandom8StrategyE", "idol::UniformlyRandom::Strategy::NodeInfoT"], [21, 2, 1, "_CPPv4N4idol15UniformlyRandom8Strategy8StrategyERK15UniformlyRandom", "idol::UniformlyRandom::Strategy::Strategy"], [21, 2, 1, "_CPPv4N4idol15UniformlyRandom8Strategy8StrategyEv", "idol::UniformlyRandom::Strategy::Strategy"], [21, 4, 1, "_CPPv4N4idol15UniformlyRandom8Strategy8StrategyERK15UniformlyRandom", "idol::UniformlyRandom::Strategy::Strategy::t_parent"], [21, 2, 1, "_CPPv4NK4idol15UniformlyRandom8Strategy5cloneEv", "idol::UniformlyRandom::Strategy::clone"], [21, 2, 1, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::UniformlyRandom::Strategy::operator()"], [21, 2, 1, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::UniformlyRandom::Strategy::operator()"], [21, 4, 1, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI5NodeTEE", "idol::UniformlyRandom::Strategy::operator()::t_parent"], [21, 4, 1, "_CPPv4NK4idol15UniformlyRandom8StrategyclERKN10Optimizers14BranchAndBoundI9NodeInfoTEE", "idol::UniformlyRandom::Strategy::operator()::t_parent"], [21, 2, 1, "_CPPv4I0EN4idol15UniformlyRandom15UniformlyRandomE9IteratorT9IteratorT", "idol::UniformlyRandom::UniformlyRandom"], [21, 2, 1, "_CPPv4N4idol15UniformlyRandom15UniformlyRandomEv", "idol::UniformlyRandom::UniformlyRandom"], [21, 3, 1, "_CPPv4I0EN4idol15UniformlyRandom15UniformlyRandomE9IteratorT9IteratorT", "idol::UniformlyRandom::UniformlyRandom::IteratorT"], [21, 4, 1, "_CPPv4I0EN4idol15UniformlyRandom15UniformlyRandomE9IteratorT9IteratorT", "idol::UniformlyRandom::UniformlyRandom::t_begin"], [21, 4, 1, "_CPPv4I0EN4idol15UniformlyRandom15UniformlyRandomE9IteratorT9IteratorT", "idol::UniformlyRandom::UniformlyRandom::t_end"], [21, 2, 1, "_CPPv4N4idol15UniformlyRandom9with_seedEj", "idol::UniformlyRandom::with_seed"], [21, 4, 1, "_CPPv4N4idol15UniformlyRandom9with_seedEj", "idol::UniformlyRandom::with_seed::t_seed"], [73, 1, 1, "_CPPv4N4idol15UserCutCallbackE", "idol::UserCutCallback"], [73, 1, 1, "_CPPv4N4idol15UserCutCallback8StrategyE", "idol::UserCutCallback::Strategy"], [73, 2, 1, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", "idol::UserCutCallback::Strategy::Strategy"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", "idol::UserCutCallback::Strategy::Strategy::t_cut"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", "idol::UserCutCallback::Strategy::Strategy::t_log_color"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", "idol::UserCutCallback::Strategy::Strategy::t_log_level"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback8Strategy8StrategyEP5Model7TempCtr8LogLevel5Color", "idol::UserCutCallback::Strategy::Strategy::t_separation_problem"], [73, 2, 1, "_CPPv4N4idol15UserCutCallback15UserCutCallbackERK5Model7TempCtr", "idol::UserCutCallback::UserCutCallback"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback15UserCutCallbackERK5Model7TempCtr", "idol::UserCutCallback::UserCutCallback::t_cut"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback15UserCutCallbackERK5Model7TempCtr", "idol::UserCutCallback::UserCutCallback::t_model"], [73, 2, 1, "_CPPv4NK4idol15UserCutCallback5cloneEv", "idol::UserCutCallback::clone"], [73, 2, 1, "_CPPv4N4idol15UserCutCallbackclEv", "idol::UserCutCallback::operator()"], [73, 2, 1, "_CPPv4N4idol15UserCutCallback25with_separation_optimizerERK16OptimizerFactory", "idol::UserCutCallback::with_separation_optimizer"], [73, 4, 1, "_CPPv4N4idol15UserCutCallback25with_separation_optimizerERK16OptimizerFactory", "idol::UserCutCallback::with_separation_optimizer::t_optimizer_factory"], [50, 1, 1, "_CPPv4N4idol3VarE", "idol::Var"], [50, 2, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var"], [50, 2, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var"], [50, 2, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var"], [50, 2, 1, "_CPPv4N4idol3Var3VarERK3Var", "idol::Var::Var"], [50, 2, 1, "_CPPv4N4idol3Var3VarERR3Var", "idol::Var::Var"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_column"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_column"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var::t_env"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_env"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_env"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var::t_lb"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_lb"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_lb"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var::t_name"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_name"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_name"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var::t_type"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_type"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_type"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeNSt6stringE", "idol::Var::Var::t_ub"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRK6ColumnNSt6stringE", "idol::Var::Var::t_ub"], [50, 4, 1, "_CPPv4N4idol3Var3VarER3Envdd7VarTypeRR6ColumnNSt6stringE", "idol::Var::Var::t_ub"], [50, 2, 1, "_CPPv4NK4idol3Var3getERK10AnnotationI3Var6ValueTE", "idol::Var::get"], [50, 4, 1, "_CPPv4NK4idol3Var3getERK10AnnotationI3Var6ValueTE", "idol::Var::get::t_annotation"], [50, 2, 1, "_CPPv4NK4idol3Var2idEv", "idol::Var::id"], [50, 2, 1, "_CPPv4NK4idol3Var5is_inERK5Model", "idol::Var::is_in"], [50, 4, 1, "_CPPv4NK4idol3Var5is_inERK5Model", "idol::Var::is_in::t_model"], [50, 2, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector"], [50, 3, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::I"], [50, 3, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::N"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_dim"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_env"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_lb"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_name"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_type"], [50, 4, 1, "_CPPv4I_j_jEN4idol3Var11make_vectorE6VectorI3VarXmi1N1IEER3EnvRK3DimI1NEdd7VarTypeRKNSt6stringE", "idol::Var::make_vector::t_ub"], [50, 2, 1, "_CPPv4NK4idol3Var4nameEv", "idol::Var::name"], [50, 2, 1, "_CPPv4N4idol3VaraSERK3Var", "idol::Var::operator="], [50, 2, 1, "_CPPv4N4idol3VaraSERR3Var", "idol::Var::operator="], [50, 2, 1, "_CPPv4NK4idol3Var3setERK10AnnotationI3Var6ValueTEDpRR5ArgsT", "idol::Var::set"], [50, 4, 1, "_CPPv4NK4idol3Var3setERK10AnnotationI3Var6ValueTEDpRR5ArgsT", "idol::Var::set::t_annotation"], [50, 4, 1, "_CPPv4NK4idol3Var3setERK10AnnotationI3Var6ValueTEDpRR5ArgsT", "idol::Var::set::t_args"], [78, 6, 1, "_CPPv4N4idol7VarTypeE", "idol::VarType"], [78, 5, 1, "_CPPv4N4idol7VarType6BinaryE", "idol::VarType::Binary"], [78, 5, 1, "_CPPv4N4idol7VarType10ContinuousE", "idol::VarType::Continuous"], [78, 5, 1, "_CPPv4N4idol7VarType7IntegerE", "idol::VarType::Integer"], [14, 1, 1, "_CPPv4N4idol10WorstBoundE", "idol::WorstBound"], [14, 1, 1, "_CPPv4I0EN4idol10WorstBound8StrategyE", "idol::WorstBound::Strategy"], [14, 3, 1, "_CPPv4I0EN4idol10WorstBound8StrategyE", "idol::WorstBound::Strategy::NodeT"], [14, 2, 1, "_CPPv4N4idol10WorstBound8Strategy8StrategyERK10WorstBound", "idol::WorstBound::Strategy::Strategy"], [14, 4, 1, "_CPPv4N4idol10WorstBound8Strategy8StrategyERK10WorstBound", "idol::WorstBound::Strategy::Strategy::t_parent"], [14, 2, 1, "_CPPv4NK4idol10WorstBound8Strategy5cloneEv", "idol::WorstBound::Strategy::clone"], [14, 2, 1, "_CPPv4NK4idol10WorstBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::WorstBound::Strategy::operator()"], [14, 4, 1, "_CPPv4NK4idol10WorstBound8StrategyclERN10Optimizers14BranchAndBoundI5NodeTEE", "idol::WorstBound::Strategy::operator()::t_parent"], [76, 2, 1, "_CPPv4N4idol12absolute_gapEdd", "idol::absolute_gap"], [76, 4, 1, "_CPPv4N4idol12absolute_gapEdd", "idol::absolute_gap::t_lb"], [76, 4, 1, "_CPPv4N4idol12absolute_gapEdd", "idol::absolute_gap::t_ub"], [76, 2, 1, "_CPPv4N4idol6equalsEddd", "idol::equals"], [76, 4, 1, "_CPPv4N4idol6equalsEddd", "idol::equals::t_a"], [76, 4, 1, "_CPPv4N4idol6equalsEddd", "idol::equals::t_b"], [76, 4, 1, "_CPPv4N4idol6equalsEddd", "idol::equals::t_tolerance"], [76, 2, 1, "_CPPv4N4idol6is_infEd", "idol::is_inf"], [76, 4, 1, "_CPPv4N4idol6is_infEd", "idol::is_inf::t_value"], [76, 2, 1, "_CPPv4N4idol10is_integerEdd", "idol::is_integer"], [76, 4, 1, "_CPPv4N4idol10is_integerEdd", "idol::is_integer::t_tolerance"], [76, 4, 1, "_CPPv4N4idol10is_integerEdd", "idol::is_integer::t_value"], [76, 2, 1, "_CPPv4N4idol10is_neg_infEd", "idol::is_neg_inf"], [76, 4, 1, "_CPPv4N4idol10is_neg_infEd", "idol::is_neg_inf::t_value"], [76, 2, 1, "_CPPv4N4idol10is_pos_infEd", "idol::is_pos_inf"], [76, 4, 1, "_CPPv4N4idol10is_pos_infEd", "idol::is_pos_inf::t_value"], [76, 2, 1, "_CPPv4N4idol23multiply_with_precisionEddj", "idol::multiply_with_precision"], [76, 4, 1, "_CPPv4N4idol23multiply_with_precisionEddj", "idol::multiply_with_precision::t_a"], [76, 4, 1, "_CPPv4N4idol23multiply_with_precisionEddj", "idol::multiply_with_precision::t_b"], [76, 4, 1, "_CPPv4N4idol23multiply_with_precisionEddj", "idol::multiply_with_precision::t_n_digits"], [76, 2, 1, "_CPPv4N4idol38multiply_with_precision_by_power_of_10Edjj", "idol::multiply_with_precision_by_power_of_10"], [76, 4, 1, "_CPPv4N4idol38multiply_with_precision_by_power_of_10Edjj", "idol::multiply_with_precision_by_power_of_10::t_exponent"], [76, 4, 1, "_CPPv4N4idol38multiply_with_precision_by_power_of_10Edjj", "idol::multiply_with_precision_by_power_of_10::t_n_digits"], [76, 4, 1, "_CPPv4N4idol38multiply_with_precision_by_power_of_10Edjj", "idol::multiply_with_precision_by_power_of_10::t_x"], [76, 2, 1, "_CPPv4N4idol12relative_gapEdd", "idol::relative_gap"], [76, 4, 1, "_CPPv4N4idol12relative_gapEdd", "idol::relative_gap::t_lb"], [76, 4, 1, "_CPPv4N4idol12relative_gapEdd", "idol::relative_gap::t_ub"], [76, 2, 1, "_CPPv4N4idol5roundEdj", "idol::round"], [76, 4, 1, "_CPPv4N4idol5roundEdj", "idol::round::t_n_digits"], [76, 4, 1, "_CPPv4N4idol5roundEdj", "idol::round::t_value"]]}, "objnames": {"0": ["cpp", "type", "C++ type"], "1": ["cpp", "class", "C++ class"], "2": ["cpp", "function", "C++ function"], "3": ["cpp", "templateParam", "C++ template parameter"], "4": ["cpp", "functionParam", "C++ function parameter"], "5": ["cpp", "enumerator", "C++ enumerator"], "6": ["cpp", "enum", "C++ enum"], "7": ["cpp", "member", "C++ member"]}, "objtypes": {"0": "cpp:type", "1": "cpp:class", "2": "cpp:function", "3": "cpp:templateParam", "4": "cpp:functionParam", "5": "cpp:enumerator", "6": "cpp:enum", "7": "cpp:member"}, "terms": {"": [0, 1, 23, 27, 36, 38, 41, 42, 45, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 86, 94, 99, 100, 117, 120, 127, 128, 130, 133, 136], "0": [0, 1, 2, 16, 17, 18, 19, 20, 21, 23, 27, 35, 38, 41, 42, 43, 46, 47, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 71, 72, 76, 93, 94, 96, 98, 99, 100, 117, 120, 124, 126, 130, 131, 133, 134, 135, 136], "00": 117, "00000": 117, "002": 100, "003": 100, "01": 117, "016": 100, "02": 117, "0249": 100, "04": [100, 117], "05": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 100], "07": 117, "0784": 100, "08": 117, "1": [0, 23, 27, 37, 38, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 93, 94, 96, 98, 100, 117, 120, 124, 126, 128, 130, 131, 133, 134, 135, 136], "10": [42, 76, 94, 99, 100, 117, 120, 130, 134, 135], "100": [42, 46, 94, 135], "1002": 100, "1007": 100, "1016": 100, "10e": 76, "11": 100, "110000": 117, "12": 100, "12451": 117, "1287": 100, "13": [46, 47, 100, 117], "14": [94, 117, 135], "16": 117, "17": [96, 98], "173": 100, "17547": 117, "17552": 117, "187": 100, "1911818": 100, "1961": 100, "1974": [11, 100], "1997": 94, "1999": 100, "1e": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76], "1e20": 76, "2": [0, 36, 37, 38, 41, 42, 43, 46, 47, 48, 49, 50, 76, 93, 94, 98, 100, 117, 120, 124, 126, 129, 130, 134, 135, 136], "20": [11, 100, 120], "200": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117], "2000": 94, "2002": 100, "2004": 100, "2005": 100, "2006": 100, "201": 100, "2013": 100, "2016": [100, 136], "2017": 100, "2018": 100, "2019": 100, "2020": 100, "2023": 117, "20572": 117, "21": 117, "2106593638087168512": 117, "213": 100, "218": 117, "219": 100, "22": 96, "22397": 117, "224": 117, "22579": 117, "23": 98, "2307": 100, "233": 117, "235": 117, "239": 100, "242": 117, "25486": 100, "25760": 117, "277": 117, "29": 100, "2_": 136, "2_12": 100, "2x_0": 136, "2x_1": 136, "2y": 136, "3": [41, 42, 94, 96, 98, 100, 120, 126, 134, 135, 136], "30": [94, 100, 120, 135], "30068": 117, "3051": 100, "3068": 100, "33": 100, "331": 100, "3341": 100, "339": 100, "35": 117, "35653": 117, "358": 100, "36": 117, "360": 100, "3600": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 134], "36123": 117, "36131": 117, "387": 100, "3x_1": 136, "3y": 136, "4": [0, 23, 27, 38, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 98, 100, 117, 126, 136], "40": [94, 135], "40096": 117, "41": 100, "42": 100, "42918454935603896320": 117, "44": 117, "45": 117, "457": 100, "461": 100, "4747": 117, "49817": 117, "5": [0, 11, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 93, 94, 100, 117, 120, 134, 135], "50": [94, 117, 120, 135], "50000": 117, "50093": 117, "51": 117, "54": 100, "58": 117, "58001": 117, "6": [76, 83, 100, 117, 120], "66": 100, "7": [100, 117], "736": [11, 100], "7492": 117, "767": 100, "773": [11, 100], "8": [76, 100, 117, 120], "80933": 117, "81": 117, "85653": 117, "86": 117, "9": [76, 100, 117], "90269": 117, "90909090909090928": 117, "91": 100, "95": [94, 135], "9781119606475": 100, "98": [94, 135], "A": [0, 11, 23, 27, 37, 38, 43, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 83, 94, 95, 97, 98, 100, 105, 115, 117, 123, 124, 126, 128, 130, 131, 135, 136], "And": 130, "As": [94, 98, 124, 133, 134, 135, 136], "At": 67, "By": [1, 84, 86, 94, 95, 98, 99, 120], "For": [0, 1, 35, 36, 37, 38, 70, 76, 84, 86, 94, 98, 99, 117, 120, 124, 126, 127, 129, 130, 131, 134, 135], "If": [0, 1, 37, 38, 39, 41, 42, 45, 46, 47, 50, 70, 72, 86, 93, 94, 95, 96, 98, 99, 118, 119, 124, 129, 130, 133, 135], "In": [0, 41, 70, 99, 105, 115, 117, 120, 123, 126, 130, 131, 133, 134, 135, 136], "It": [0, 36, 37, 39, 41, 45, 48, 49, 76, 81, 93, 94, 95, 99, 120, 125, 130, 133, 134, 136], "No": 35, "OR": [68, 69, 94, 101, 102, 105], "Such": [36, 45], "That": [117, 136], "The": [0, 1, 11, 23, 27, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 76, 84, 86, 93, 94, 95, 96, 98, 99, 100, 105, 115, 120, 123, 124, 127, 128, 129, 130, 133, 134, 135, 136], "Then": [1, 72, 86, 93, 95, 98, 117, 118, 119, 120, 133, 135, 136], "There": [97, 120, 130], "These": [70, 130], "To": [35, 86, 94, 95, 99, 117, 120, 127, 128, 129, 131, 133, 134], "_": 117, "_0": 37, "_build": [53, 61, 62], "_j": 37, "_r": 93, "a_": [93, 128], "abl": 42, "about": [81, 117, 118, 119, 124, 130, 135], "abov": [98, 120], "absgap": 117, "absolut": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 135], "absolute_gap": 76, "absolutegap": 76, "abstractexpr": [41, 44], "abstractsolut": [46, 47], "access": [1, 35, 39, 46, 47, 70, 94, 105, 123, 126, 127, 134], "accord": [0, 1, 83], "accordingli": [130, 134], "account": 76, "achiev": 99, "achterberg": 100, "action": 86, "activ": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 86], "actual": [0, 42, 99, 120, 124, 126, 133], "ad": [0, 1, 37, 38, 41, 42, 45, 50, 70, 72, 94, 105, 110, 123, 124, 126, 130, 133, 134], "add": [0, 1, 36, 37, 38, 41, 42, 45, 46, 47, 50, 70, 72, 84, 98, 117, 124, 127, 128, 130, 133, 134, 135, 136], "add_callback": [0, 56, 58, 60, 133, 136], "add_ctr": [38, 42, 45, 48, 94, 117, 124, 133, 134, 136], "add_execut": [96, 98], "add_lazy_cut": [1, 70], "add_optim": [117, 120], "add_phas": [20, 120], "add_user_cut": [1, 70, 133], "add_var": [41, 42, 43, 49, 50, 94, 96, 98, 117, 124, 126, 130, 131, 133, 134, 135, 136], "add_vector": [42, 130], "addit": [35, 70, 76, 117, 130, 135], "addition": [120, 128], "adjust": 100, "advanc": [1, 70, 95, 105, 110, 117, 123, 133, 134, 135, 136, 137, 141], "advanced_interfac": 1, "advantag": [1, 94], "advis": [0, 39, 95, 125], "affect": 130, "affin": 37, "after": [35, 46, 47, 120, 134], "again": [128, 130], "against": 72, "agap": 117, "agent": 117, "agnost": 94, "ahead": 120, "aim": 94, "alexand": 100, "algebra": 99, "algorithm": [0, 1, 23, 24, 27, 30, 35, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 69, 70, 81, 99, 100, 105, 118, 119, 120, 123, 134, 135, 136, 141], "align": [72, 93, 128, 133, 136], "all": [36, 39, 41, 45, 46, 47, 48, 49, 72, 76, 84, 86, 95, 98, 99, 117, 120, 127, 133, 136], "allow": [117, 120, 131, 136], "along": 0, "alpha": 98, "alreadi": [42, 46, 47, 94, 96], "also": [0, 27, 37, 39, 42, 67, 70, 72, 76, 86, 94, 95, 98, 99, 117, 125, 127, 128, 133, 134, 136], "altern": 129, "alwai": [76, 120, 134, 136], "among": [120, 135], "amount": 76, "an": [0, 1, 35, 36, 37, 38, 39, 41, 42, 45, 46, 47, 48, 49, 50, 67, 70, 72, 76, 81, 86, 93, 95, 99, 101, 102, 105, 110, 117, 120, 123, 124, 125, 126, 127, 128, 130, 133, 134, 135], "ani": [42, 67, 94, 95, 96, 117, 120, 124, 126, 130, 133], "annot": [23, 24, 27, 38, 39, 50, 51, 69, 117, 120], "anoth": [37, 38, 43, 45, 46, 47, 50, 94, 99, 117, 120, 134], "anticip": 136, "antonio": 100, "anyth": 94, "anywher": 35, "apart": 76, "api": 94, "appear": 37, "appli": [117, 120], "applic": [100, 130, 136], "approach": [38, 50, 120], "appropri": [37, 131], "approxim": 120, "apt": 84, "ar": [0, 1, 27, 29, 35, 36, 37, 38, 39, 41, 42, 43, 45, 49, 70, 72, 86, 93, 94, 97, 99, 117, 118, 119, 120, 124, 125, 126, 127, 128, 130, 131, 133, 134, 135, 136], "argmax": 120, "argst": [35, 38, 50], "argument": [0, 23, 27, 35, 37, 38, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 120, 124, 134, 135], "aris": [46, 47, 72], "aro": 94, "arrai": 42, "articl": 84, "artifici": 94, "artificialcost": [31, 69], "as_numer": 37, "ask": [42, 70, 96, 98], "aspect": 120, "assembl": 134, "assign": [36, 37, 43, 45, 48, 49, 83, 90, 117, 118, 119, 120], "assignment_": 117, "associ": [35, 37, 38, 43, 46, 47, 50, 72, 117, 124, 130], "assum": [72, 93, 95, 117, 120, 128, 134], "assumpt": 93, "attach": 128, "attempt": [86, 120], "attent": 42, "attribut": [36, 37, 42, 45, 130], "auto": [0, 23, 27, 37, 38, 39, 41, 42, 43, 45, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 96, 98, 117, 120, 124, 126, 128, 130, 131, 133, 134, 135, 136], "autom": 100, "automat": [0, 42, 72, 84, 86, 93, 94, 97, 126, 130], "avail": [42, 70, 83, 86, 117], "avoid": [0, 99, 120], "ayoub": 100, "b": [37, 43, 94, 100], "b_i": [93, 128], "back": 126, "badli": 120, "baena": 100, "bar": 117, "base": [42, 93, 100, 105, 110, 120, 123, 136], "basic": 127, "bbuild": 86, "becaus": [42, 46, 47, 120], "been": [42, 48, 49, 67, 70, 72, 81, 95, 117, 120, 124, 129, 130], "befor": [42, 94, 95, 120, 135], "beforehand": 42, "begin": [1, 41, 42, 46, 47, 72, 93, 117, 128, 133, 136], "behavior": [39, 70, 94], "behaviour": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 81], "behind": [43, 98], "being": [0, 1, 42, 70, 95, 117, 134], "belong": [128, 130], "below": 120, "benchmark": [94, 100, 117], "bender": [72, 100], "benders_cut": 136, "berlin": 100, "berthold": 100, "best": [0, 1, 11, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 94, 99, 117, 129, 130, 134, 135], "best_bound": [26, 28, 30, 42, 70], "best_obj": [26, 28, 30, 42, 70], "bestbnd": 117, "bestbound": [0, 9, 15, 117, 120, 134], "bestestim": [9, 15], "bestobj": 117, "better": [124, 130], "between": [45, 48, 93, 136], "bewar": [120, 124, 130], "bilevel": [94, 102], "bin": 99, "binari": [42, 49, 78, 94, 96, 98, 117, 130, 133, 134, 135, 136], "black": 94, "blanco": 136, "block": [1, 70, 84], "blue": 117, "bo": [94, 100], "bool": [0, 3, 23, 24, 27, 29, 30, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 48, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 76], "boston": 100, "both": [37, 45, 120, 136], "bound": [0, 1, 23, 27, 42, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 69, 70, 72, 81, 83, 105, 117, 120, 123, 129, 130, 134, 135], "box": [70, 94], "branch": [0, 1, 35, 42, 69, 70, 81, 83, 100, 105, 118, 119, 123, 134, 136], "branch_and_bound": [94, 117, 120, 134], "branch_and_pric": [94, 120], "branchandbound": [1, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 29, 42, 69, 70, 117, 120, 134], "branchandboundcallback": [0, 2, 3, 9, 29, 69, 70], "branchandboundcallbackfactori": [0, 1, 3, 9, 29, 69], "branching_rul": [120, 134], "branchingrul": [16, 17, 18, 19, 20, 21], "branchingrulefactori": 0, "branchingrulefactoryt": 0, "breadth": 94, "breadthfirst": [9, 15], "breath": 84, "build": [0, 23, 27, 37, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 85, 94], "build_exampl": 99, "build_test": 86, "built": [35, 48, 49, 84, 95, 96], "bunch": 84, "burden": 120, "button": 84, "c": [42, 72, 84, 86, 93, 94, 95, 99, 120, 128, 133, 136], "c1": 42, "c2": 42, "c_": 117, "c_0": 128, "call": [0, 1, 35, 36, 37, 38, 41, 42, 45, 46, 47, 50, 70, 86, 94, 95, 99, 117, 120, 124, 126, 128, 130, 133, 134, 135, 136], "callack": 133, "callback": [0, 1, 5, 6, 7, 60, 69, 71, 72, 73, 80, 81, 94, 105, 110, 123, 134, 136], "callbackasbranchandboundcallback": [1, 2], "callbackev": [1, 70, 81, 133], "callbackfactori": [0, 5, 6, 7, 56, 58, 69, 70, 72, 73, 74, 133, 136], "callbacki": 70, "can": [0, 1, 23, 27, 29, 35, 37, 38, 39, 42, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 84, 86, 93, 94, 95, 96, 98, 99, 117, 120, 124, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136], "candid": 120, "cannot": [1, 53, 61, 62, 70, 86, 126, 133, 134], "capac": [94, 117, 133, 135, 136], "capacity_": 117, "captur": 86, "carefulli": 120, "carri": 94, "case": [0, 23, 27, 42, 46, 47, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 120, 126, 131, 133, 134, 135, 136], "cast": 131, "castro": 100, "catch2": 86, "catchorg": 86, "categori": 120, "caus": [95, 134], "cbc": [68, 69], "cbegin": [46, 47], "ccgsepar": [23, 24], "ccgstabil": [23, 24], "cd": [86, 95, 99], "cend": [46, 47], "certain": 70, "certif": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 124, 135], "cg": 94, "challeng": 94, "chang": [1, 42, 76, 95, 124, 130], "char": [96, 98], "character": 76, "check": [1, 35, 48, 72, 118, 119, 124, 130, 131, 133, 136], "child": [0, 70, 120, 133], "children": [0, 94], "choic": 99, "choos": 120, "clang": 96, "class": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 77, 105, 110, 120, 123, 124, 125, 126, 127, 128, 129, 130, 133, 134, 135, 136], "classic": [94, 95, 98, 136], "clean": 94, "clear": [40, 41, 94, 120], "clone": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 32, 33, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 71, 72, 73, 86, 133], "close": 76, "closer": 76, "closest": [46, 47, 76, 120], "clp": 67, "cmake": [84, 86, 95, 96, 97, 98], "cmake_cxx_standard": [96, 98], "cmake_install_prefix": 95, "cmake_minimum_requir": [96, 98], "cmakelist": [96, 98], "code": [35, 39, 84, 85, 94, 120, 124, 125, 126, 128, 130, 131, 133, 134, 135], "codecov": 86, "coeff": [42, 126], "coeffici": [36, 37, 41, 42, 45, 126], "coefficient_for_x_in_constraint": 124, "coefficient_for_y_in_constraint": 124, "coin": [68, 69, 94, 101, 102, 105], "color": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 73], "column": [42, 45, 49, 50, 51, 69, 100, 105, 117, 118, 119, 120, 123, 130, 131, 141], "column_gener": [94, 117, 120], "columnandconstraintgener": [25, 69], "columngener": 30, "com": [86, 98], "combin": [37, 42, 94, 100, 120], "combinatori": 100, "come": 99, "command": [84, 86, 95], "common": [69, 70, 80, 94, 120, 131], "compact": [124, 130], "compar": [37, 76, 120], "compat": 94, "compil": [86, 95], "complet": 94, "complete_recours": 24, "complex": [94, 134], "compliant": [70, 84], "complic": 136, "compon": [36, 127], "compos": [37, 126], "composit": 126, "comput": [37, 46, 47, 76, 83, 93, 95, 97, 98, 100, 120], "computation": 120, "compute_smoothed_dual_solut": [32, 33], "concept": [127, 134, 135], "condit": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "conditional_t": 44, "cone": 93, "configur": 99, "conflict": [46, 47], "conic": 93, "consid": [43, 72, 76, 93, 120, 126, 134, 135, 136], "consist": [1, 41, 70], "const": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 71, 72, 73, 94, 96, 98, 117, 120, 124, 126, 128, 130, 131, 133, 134, 135, 136], "const_iter": [41, 46, 47], "constant": [36, 38, 40, 41, 42, 43, 44, 45, 48, 51, 69, 77, 136], "constexpr": 76, "constiteratorforward": 42, "constrain": 94, "constraint": [35, 36, 38, 42, 43, 45, 48, 69, 70, 72, 76, 93, 94, 100, 105, 110, 117, 120, 123, 125, 126, 127, 130, 133, 134, 135, 141], "constraint1": 130, "constraint1_coefficient_for_x": 130, "constraint2": 130, "constraint2_coefficient_for_x": 130, "constraint_1": 46, "constraint_1_4": 38, "construct": [35, 38, 42, 50, 118, 119], "constructor": [0, 35, 36, 37, 38, 39, 43, 45, 48, 49, 50, 117, 124, 128, 129, 133], "consumpt": 117, "contact": 95, "contain": [0, 37, 48, 49, 93, 94, 99, 117], "content": 84, "continu": [0, 41, 42, 43, 49, 50, 78, 124, 126, 130, 131, 133, 134, 135, 136], "continuous_relax": 134, "continuousrelax": [0, 1, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 120, 134], "control": [39, 70, 94, 125], "conveni": [120, 130], "converg": 70, "convers": 93, "convert": [0, 93], "convex": 93, "copi": [0, 23, 27, 36, 37, 41, 42, 43, 45, 48, 49, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 84, 95, 133], "copybutton": 84, "correctli": 95, "correspond": [1, 36, 37, 42, 45, 117, 124, 130, 135, 136], "cost": [42, 76, 94, 117, 130], "could": [94, 124, 130, 131, 135], "cours": 98, "cout": [1, 35, 38, 41, 42, 46, 47, 50, 70, 117, 126, 128, 130, 133, 135], "cover_cut": 136, "coverag": 85, "cplex": [68, 69, 94], "cpp": [96, 98], "creat": [0, 1, 23, 27, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 84, 86, 94, 95, 96, 99, 105, 110, 120, 123, 125, 126, 127, 129, 134, 135, 136], "create_osi_solver_interfac": [63, 64, 65, 66, 67], "creation": [42, 134], "crucial": [117, 120], "ctr": [23, 24, 27, 35, 36, 39, 42, 43, 46, 48, 51, 59, 60, 69, 117, 120, 124, 128], "ctrtype": [38, 42, 45, 48], "ctrversion": [38, 48], "curiou": [118, 119], "current": [0, 1, 23, 27, 37, 41, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 120, 124, 126, 130, 134, 136], "custom": [0, 70, 94, 95], "customiz": 94, "cut": [1, 9, 69, 70, 72, 94, 105, 110, 115, 123, 134], "cutsepar": [70, 72, 73], "d": [93, 95, 100, 128], "daniel": 100, "dantzig": [27, 37, 100, 105, 115, 123], "dantzigwolf": [27, 30, 31, 34, 69, 117, 120], "dantzigwolfedecomposit": [26, 28, 29, 31, 69, 117, 120], "data": [76, 100], "dbuild_exampl": 99, "dbuild_test": 86, "deal": 135, "death": [39, 125], "decid": 120, "decis": [37, 42, 94, 117, 120, 128, 129, 130], "declar": [76, 120], "decompos": 120, "decomposit": [27, 35, 37, 72, 93, 100, 120, 136], "dedic": [67, 95, 98, 133, 136], "default": [0, 1, 2, 5, 6, 7, 16, 17, 18, 19, 20, 21, 23, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 52, 55, 56, 57, 58, 67, 70, 71, 72, 76, 84, 86, 94, 95, 98, 99, 117, 120, 130, 133], "default_valu": 35, "defaultnodeinfo": [0, 3, 29], "defin": [37, 42, 70, 76, 94, 98, 117, 120, 128, 133, 136], "definit": [70, 72, 98], "degre": 0, "deigen_dir": 99, "delet": [0, 23, 29, 42, 52, 55, 56, 57, 58, 67], "delta_j": 120, "denot": [72, 93, 117, 120], "depend": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 85, 95, 120, 135], "depth": [0, 94, 120], "depthfirst": [0, 1, 9, 15], "deriv": 136, "describ": 135, "descript": 52, "design": [35, 94, 120], "desir": [46, 47, 48, 49, 98, 117, 128], "destin": [42, 95], "destroi": 39, "detail": [84, 117, 120, 124, 126, 128, 130, 135], "detect": [46, 47], "develop": [94, 99], "dglpk_dir": 99, "dgurobi_dir": [95, 99], "dhighs_dir": 99, "diagon": 93, "differ": [0, 23, 27, 39, 42, 45, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 120, 125, 127, 130, 134, 136], "digit": [46, 47, 76], "dim": [38, 41, 42, 50, 94, 117, 124, 126, 130, 133, 134, 135, 136], "dimens": [38, 42, 50, 130], "dimension": 135, "dir": [95, 99], "direct": [98, 130], "directli": [38, 42, 50, 67, 130, 134], "directori": [53, 61, 62, 84, 86, 95, 99], "disabl": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "discuss": [120, 127, 134], "dispens": 127, "divid": [46, 47], "dmosek_dir": 99, "do": [1, 35, 38, 42, 67, 84, 94, 95, 96, 99, 117, 120, 126, 128, 130, 134, 135], "doc": 85, "document": [27, 84], "doe": [120, 134], "doi": 100, "dolan": 100, "domain": 136, "done": [0, 1, 42, 86, 93, 94, 98, 99, 117, 120, 126, 128, 130, 133, 135, 136], "dotsc": 128, "doubl": [0, 1, 3, 6, 23, 24, 26, 27, 28, 29, 30, 32, 33, 36, 37, 40, 41, 42, 45, 46, 47, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 76, 94, 133, 135], "download": [86, 94, 97, 98], "doxygen": [53, 61, 62, 84], "doxygenclass": [53, 61, 62], "drawback": 120, "drobinhood_dir": 99, "dual": [32, 33, 37, 42, 45, 51, 69, 94, 124, 135, 136], "dual_spac": 136, "dualiti": 136, "dualpricesmoothingstabil": [27, 30, 32, 33], "dure": [39, 70, 72, 81, 117, 118, 125, 134, 135], "duse_eigen": 99, "duse_glpk": 99, "duse_gurobi": [95, 99], "duse_high": 99, "duse_mosek": 99, "duse_robinhood": 99, "dwith_code_coverag": 86, "dx": 100, "e": [0, 1, 23, 27, 35, 37, 41, 42, 45, 46, 47, 48, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 81, 93, 94, 95, 97, 98, 100, 117, 120, 124, 128, 131, 133, 134, 136], "e_": 117, "each": [0, 36, 37, 38, 39, 41, 45, 50, 70, 94, 117, 120, 125, 126, 130, 133, 134, 135, 136], "easi": [94, 133], "easier": 131, "easiest": [94, 97, 98, 128], "easili": [94, 124], "econometrica": 100, "effect": [1, 86, 120], "effici": 117, "eigen": 92, "eigen_dir": 99, "either": [129, 136], "element": [38, 50], "elizabeth": 100, "els": 135, "emb": 117, "empir": 120, "empti": [36, 37, 41, 45, 48], "emptycolumn": 36, "emptyrow": 45, "enabl": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "encod": 117, "encount": [45, 95], "end": [41, 42, 46, 47, 72, 93, 128, 133, 136], "endl": [1, 35, 38, 41, 42, 46, 47, 50, 70, 117, 126, 128, 130, 133, 135], "engin": 94, "enhanc": 94, "enlight": 93, "enrich": 94, "entri": [37, 41, 45, 46, 47, 93], "enum": [78, 81], "enumer": [72, 78, 81, 117], "env": [35, 38, 42, 50, 51, 55, 56, 59, 60, 69, 94, 96, 98, 117, 124, 125, 126, 128, 129, 130, 131, 133, 134, 135, 136], "environ": [35, 38, 39, 42, 50, 84, 95, 99, 105, 117, 123, 127, 128, 130], "equal": [0, 36, 37, 41, 76, 117, 120], "equal_to": 44, "equalto": [41, 42, 44, 124], "equival": [37, 41, 48, 99, 124, 130], "error": [95, 131], "essenti": [39, 72], "estim": [11, 94, 120], "evalu": [120, 126], "even": [42, 94, 96, 130], "event": [1, 70, 80, 82, 133], "eventu": 39, "everi": [0, 37, 39, 41, 42, 46, 47, 70, 86, 94, 117, 125, 127, 133], "evid": 94, "exactli": 94, "exampl": [23, 27, 38, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 96, 98, 120, 127, 128, 129, 130, 134], "example_knapsack": 99, "except": [37, 38, 45, 46, 47, 50, 134], "execept": 93, "execut": [0, 1, 23, 26, 27, 28, 30, 39, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 81, 94, 96, 98, 125, 135, 136], "exist": [1, 42, 70, 72, 86, 94, 127], "expect": 93, "explain": [84, 86, 120], "explicit": [10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 27, 29, 32, 33, 42, 43, 59, 60, 72, 73], "explicitli": [46, 47, 98, 130], "exploit": 0, "explor": [0, 1, 70, 94], "exponenti": 117, "exportbranchandboundtreetocsv": 1, "expos": 131, "expr": [42, 45, 48, 51, 69, 124, 126], "express": [37, 41, 42, 48, 93, 105, 123, 124, 127, 129, 136], "extend": 135, "extens": 84, "extern": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 69, 76, 95, 96, 98, 117, 128], "extra": 130, "f": [93, 100], "facil": 90, "fact": 136, "factor": [36, 41, 45, 46, 47], "factori": [0, 23, 27, 30, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 117, 131, 133, 134, 135, 136], "fail": [42, 94], "fall": 120, "fals": [0, 23, 27, 35, 37, 38, 43, 46, 47, 48, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "familiar": [0, 117, 135], "faq": 94, "far": 70, "farka": [42, 94, 124, 135], "farkaspr": [31, 69], "fast": 94, "fault": 39, "feasibl": [0, 23, 27, 42, 45, 46, 47, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 76, 117, 124, 130, 135, 136], "featur": [1, 70, 117], "februari": 100, "fetchcont": 98, "fetchcontent_": 98, "fetchcontent_declar": 98, "fetchcontent_makeavail": 98, "file": [42, 86, 98, 99, 117], "final": [117, 120, 133, 136], "find": [42, 53, 61, 62, 93, 130, 135], "find_packag": 96, "fine": 94, "first": [0, 1, 23, 27, 37, 41, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 93, 94, 95, 117, 118, 119, 120, 130, 133, 135, 136], "firstinfeasiblefound": [9, 22], "fix": [36, 37, 40, 41, 42, 44, 45, 120, 126], "flexibl": 94, "fly": 72, "folder": [94, 95, 97, 98, 99], "follow": [1, 35, 37, 39, 41, 42, 67, 72, 76, 84, 86, 94, 95, 96, 99, 117, 120, 125, 126, 127, 128, 130, 131, 133, 134, 135, 136], "foral": [117, 136], "forbidden": 125, "forc": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 86], "form": [0, 45, 117, 128, 136], "formul": [30, 135], "formula": 120, "forrest": [11, 100], "found": [0, 23, 27, 37, 38, 42, 46, 47, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 81, 86, 94, 95, 98, 99, 120, 133, 135, 136], "frac": 76, "fraction": [117, 120], "fractional_point": 133, "framework": [86, 94], "fran": 100, "frangioni": 100, "free": 35, "freedom": 0, "friend": [38, 39, 50, 60, 70], "friendli": 94, "from": [0, 1, 37, 41, 42, 43, 46, 47, 53, 61, 62, 76, 86, 94, 120, 124, 127, 130, 136], "fulfil": 67, "fulli": 67, "function": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 71, 72, 73, 76, 98, 99, 105, 117, 123, 127, 128, 130, 134, 135, 136], "fx": 93, "g": [1, 35, 42, 81, 86, 94, 95, 97, 98, 117, 120, 131, 134, 136], "gap": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 117, 135], "gap_inst": 117, "gcc": 96, "gcd": [40, 41, 45], "gcov": 86, "ge": [93, 120, 133, 136], "gener": [69, 70, 72, 83, 84, 86, 99, 100, 105, 117, 118, 119, 120, 123, 126, 133, 136, 141], "georg": 100, "get": [35, 37, 38, 41, 44, 46, 47, 50, 72, 84, 97, 98, 105, 123, 127, 134], "get_absolute_gap": [24, 30, 135], "get_best_bound": [24, 30, 42, 129, 135], "get_best_obj": [24, 30, 42, 129, 133, 135], "get_ctr_by_index": 42, "get_ctr_dual": [24, 42, 124, 135], "get_ctr_farka": [24, 42, 124, 135], "get_ctr_index": [42, 124], "get_ctr_row": [42, 45, 124], "get_ctr_typ": [42, 124], "get_mat_coeff": 42, "get_n_solut": [24, 42], "get_obj_expr": [42, 129], "get_obj_sens": [42, 129], "get_param_best_bound_stop": [24, 30, 59, 60], "get_param_best_obj_stop": [24, 30, 59, 60], "get_param_infeasible_or_unbounded_info": [24, 30, 59, 60], "get_param_iteration_limit": [24, 30, 59, 60], "get_param_log": [24, 30, 59, 60], "get_param_presolv": [0, 23, 24, 27, 30, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67], "get_param_thread_limit": [24, 30, 59, 60], "get_param_time_limit": [24, 30, 59, 60], "get_reason": [24, 30, 42, 135], "get_relative_gap": [24, 30, 135], "get_remaining_tim": [24, 30, 59, 60], "get_rhs_expr": 42, "get_solution_index": [24, 42], "get_statu": [24, 30, 42, 46, 47, 117, 135], "get_sub_problem_spec": 27, "get_tol_feas": [24, 30, 59, 60], "get_tol_integ": [24, 30, 59, 60], "get_tol_mip_absolute_gap": [24, 30, 59, 60], "get_tol_mip_relative_gap": [24, 30, 59, 60], "get_tol_optim": [24, 30, 59, 60], "get_var_by_index": 42, "get_var_column": [42, 130], "get_var_index": [42, 130], "get_var_lb": [42, 130], "get_var_prim": [24, 42, 117, 130, 133, 135], "get_var_rai": [24, 42, 130, 135], "get_var_reduced_cost": [24, 42, 130], "get_var_typ": [42, 130], "get_var_ub": [42, 130], "git": [86, 98], "git_repositori": 98, "git_tag": 98, "github": [86, 95, 98], "give": [35, 70, 94], "given": [0, 1, 23, 27, 35, 36, 37, 38, 42, 45, 46, 47, 48, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 94, 117, 120, 124, 128, 129, 130, 133, 134, 135, 136], "global": [35, 76, 94, 96, 97, 98, 117], "glpk": [0, 1, 23, 27, 52, 56, 57, 58, 63, 64, 65, 66, 67, 68, 69, 94, 98, 128, 134, 135], "glpk_dir": 99, "glpk_home": 99, "go": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 86, 126], "grb_doubleparam": [56, 60], "grb_intparam": [56, 60], "grbconstr": 60, "grbenv": 60, "grbmodel": 60, "grbqconstr": 60, "grbvar": [60, 131], "greater": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 133, 136], "greaterthan": 124, "guid": [94, 97, 98], "guidelin": [94, 96, 97], "gurobi": [42, 68, 69, 70, 94, 98, 117, 120, 128, 131, 133, 134, 136], "gurobi_dir": [95, 99], "gurobi_hom": [95, 99], "gurobi_optim": 131, "gurobicallbacki": 60, "h": [11, 86, 96, 98, 99, 100, 117, 127], "ha": [0, 35, 36, 42, 46, 47, 48, 49, 67, 70, 81, 86, 93, 94, 95, 117, 120, 124, 129, 130, 133, 135, 136], "hand": [36, 38, 42, 45, 94, 124], "handl": 94, "handsid": 72, "happen": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 120], "hard": [94, 120], "has_default": 35, "has_objective_valu": [46, 47], "has_optim": 42, "has_optimizer_factori": 42, "hash": [41, 44], "hat": [133, 136], "have": [0, 23, 27, 36, 39, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 84, 93, 94, 95, 96, 99, 117, 120, 125, 128, 134, 136], "header": [99, 117], "hei": [118, 119], "help": 94, "henc": 93, "her": 136, "here": [0, 1, 42, 43, 94, 95, 96, 97, 98, 100, 117, 120, 124, 126, 128, 129, 130, 134, 136], "hesit": 95, "heurist": [1, 9, 31, 69, 70, 71, 94, 100, 105, 115, 123], "hi": [42, 136], "high": [68, 69, 76, 94, 135], "higher": 135, "higher_dimensional_model": 135, "highs_dir": 99, "hirst": [11, 100], "hlefebvr": 98, "hold": [72, 93], "home": 99, "how": [72, 84, 86, 94, 117, 118, 119, 120, 127, 131, 133, 134, 135, 136], "howev": [37, 98, 117, 120, 124, 130, 133, 136], "hpp": 99, "html": 84, "http": [86, 98, 100], "i": [0, 1, 23, 24, 27, 30, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 72, 76, 81, 83, 84, 86, 92, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143], "id": [1, 35, 38, 42, 43, 50, 117], "idea": [72, 94, 98, 120], "ident": [42, 117], "identifi": [0, 72], "idol": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 53, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 76, 78, 81, 86, 93, 95, 96, 97, 98, 99, 100, 117, 120, 125, 126, 127, 128, 130, 133, 134, 135, 136], "idol_sum": [94, 117, 133, 135, 136], "iff": 93, "ignor": 76, "ij": [42, 93, 117, 130], "ijoc": 100, "impl": [35, 36, 38, 39, 40, 44, 45, 50, 70, 72, 73], "implement": [1, 70, 72, 83, 94, 99, 100, 118, 119, 133, 134, 136], "impli": 36, "import": [39, 133], "importantli": 120, "impos": 120, "impract": 136, "improv": [1, 70], "includ": [94, 96, 98, 99, 117, 127, 133], "incorpor": 0, "incumb": [1, 81, 133], "incumbentsolut": [70, 81, 133], "inde": 94, "independ": [0, 1, 130], "index": [42, 117, 120, 124, 130], "indic": [42, 81, 94, 99, 117, 120], "inequ": 133, "inf": [41, 42, 46, 47, 49, 50, 76, 117, 124, 126, 130, 136], "infeas": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 117, 120, 124, 134, 135], "infeasibilitystrategyfactori": [26, 27, 28, 30], "infin": [46, 47], "infinit": 72, "influenc": [81, 94], "info": [86, 117], "inform": [0, 1, 35, 42, 94, 100, 117, 124, 130, 131, 135], "infti": [76, 130], "inherit": [0, 70, 94], "initi": [1, 32, 33], "inlin": [0, 1, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 72, 73], "input": [94, 128], "insid": [37, 70, 81, 84, 86, 99, 117], "instal": [94, 96, 99, 134], "instanc": [1, 35, 36, 37, 38, 76, 84, 86, 93, 94, 98, 99, 117, 120, 124, 126, 127, 128, 129, 130, 131, 134, 135], "instanti": [39, 48, 49, 94, 130], "instead": [1, 70, 72, 93, 120, 127, 131], "instruct": [35, 85], "int": [0, 3, 5, 20, 21, 23, 24, 26, 27, 29, 30, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 76, 94, 96, 98, 117, 120, 135], "integ": [0, 11, 46, 47, 76, 78, 81, 94, 100, 115, 120, 128, 130, 136], "integermast": [0, 1, 31, 69], "integr": [84, 85, 94], "intend": [70, 99], "interact": 84, "interest": [72, 136], "interfac": [1, 41, 67, 93, 95, 131, 136], "intermedi": [38, 134], "intern": 99, "introduc": [11, 127], "invalid": 136, "invalidsolut": [81, 133], "invok": 70, "involv": [42, 126], "iostream": [96, 98], "is_ctr_annot": 35, "is_in": [38, 50], "is_inf": 76, "is_integ": 76, "is_neg_inf": 76, "is_numer": 37, "is_pos_inf": 76, "is_same_v": 44, "is_termin": [24, 30, 59, 60], "is_var_annot": 35, "is_viol": [45, 48], "is_zero": [37, 40], "item": [133, 136], "iter": [0, 23, 27, 41, 42, 46, 47, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 120, 126, 133, 136], "iteratoroutputt": 41, "iteratort": [16, 17, 18, 19, 20, 21], "iterlimit": [46, 47], "its": [0, 23, 27, 37, 38, 39, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 84, 86, 94, 99, 117, 130, 131, 135], "itself": [0, 23, 27, 41, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 136], "ix_jx_k": 93, "j": [11, 37, 42, 93, 94, 100, 117, 120, 128, 130, 135], "jan": 100, "januari": 100, "jk": 93, "jordi": 100, "jorg": 100, "josett": 100, "journal": 100, "judici": 72, "juli": 100, "just": [117, 120], "k": [93, 120, 130], "kei": [41, 46, 47, 70, 94], "kept": 35, "key1": [40, 44], "key2": [40, 44], "knapsack": [83, 90, 94, 99, 117, 134, 135], "knapsackcov": [1, 4, 9, 133], "knowledg": 136, "known": [42, 120, 136], "koch": 100, "l": [93, 120], "l_p": [46, 47], "lambda": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 136], "lambda_": 117, "lambda_0": 136, "lambda_1": 136, "lambda_2": 136, "languag": 84, "larg": [0, 11, 70, 72, 100], "larger": [76, 94], "last": 84, "later": [70, 135], "latest": [94, 98], "laurenc": 100, "lazi": [1, 42, 70, 72, 94, 105, 110, 123, 133, 134], "lazyconstraintcallback": 133, "lazycutcallback": [1, 69, 71, 74, 136], "lb": [42, 49, 76], "lceil": 120, "lcov": 86, "le": [42, 72, 93, 117, 120, 128, 136], "lead": [39, 46, 47, 136], "learn": 35, "least": 94, "leastinfeas": [9, 22], "left": [1, 42, 45, 70, 72, 117, 120], "leftrightarrow": 72, "leq": 133, "less": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 133, 136], "lessorequ": [38, 42, 48], "lessthan": 124, "let": [94, 95, 97, 98, 117, 120, 127, 134, 135], "letter": 100, "level": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 99, 120], "levl": 117, "lfloor": 120, "li": 1, "lib": [95, 97, 99], "librari": [67, 94, 95, 96, 99, 134, 136], "life": 125, "like": [0, 70, 93, 94, 117, 120], "limit": [0, 23, 27, 46, 47, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 120, 134, 135], "lin": 42, "lin_expr": 41, "linderoth": 100, "linear": [36, 37, 40, 41, 42, 45, 94, 99, 100, 120, 124, 126, 129, 130, 136], "linearscor": 120, "linexpr": [36, 40, 42, 45, 51, 69, 126], "link": [67, 95, 98, 134], "linterm": 41, "linux64x86": 99, "list": [77, 95, 98, 117], "literatur": 120, "littl": [70, 133], "live": 39, "ll": 42, "load": 117, "local": [76, 84, 86, 94, 95, 96, 97, 99], "localbranch": [8, 9, 70, 71], "locat": [90, 117], "log": [0, 27, 30, 117, 134], "log_after_termin": 1, "log_mast": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "loglevel": 73, "long": [41, 94, 100], "look": [86, 94, 95, 98, 99, 120, 133, 136], "lot": [100, 120], "lower": [42, 49, 50, 130], "lower_level_constraint": 24, "lower_level_vari": 24, "lp": [42, 94, 105, 110, 123, 128, 136], "lvert": 93, "m": [38, 42, 50, 100, 117, 128], "m_capac": 133, "m_profit": 133, "m_weight": 133, "m_x": 133, "ma": 100, "machin": [84, 86], "made": [36, 45, 48, 49, 131], "mai": [38, 39, 42, 72, 86, 95, 100, 117, 120, 124, 125, 130, 131, 134, 135], "main": [1, 70, 96, 98, 136], "mainli": 130, "make": [0, 1, 84, 86, 93, 94, 95, 99, 118, 119, 120, 124, 136], "make_vector": [38, 42, 50, 130], "make_with_default_valu": 35, "makefil": 96, "manag": [11, 39, 86, 95, 98, 100, 125, 136], "mandatori": 117, "mani": [39, 94, 134], "manner": 76, "manual": 1, "map": [46, 47], "martin": 100, "master": [72, 94, 100, 105, 115, 117, 123, 136], "master_problem": 24, "masterid": 117, "mater": 94, "materi": [72, 117], "mathbb": [120, 128, 136], "mathcal": 93, "mathemat": [37, 42, 94, 100, 126, 128], "matric": [93, 99, 128], "matrix": [42, 93], "matter": 136, "max": 120, "max_": [72, 133, 136], "maxim": [42, 129, 133, 134, 135, 136], "maximum": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 120], "mean": [124, 136], "memori": 35, "merg": [46, 47], "merge_without_conflict": [46, 47], "method": [0, 1, 35, 38, 42, 46, 47, 50, 70, 100, 117, 120, 124, 126, 128, 129, 130, 131, 133, 134, 135], "mib": [54, 69, 101, 102, 105], "michael": 100, "milp": 94, "min": 120, "min_": [117, 136], "min_x": [72, 117, 128], "minim": [42, 96, 98, 120, 129], "minlp": 136, "mip": [42, 69, 76, 136], "mipabsolutegap": 76, "miprelativegap": 76, "miqcqp": 94, "miqp": 94, "mistak": 131, "mix": [11, 94, 100, 136], "mkdir": 95, "mn": 117, "mnsc": 100, "model": [0, 1, 23, 24, 27, 30, 35, 36, 37, 38, 39, 41, 43, 45, 46, 47, 48, 49, 50, 51, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 69, 70, 72, 73, 94, 96, 98, 101, 105, 115, 120, 123, 124, 126, 129, 130, 131, 133, 134, 136, 141], "model1": 42, "model2": [42, 126, 130], "modifi": [81, 94, 134], "moment": 67, "monitor": 70, "mor": 100, "more": [35, 43, 70, 93, 94, 95, 117, 120, 124, 130, 135], "moreov": 130, "mosek": [68, 69, 92, 94, 98], "mosek_dir": 99, "mosek_hom": 99, "most": [0, 1, 94, 117, 120, 134], "mostinfeas": [0, 1, 9, 22, 117, 134], "move": [36, 37, 41, 42, 43, 45, 48, 49, 117], "mp": 128, "mu": 120, "much": 126, "multi": 84, "multipl": [0, 37, 42, 45, 46, 47], "multipli": [36, 37, 41, 45, 46, 47, 126], "multiply_with_precis": [37, 40, 41, 76], "multiply_with_precision_by_power_of_10": [37, 40, 41, 45, 76], "must": [42, 70, 76, 93, 94, 98, 117, 120, 133], "my": [35, 95], "my_annot": 35, "my_cut": 0, "my_known_best_bound": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "my_known_best_obj": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "my_opt": 98, "my_project": [96, 98], "my_target": [96, 98], "my_usernam": 99, "my_valu": 98, "mycallback": [1, 70, 133], "n": [37, 38, 42, 50, 93, 117, 133, 136], "n_": 93, "n_agent": 117, "n_item": [94, 133, 135, 136], "n_iter": 24, "n_job": 117, "n_solut": 42, "n_solved_nod": 42, "name": [0, 24, 30, 35, 38, 42, 43, 50, 59, 60, 70, 117, 128, 134], "namespac": [76, 94, 96, 98, 127, 135], "natur": [38, 94], "nb": 128, "nbsp": 94, "neam": [34, 94], "necessari": [42, 70, 92, 95, 99, 128, 136], "need": [42, 48, 49, 70, 84, 86, 93, 94, 95, 96, 99, 117, 120, 124, 130, 131, 133, 134, 136], "neg": 93, "nest": [0, 38, 50, 94, 133, 134], "never": 136, "new": [0, 1, 23, 27, 35, 36, 37, 38, 39, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 86, 94, 96, 120, 125, 128, 130, 133, 134, 136], "next": 136, "ngen": 117, "node": [0, 1, 9, 11, 29, 69, 70, 81, 94, 105, 110, 117, 120, 123, 134, 136], "node_selection_rul": 134, "nodeinfo": 1, "nodeinfot": [0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 29], "nodeload": [1, 81], "nodescorefunct": [20, 120], "nodeselectionrul": [10, 11, 12, 13, 14], "nodeselectionrulefactori": [0, 10, 11, 12, 13, 14], "nodeselectionrulefactoryt": 0, "nodet": [0, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21], "nodevarinfo": [0, 29], "nodiscard": 1, "noexcept": [0, 23, 29, 36, 37, 40, 42, 43, 44, 45, 48, 52, 55, 56, 57, 58, 67], "non": [1, 37, 41, 46, 47, 70, 93], "nor": 86, "norm": [46, 47], "normal": [46, 47, 98], "note": [0, 27, 35, 38, 42, 46, 47, 67, 70, 84, 86, 95, 96, 99, 117, 120, 126, 128, 130, 131, 133, 134, 135], "noth": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "notin": 120, "notion": [117, 133, 136], "now": [42, 70, 86, 93, 94, 95, 99, 117, 120, 128, 134, 135, 136], "number": [0, 23, 27, 37, 38, 41, 42, 46, 47, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 117, 120, 128], "numer": [37, 42, 75, 99, 126], "numeric_limit": 120, "nutshel": 70, "obj": [36, 42, 117], "obj_quadrat": 36, "object": [0, 1, 23, 27, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 94, 105, 117, 123, 124, 125, 126, 127, 128, 130, 133, 134, 135, 136], "objective_coefficient_for_x": 130, "objective_valu": [46, 47], "objectivesens": 42, "objectt": 35, "objval": 117, "observ": [72, 117, 120], "obtain": [1, 46, 47, 117, 124, 128, 130], "occur": 81, "octob": 100, "off": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 86, 136], "offer": [70, 94], "offici": [95, 99], "offset": 126, "oi": 100, "old": [36, 37, 38, 43, 45, 50], "omit": [70, 72, 117], "onc": [86, 94], "one": [38, 39, 42, 48, 93, 94, 96, 117, 120, 124, 125, 129, 130], "ones": 120, "onli": [0, 1, 23, 27, 29, 39, 41, 42, 46, 47, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 86, 96, 99, 117, 120, 124, 125, 130, 133, 134, 135, 136], "only_if_has_strategi": 0, "open": 67, "oper": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 26, 27, 28, 29, 32, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 71, 72, 73, 100, 133], "opt": 95, "optim": [0, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 25, 26, 27, 28, 29, 31, 35, 36, 38, 39, 42, 43, 45, 46, 47, 50, 52, 54, 55, 56, 57, 58, 63, 64, 65, 66, 67, 68, 70, 72, 76, 95, 100, 117, 120, 123, 124, 125, 127, 128, 130, 133, 135], "optimist": [101, 102, 105], "optimizer_factori": 42, "optimizerfactori": [0, 5, 6, 23, 24, 27, 29, 30, 42, 72, 73], "optimizerfactorywithdefaultparamet": [0, 23, 27, 52, 55, 56, 57, 58, 67], "optimizerwithlazyupd": [59, 60], "optimum": 42, "option": [85, 95, 98], "order": [0, 93, 99], "org": [84, 100], "origin": [1, 70, 72, 94, 98, 120, 135, 136], "original_model": [1, 70, 135], "orl": 100, "osi": [63, 64, 65, 66, 68, 69, 94], "osicbc": [67, 68], "osiclp": [67, 68], "osicplex": [67, 68], "osicpxsolverinterfac": 67, "osisolverinterfac": [63, 64, 65, 66, 67], "osisymphoni": [67, 68], "other": [42, 84, 94, 98, 117, 120, 126, 133], "otherwis": [35, 37, 38, 43, 46, 47, 48, 50, 93], "our": [35, 94, 95, 98, 117, 120, 128, 133, 134, 136], "out": [1, 70, 94, 95, 105, 115, 123, 133], "output": [0, 23, 27, 41, 42, 52, 53, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 84, 86, 117, 126], "over": [42, 126], "overal": [94, 134], "overload": [37, 48], "overrid": [0, 1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 41, 42, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 72, 73, 133], "own": [0, 94, 105, 110, 118, 123, 134, 136, 137, 141], "p": [11, 46, 47, 94, 100, 128, 133, 136], "pack": [35, 38, 50], "page": [0, 27, 84, 86, 95, 96, 97, 98, 99, 100, 127, 133, 134, 135, 136], "pair": [0, 36, 37, 44, 45], "parallel": 94, "param": [36, 37, 40, 45, 51, 69, 126], "paramet": [0, 1, 23, 27, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 76, 94, 120, 126, 128, 130, 133], "parametr": 37, "parametrized_express": 43, "parent": [24, 30, 59, 60, 94, 133], "parser": 117, "part": [37, 38, 42, 45, 50, 70, 72, 120, 126, 136], "particular": [35, 42, 84, 99, 120, 131, 133], "pass": [38, 50, 67, 70, 99, 117, 128, 133, 134, 136], "path": [95, 99, 128], "pattern": [124, 134], "peopl": 94, "perform": [1, 42, 70, 83, 99, 100, 117, 120], "pessoa": 100, "phase": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94], "philip": 100, "piec": [42, 94, 135], "pip3": 84, "place": [35, 38, 50, 118, 119], "plane": [9, 69], "platform": 99, "pleas": [0, 1, 84, 95, 98, 99, 120, 135], "plug": 94, "plugin": 84, "point": [41, 45, 70, 76, 99, 136], "pointer": 42, "polymorph": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "polytop": 100, "pool": [42, 94], "poss": 100, "possibl": [1, 39, 46, 47, 70, 76, 94, 95, 96, 98, 99, 117, 134, 136], "possibli": [50, 117], "potenti": [70, 72], "power": 94, "practic": [11, 100, 120], "pre": 1, "precis": [43, 126], "prefix": 127, "prepend": [43, 126, 136], "presenc": 70, "previou": 130, "price": [35, 83, 94, 105, 119, 120, 123], "primal": [26, 28, 30, 36, 37, 40, 41, 42, 44, 45, 48, 51, 69, 70, 76, 100, 130, 133, 135], "primal_rai": 135, "primal_solut": [26, 28, 30, 70, 133], "primal_valu": 135, "print": [1, 70, 93, 126, 133], "privaci": 100, "problem": [0, 1, 11, 42, 46, 47, 72, 83, 90, 94, 99, 100, 101, 102, 105, 117, 118, 119, 120, 127, 128, 130, 133, 134, 135, 136, 141, 142], "procedur": [70, 94, 136], "process": [70, 72, 94, 95, 97, 117, 134], "produc": [117, 120], "product": [41, 120], "productscor": 120, "profil": [83, 100], "profit": [94, 135, 136], "program": [11, 39, 94, 100, 125, 128, 136], "progress": [70, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 121, 122, 123, 132, 137, 138, 139, 140, 142, 143], "project": [53, 61, 62, 95, 97, 98], "properli": [67, 94], "protect": [1, 70, 133], "prove": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 117, 124, 130, 135], "proven": 1, "provid": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 94, 98, 128, 134, 135, 136], "prunedsolut": 81, "pseudo": 94, "pseudocost": [9, 22], "public": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 71, 72, 73, 96, 98, 100, 133], "pure": [37, 94, 96], "push": 86, "python": 84, "python3": 84, "q": [93, 128], "q_": 93, "qcqp": 92, "qp": [92, 94, 99], "qquad": 136, "quad": [72, 117, 128], "quadexpr": [36, 40, 45, 51, 69, 126], "quadrat": [36, 37, 40, 42, 45, 93, 94, 126], "quadterm": 44, "qualiti": 70, "queri": [37, 39, 42, 46, 47], "quick": [94, 133], "r": [100, 120, 136], "rai": [42, 124, 130, 135], "random": 94, "rang": [76, 94, 117, 133, 135, 136], "rather": 76, "rceil": 120, "rea": 117, "reach": [46, 47, 94, 135], "read": [98, 99, 117], "read_from_fil": [55, 56, 59, 60, 128], "read_inst": 117, "reader": [117, 135], "readi": [95, 117, 136], "real": [37, 48, 49, 70, 133], "realli": 94, "reason": [26, 28, 30, 42, 46, 47, 70, 94, 117, 135], "recal": 120, "recogn": 76, "recommend": [76, 117, 133, 136], "recurs": [38, 50], "reduc": [42, 76, 120, 130], "refer": [0, 42, 84, 94, 96, 99, 117, 120, 126, 131, 133, 135, 136], "reformul": [37, 105, 115, 123, 136], "regard": [1, 117], "region": [105, 136, 137, 141], "registri": 1, "rel": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 135], "relat": [35, 93, 99, 117], "relative_gap": [42, 76], "relativegap": 76, "relax": [0, 1, 70, 72, 81, 117, 120, 133, 134, 136], "relev": 99, "relgap": 117, "reli": 128, "remain": 117, "remov": [37, 41, 42, 94, 120], "ren": [8, 9, 70, 71], "render": 84, "repeat": [0, 130], "replac": [36, 37, 42, 45, 93, 120], "report": 86, "repositori": [86, 99], "repres": [36, 37, 38, 41, 42, 43, 45, 48, 49, 50, 126, 128], "represent": 42, "requir": [46, 47, 67, 96, 120, 130, 136], "research": 100, "reserve_ctr": 42, "reserve_var": 42, "reset": [46, 47], "reset_objective_valu": [46, 47], "resolv": 72, "resort": 94, "resourc": 117, "resource_consumpt": 117, "respect": [46, 47, 126, 130, 135], "respons": 134, "rest": [94, 117], "restrict": [42, 134], "result": [37, 41, 131, 134, 135], "retriev": [42, 117, 135], "return": [0, 1, 23, 27, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 96, 98, 120, 131, 133, 135], "returnt": 0, "returnth": 39, "revisit": 100, "rfloor": 120, "rgap": 117, "rh": [42, 45], "right": [36, 38, 42, 45, 72, 95, 117, 118, 119, 120, 124], "ro": 94, "robin_hood": 99, "robinhood_dir": 99, "robinhood_hom": 99, "robust": [25, 94, 100, 142], "role": [70, 133], "root": [0, 99], "rotat": 93, "round": [37, 40, 41, 46, 47, 76], "routin": [70, 94, 117, 131], "row": [36, 42, 48, 51, 69, 124], "rst": [0, 42, 48], "rtd": 84, "rudimentari": [117, 133, 136], "rule": [0, 1, 9, 11, 69, 94, 100, 105, 110, 117, 120, 123, 134], "run": [1, 86, 95, 99, 117, 134], "runtim": 131, "rvert_2": 93, "s101070100263": 100, "s10287": 100, "sadykov": 100, "sai": 93, "same": [49, 67, 99, 117, 125, 130, 134], "satisfact": 76, "satisfi": [72, 76, 136], "save": 76, "save_": 135, "save_du": [46, 135], "save_farka": 135, "save_prim": [42, 47, 117, 135], "save_rai": 135, "savelsbergh": 100, "saw": 120, "scalar": 41, "scale": 100, "scale_to_integ": [40, 42, 45], "scheme": [37, 94, 120, 135], "school": 136, "scienc": [11, 100], "scientif": 100, "scratch": [46, 47, 94], "search": [72, 94, 96, 99, 100], "second": [0, 23, 27, 37, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 93, 94, 117, 120, 124, 130, 134], "second_typ": 0, "section": [117, 120, 128, 133, 136], "see": [48, 49, 70, 72, 95, 98, 99, 120, 124, 126, 127, 128, 130, 133, 135, 136], "seem": 67, "seen": [37, 94, 134, 136], "segment": 39, "select": [0, 9, 11, 42, 69, 94, 100, 105, 110, 117, 120, 123, 134], "sens": [42, 120, 133], "separ": [70, 94, 105, 133, 136, 137, 141], "separation_model": 0, "septemb": 100, "set": [0, 1, 23, 27, 36, 37, 38, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 86, 93, 96, 98, 99, 117, 120, 124, 129, 130, 133, 134, 135, 136], "set_best_bound_stop": 30, "set_ctr_rh": 42, "set_ctr_row": [42, 124], "set_ctr_typ": [42, 124], "set_frequ": 29, "set_integer_column": 29, "set_iteration_limit": 29, "set_lazy_cut": 60, "set_lb": 49, "set_linear": [36, 45], "set_mat_coeff": 42, "set_max_depth": 29, "set_max_n_solution_in_pool": 60, "set_node_optim": 0, "set_numer": 37, "set_obj": 36, "set_obj_const": 42, "set_obj_expr": [42, 94, 117, 129, 133, 134, 135, 136], "set_obj_sens": [42, 129], "set_objective_valu": [46, 47], "set_param": 60, "set_param_best_bound_stop": [24, 30, 59, 60], "set_param_best_obj_stop": [24, 30, 59, 60], "set_param_infeasible_or_unbounded_info": [24, 30, 59, 60], "set_param_iteration_limit": [24, 30, 59, 60], "set_param_log": [24, 30, 59, 60], "set_param_presolv": [24, 30, 59, 60], "set_param_thread": [24, 30, 59, 60], "set_param_time_limit": [24, 30, 59, 60], "set_quadrat": [36, 45], "set_reason": [46, 47], "set_rh": [45, 124], "set_rhs_expr": 42, "set_row": 124, "set_solution_index": 42, "set_statu": [46, 47], "set_time_limit": 29, "set_tol_feas": [24, 30, 59, 60], "set_tol_integ": [24, 30, 59, 60], "set_tol_mip_absolute_gap": [24, 30, 59, 60], "set_tol_mip_relative_gap": [24, 30, 59, 60], "set_tol_optim": [24, 30, 59, 60], "set_typ": [48, 49], "set_ub": 49, "set_var_column": [42, 130], "set_var_lb": [42, 130], "set_var_obj": 42, "set_var_typ": [42, 130], "set_var_ub": [42, 130], "sever": [42, 120, 125, 134, 135], "sfina": 0, "shall": [86, 117], "shape": 136, "shoe": 135, "short": 42, "should": [1, 39, 42, 46, 47, 70, 76, 86, 94, 95, 96, 98, 99, 117, 120, 125, 126, 133, 135, 136], "show": [72, 117, 120, 131, 133, 135, 136], "shown": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "side": [1, 36, 38, 42, 45, 124], "side_effect_registri": 1, "sideeffectregistri": 1, "sigma_i": 94, "sign": 124, "similar": [120, 136], "similarli": [70, 124, 130, 135, 136], "simpl": [0, 72, 134, 136], "simpleround": [8, 9, 70, 71], "simplest": 117, "simpli": [94, 95, 117, 120], "simplifi": [127, 134], "sinc": [42, 94, 99, 130, 133, 134], "singl": 135, "sitemap": 84, "situat": 131, "size": [37, 41, 46, 47, 94, 120, 128, 133], "small": 134, "smaller": [72, 76, 120], "smooth": 94, "so": [0, 42, 70, 93, 94, 99, 117, 120, 134, 135, 136], "socp": 99, "softwar": [94, 100], "solut": [1, 11, 26, 28, 30, 32, 33, 36, 37, 40, 41, 42, 44, 45, 48, 51, 69, 70, 72, 76, 81, 94, 100, 105, 117, 120, 123, 133, 134, 136], "solutionreason": [24, 26, 28, 30, 42, 46, 47], "solutionstatu": [24, 26, 28, 30, 42, 46, 47], "solv": [0, 1, 23, 27, 29, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 81, 92, 94, 99, 100, 101, 102, 105, 115, 117, 120, 123, 124, 129, 130, 133, 134, 136], "solver": [0, 1, 67, 69, 70, 95, 96, 98, 117, 128, 133, 134, 135, 136], "some": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 93, 98, 99, 117, 120, 130, 131, 133, 134, 135], "some_function_creating_my_model": 128, "sometim": [130, 135], "somth": 126, "soon": 70, "space": [117, 135, 136], "spars": 76, "sparsiti": [37, 41, 76], "specif": [1, 37, 42, 70, 95, 98, 117, 120, 131, 133, 136], "specifi": [94, 95, 98, 99, 117, 120, 124, 129, 130, 135, 136], "spend": 120, "sphinx": 84, "springer": 100, "sqrt": 93, "stabil": [31, 69, 94, 100, 105, 115, 123, 137, 141], "stabl": 67, "stage": [95, 100, 105, 141, 142], "standalon": 94, "standard": [1, 120, 127, 128], "start": [1, 72, 97, 98, 127, 134], "stat": 117, "static": [35, 36, 37, 38, 45, 50, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 76], "statu": [26, 28, 30, 42, 46, 47, 117, 135], "std": [0, 1, 23, 24, 27, 30, 35, 38, 41, 42, 43, 44, 46, 47, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 99, 117, 120, 126, 128, 130, 133, 135], "step": [70, 95, 117], "still": [96, 118, 119], "stop": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 120], "store": [0, 1, 35, 37, 38, 39, 41, 42, 45, 46, 47, 50, 76, 99, 117, 128, 134, 135], "straightforward": [130, 134, 136], "strategi": [0, 1, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 26, 28, 29, 32, 33, 70, 72, 73, 100, 133], "strengthen": 136, "strictli": [0, 133, 136], "string": [24, 30, 35, 38, 42, 43, 50, 55, 56, 58, 59, 60], "strong": [94, 105, 115, 123], "strongbranch": [9, 22, 120], "strongbranchingphas": 120, "strongbranchingphasetyp": 20, "strongli": 0, "structur": 120, "studi": 100, "sub": [0, 42, 94, 97, 98, 117, 120, 133, 134], "sub_problem_specif": 117, "subclass": [1, 2, 48, 49, 67, 70, 71], "subject": [42, 100, 117, 136], "submit": [1, 70, 94], "submit_bound": 1, "submit_heuristic_solut": [1, 70], "suboptim": 135, "subproblem": [27, 30, 117, 120], "subset": 100, "subseteq": 120, "substanti": 120, "substract": 37, "subtarct": 45, "subtract": [36, 37, 41, 45, 126], "sudo": [84, 86, 95], "sum": [133, 136], "sum_": [37, 93, 117, 133, 136], "superus": 95, "support": 94, "sure": [1, 94, 118, 119, 120], "switch": [94, 120], "symbol": [43, 126, 136], "symmetric_pair_equal_to": 44, "symmetric_pair_hash": 44, "symphoni": [67, 94], "system": 95, "t": [0, 23, 24, 27, 30, 39, 42, 43, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 72, 100, 117, 126, 128, 130, 133, 136], "t_a": [44, 76], "t_absolute_gap_toler": [0, 23, 27, 52, 55, 56, 57, 58, 60, 63, 64, 65, 66, 67], "t_annot": [38, 50], "t_apply_to_tree_nod": 3, "t_arg": [35, 38, 50], "t_argc": [96, 98], "t_argv": [96, 98], "t_b": [44, 76], "t_begin": [16, 17, 18, 19, 20, 21], "t_best_bound_stop": [0, 23, 24, 27, 30, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67], "t_best_obj_stop": [24, 30, 59, 60], "t_bound": 1, "t_branching_rul": 0, "t_callback": 0, "t_capac": 133, "t_cb": [56, 58], "t_coeff": 42, "t_coeffici": [37, 41, 44], "t_column": [42, 49, 50], "t_complete_recours": 24, "t_conditional_valu": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_constant": [37, 38, 40, 42], "t_continuous_relax": [59, 60], "t_ctr": [24, 42, 43, 59, 60], "t_ctr_decomposit": 27, "t_cut": [1, 70, 72, 73], "t_decomposit": 27, "t_depth": 0, "t_descript": 52, "t_dim": [38, 42, 50], "t_dual": [37, 45], "t_els": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_end": [16, 17, 18, 19, 20, 21], "t_env": [35, 38, 42, 50, 55, 56, 59, 60], "t_event": [1, 70, 133], "t_expon": [37, 40, 41, 45, 76], "t_expr": 40, "t_factor": [37, 40, 41, 44, 46, 47], "t_filenam": [55, 56, 59, 60], "t_formul": 30, "t_frequenc": 29, "t_i": 117, "t_id": 27, "t_if": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_index": 42, "t_info": 1, "t_initial_cost": 26, "t_initial_factor": [32, 33], "t_iteration_count_limit": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_iteration_limit": [24, 29, 30, 59, 60], "t_kei": [41, 46, 47], "t_lb": [42, 49, 50, 76], "t_lh": 45, "t_lin_expr": [36, 40, 45], "t_log_color": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 73], "t_log_factori": 0, "t_log_level": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 73], "t_logger": 27, "t_logger_factori": 30, "t_lower_level_constraint": [23, 24], "t_lower_level_vari": [23, 24], "t_master_du": [32, 33], "t_master_optim": 24, "t_master_optimizer_factori": 30, "t_max_cuts_factor": 3, "t_max_depth": [20, 29], "t_max_n_thread": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_max_n_vari": 20, "t_max_parallel_pr": 30, "t_max_pass_root_nod": 3, "t_max_updates_before_phase_i": 26, "t_minimum_ratio_of_integer_variables_to_fix": 6, "t_minimum_ratio_of_variables_to_fix": 6, "t_mip_tol_absolute_gap": [24, 30, 59], "t_model": [0, 23, 27, 30, 38, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 72, 73], "t_n_digit": [37, 40, 41, 42, 46, 47, 76], "t_n_significant_digit": [40, 45], "t_n_sub_problem": 27, "t_n_variabl": 20, "t_name": [35, 38, 42, 50], "t_neighbourhood_s": 5, "t_node_optim": 0, "t_node_select": 0, "t_node_selection_rul": 0, "t_num": 40, "t_obj": [36, 42], "t_object": [39, 42], "t_optim": [23, 29], "t_optimizer_factori": [5, 6, 27, 42, 72, 73], "t_p": [46, 47], "t_param": [37, 40, 43, 56, 58, 60], "t_param_1": 37, "t_param_2": 37, "t_parent": [10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 24, 26, 28, 30], "t_phase": 20, "t_primal": [36, 37, 40, 41, 42, 44, 45], "t_profit": 133, "t_ptr_to_callback": 60, "t_quad_expr": [36, 40, 45], "t_reason": [46, 47], "t_relative_gap_toler": [0, 23, 27, 52, 55, 56, 57, 58, 60, 63, 64, 65, 66, 67], "t_remove_infeasible_column": 30, "t_rh": [0, 36, 37, 40, 41, 42, 45, 46, 47], "t_row": [42, 48], "t_score_funct": 20, "t_seed": 21, "t_sens": 42, "t_separ": [23, 24], "t_separation_problem": [72, 73], "t_size": 42, "t_solut": [48, 70], "t_solver_interfac": [63, 64, 65, 66, 67], "t_src": [20, 23, 27, 36, 37, 40, 45, 48, 49, 56, 67], "t_stabil": [23, 24, 27, 30], "t_statu": [46, 47], "t_strategi": [27, 30], "t_sub_problem": 27, "t_sub_problem_specif": 30, "t_temp_ctr": [38, 42], "t_temp_var": 42, "t_term": 37, "t_thread": [24, 30, 59], "t_thread_limit": 60, "t_time_limit": [0, 23, 24, 27, 29, 30, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67], "t_tol_feas": [24, 30, 59, 60], "t_tol_integ": [24, 30, 59, 60], "t_tol_mip_relative_gap": [24, 30, 59], "t_tol_optim": [24, 30, 59, 60], "t_toler": [45, 76], "t_type": [38, 42, 45, 48, 49, 50], "t_ub": [42, 49, 50, 76], "t_uncertainty_set": [23, 24], "t_update_factor": 26, "t_use_farkas_for_infeas": 30, "t_use_hard_branch": 30, "t_use_lift": 3, "t_user_best_obj": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "t_valu": [0, 3, 23, 24, 26, 27, 29, 30, 37, 42, 46, 47, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 76], "t_var": [24, 40, 42, 43, 59, 60], "t_var_decomposit": 27, "t_vector": 42, "t_weight": 133, "t_x": [76, 133], "take": [0, 35, 120, 124, 134, 135], "taken": [45, 76, 136], "target": [84, 86, 95, 96, 98, 99], "target_link_librari": [96, 98], "task": [93, 117, 120], "techniqu": [100, 120], "technisch": 100, "tell": [86, 98, 99, 117], "tempctr": [1, 38, 42, 51, 69, 70, 72, 73, 124], "templat": [0, 1, 2, 3, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 27, 29, 30, 35, 38, 39, 40, 41, 42, 43, 44, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 99, 117, 126, 130], "temporari": [38, 48, 49, 124, 130, 134], "temporary_constraint": 124, "tempvar": [42, 51, 69, 130], "term": [36, 37, 41, 45, 48], "termin": [24, 30, 59, 60, 70], "test": [43, 67, 85, 94], "text": [37, 72, 120, 128, 133, 136], "textbf": 93, "textrm": [42, 117], "than": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 93, 94, 133, 136], "thank": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 121, 122, 123, 132, 137, 138, 139, 140, 142, 143], "thei": [35, 37, 94, 117, 130, 133, 136], "them": [39, 42, 72, 86, 94, 136], "theme": 84, "theoret": 94, "theori": 136, "therefor": [35, 42, 95, 130, 136], "thesi": 100, "thi": [0, 1, 23, 27, 29, 36, 37, 39, 41, 42, 43, 45, 46, 47, 48, 49, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 83, 84, 86, 93, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 142, 143], "thing": [127, 136], "think": 94, "thorsten": 100, "those": 136, "though": [39, 67, 94, 96, 117, 136], "thought": 95, "thread": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "three": [117, 120, 126, 134, 136], "threshold": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "through": [0, 23, 27, 39, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 97, 99, 117, 125, 133, 134], "throw": [37, 46, 47], "thrown": [38, 45, 46, 47, 50, 93, 134], "thu": [0, 35, 72, 94, 117, 120], "time": [0, 1, 23, 24, 27, 30, 37, 42, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 81, 95, 117, 120, 125, 126, 130, 134, 135], "timelimit": 135, "timer": [1, 24, 30, 59, 60, 70], "timi": 117, "timo": 100, "timt": 117, "to_str": 117, "tobia": 100, "todo": [101, 102, 105, 110, 115, 123, 134, 137, 141, 142], "togeth": 99, "toi": 90, "told": 86, "toler": [0, 23, 27, 37, 41, 45, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 75, 135], "tomlin": [11, 100], "too": [94, 126], "tool": [84, 94, 99], "top": [72, 93, 128, 133, 136], "topic": [117, 133, 136], "total": 70, "tree": [0, 1, 70, 81, 94, 117, 120, 136], "tri": 120, "trigger": [1, 70, 120, 133], "true": [0, 23, 27, 35, 37, 38, 41, 42, 43, 45, 46, 47, 48, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 134, 136], "trust": [105, 137, 141], "try": [1, 39, 46, 47, 95, 131], "tune": 94, "turn": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 126, 134, 136], "tutori": [27, 35, 72, 94, 117, 118, 119], "tweak": 94, "two": [35, 93, 94, 97, 100, 105, 117, 120, 130, 133, 136, 141, 142], "txt": [96, 98, 117], "type": [0, 35, 38, 39, 42, 43, 45, 46, 47, 48, 49, 50, 77, 81, 94, 117, 120, 124, 130, 131, 136], "typenam": [0, 46, 47], "typic": [37, 39, 41, 42, 46, 47, 48, 70, 72, 81, 94, 117, 120, 125, 128, 134, 136], "u": [95, 100, 117, 127, 134, 135], "ub": [42, 49, 76], "uchoa": 100, "umpir": [11, 100], "unbound": [0, 23, 27, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 130, 135], "unbounded": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "uncertainti": 100, "uncertainty_set": 24, "unchang": 117, "undefin": 39, "under": [93, 118, 119], "underli": [43, 105, 120, 123, 134, 136], "understand": [101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 121, 122, 123, 132, 137, 138, 139, 140, 142, 143], "unfortun": [99, 120], "unifi": 94, "uniformli": 94, "uniformlyrandom": [9, 22], "uniqu": [35, 38, 42, 50], "unit": 85, "univers": [69, 80, 105, 123, 134], "universit": 100, "unlik": 136, "unord": 99, "unsign": [0, 3, 5, 20, 21, 23, 24, 26, 27, 29, 30, 35, 37, 38, 40, 41, 42, 43, 45, 46, 47, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 76, 94, 117, 120, 135], "unus": 42, "up": [37, 41, 94, 134, 135], "updat": [1, 42, 94, 134], "update_stability_cent": [32, 33], "upper": [42, 49, 50, 130], "url": 100, "us": [0, 1, 23, 27, 29, 35, 36, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 81, 84, 86, 93, 94, 95, 96, 98, 100, 105, 115, 117, 118, 123, 124, 125, 126, 127, 128, 129, 130, 131, 133, 134, 135, 136, 137, 141], "usag": 67, "use_eigen": 99, "use_glpk": 99, "use_gurobi": [98, 99], "use_high": 99, "use_mosek": 99, "use_presolv": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "use_robinhood": 99, "user": [0, 1, 42, 70, 76, 94, 95, 99, 105, 110, 123, 133, 134], "usercutcallback": [0, 1, 69, 71, 74, 133, 136], "usr": [95, 97, 99], "usual": [46, 47], "util": 1, "v": 136, "v0": 98, "valid": [1, 70, 81, 94, 133, 136], "valu": [0, 23, 27, 35, 36, 37, 38, 41, 42, 45, 46, 47, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 76, 78, 81, 93, 98, 99, 117, 120, 124, 128, 129, 130, 133, 135, 136], "valuet": [35, 38, 50], "vanderbeck": 100, "var": [23, 24, 27, 36, 39, 40, 41, 42, 43, 44, 45, 47, 49, 51, 59, 60, 69, 124, 126, 128, 130, 131, 133], "varepsilon": [72, 120], "variabl": [0, 23, 27, 35, 36, 37, 41, 42, 43, 45, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 76, 94, 95, 98, 99, 105, 117, 120, 123, 124, 125, 126, 127, 129, 134, 135, 136], "variablebranch": [16, 17, 18, 19, 20, 21], "variant": 60, "vartyp": [42, 49, 50, 79, 80], "varvers": [49, 50], "ve": [118, 119], "vector": [30, 38, 42, 50, 99, 133, 136], "veri": [1, 94], "versatil": 94, "version": [1, 38, 39, 42, 50, 84, 94, 96, 98, 124, 125, 130], "via": [42, 86, 94], "view": [43, 126], "violat": [45, 48, 72, 76, 133, 136], "virtual": [0, 1, 2, 3, 5, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 41, 44, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 71, 72, 73, 94], "void": [0, 1, 23, 24, 26, 27, 28, 29, 30, 32, 33, 35, 36, 37, 38, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 70, 133], "w": [100, 133, 136], "w_": 117, "wa": [11, 38, 42, 50, 96, 120, 134], "wai": [97, 98, 117, 128, 130, 136], "want": [1, 70, 86, 93, 94, 95, 98, 117, 130, 131, 133, 134, 135], "warn": 93, "we": [0, 35, 41, 46, 47, 70, 72, 86, 93, 94, 95, 96, 98, 99, 117, 120, 124, 126, 127, 128, 130, 133, 134, 135, 136], "websit": 84, "weight": [94, 133, 135, 136], "well": [94, 99, 126, 136], "wentg": [34, 94], "were": [70, 136], "what": [1, 136], "when": [0, 1, 23, 27, 35, 42, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 76, 81, 86, 94, 99, 117, 120, 126, 130, 133, 136], "whenev": [70, 133, 136], "where": [0, 37, 93, 95, 99, 117, 124, 133, 136], "whether": [133, 136], "which": [0, 1, 23, 27, 29, 35, 36, 37, 38, 41, 42, 43, 45, 46, 47, 48, 49, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 70, 72, 84, 94, 95, 96, 98, 99, 117, 120, 124, 126, 127, 129, 130, 131, 133, 134, 136], "while": [0, 42, 45, 120, 128, 133, 134, 136], "who": 95, "whole": [45, 72, 120], "whose": [36, 41, 70, 120, 133], "why": [92, 124], "wide": 94, "wilei": 100, "wish": 1, "with_": 134, "with_absolute_gap_toler": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_best_bound_stop": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_best_obj_stop": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_branching_rul": [0, 1, 117, 120, 134], "with_callback": [0, 1, 70], "with_complete_recours": 23, "with_continuous_relaxation_onli": [56, 57, 58], "with_default_sub_problem_spec": [27, 117, 120], "with_dual_price_smoothing_stabil": 27, "with_external_param": 56, "with_external_paramet": 58, "with_frequ": 29, "with_hard_branch": 27, "with_infeasibility_strategi": 27, "with_infeasible_columns_remov": 27, "with_infeasible_or_unbounded_info": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_initial_cost": 26, "with_integer_column": 29, "with_iteration_limit": [0, 23, 27, 29, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_lazy_cut": [56, 136], "with_lift": 3, "with_log": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 134], "with_log_level": 117, "with_logg": [0, 27], "with_master_optim": [23, 27, 117, 120], "with_max_cuts_factor": 3, "with_max_depth": 29, "with_max_n_solution_in_pool": 56, "with_max_n_vari": [20, 120], "with_max_parallel_sub_problem": 27, "with_max_pass_root_nod": 3, "with_max_updates_before_phase_i": 26, "with_node_optim": [0, 1, 117], "with_node_scoring_funct": 20, "with_node_select": 0, "with_node_selection_rul": [0, 1, 117, 134], "with_node_selection_strategi": 120, "with_node_solv": 134, "with_optim": [5, 6, 29], "with_presolv": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_relative_gap_toler": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_scal": 0, "with_scoring_funct": 120, "with_se": 21, "with_separ": 23, "with_separation_optim": [72, 73, 136], "with_stabil": 23, "with_sub_problem_spec": 27, "with_subtree_depth": 0, "with_test_coverag": 86, "with_thread_limit": [0, 23, 27, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67], "with_time_limit": [0, 23, 27, 29, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 117, 134], "with_tree_node_cut": 3, "with_update_factor": 26, "within": [35, 42, 94, 136], "withiterationlimit": 120, "withnodeoptim": 120, "without": [42, 94, 95, 98, 126], "wolf": [27, 37, 100, 105, 115, 123], "wolsei": 100, "word": [117, 133], "work": [94, 98, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 121, 122, 123, 132, 134, 137, 138, 139, 140, 142, 143], "worst": 94, "worstbound": [9, 15], "would": [94, 117, 124], "write": [1, 42, 70, 94, 105, 110, 115, 120, 123, 133, 134, 137, 141], "written": 93, "wrong": 131, "x": [0, 23, 27, 36, 38, 41, 42, 43, 45, 47, 48, 50, 52, 55, 56, 57, 58, 63, 64, 65, 66, 67, 72, 93, 94, 96, 98, 117, 124, 126, 128, 130, 131, 133, 134, 135, 136], "x_": [42, 93, 117], "x_0": [41, 42, 93, 124, 126, 129, 136], "x_0_2": 117, "x_0_3": 117, "x_0_6": 117, "x_1": [41, 42, 124, 126, 129, 136], "x_1_4": [50, 117], "x_1_5": 117, "x_1_7": 117, "x_2_0": 117, "x_2_1": 117, "x_i": [93, 133, 136], "x_ij": 117, "x_j": [93, 120, 128], "xi": [37, 72, 126], "xi_0": [72, 126], "xi_1": 126, "xml": [53, 61, 62], "xpress": [68, 69], "y": [36, 38, 43, 45, 48, 124, 130, 136], "y_": 130, "y_0_0": 130, "ye": [86, 95, 98, 99], "yet": [48, 49, 70, 76, 94, 120, 125, 130], "yield": 37, "you": [0, 1, 42, 70, 72, 84, 86, 94, 95, 96, 97, 98, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 124, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 142, 143], "your": [0, 39, 86, 94, 95, 97, 98, 101, 102, 103, 104, 105, 110, 111, 112, 113, 114, 115, 116, 118, 119, 121, 122, 123, 125, 134, 136, 137, 138, 139, 141, 142, 143], "your_cmake_opt": 95, "your_other_cmake_opt": 95, "your_valu": 95, "z": [120, 128, 133, 136], "z_i": 120, "z_j": 120, "zeng": 100, "zero": [37, 41, 46, 47, 76, 93], "zhao": 100, "\u00e4": 100, "\u00e7": 100, "\u00e9": 100}, "titles": ["BranchAndBound", "BranchAndBoundCallback", "BranchAndBoundCallbackFactory", "Cuts::KnapsackCover", "Cutting Planes", "Heuristics::LocalBranching", "Heuristics::RENS", "Heuristics::SimpleRounding", "Heuristics", "Branch-and-Bound Algorithm", "BestBound", "BestEstimate", "BreadthFirst", "DepthFirst", "WorstBound", "Node Selection Rules", "FirstInfeasibleFound", "LeastInfeasible", "MostInfeasible", "PseudoCost", "StrongBranching", "UniformlyRandom", "Branching Rules", "Robust::ColumnAndConstraintGeneration", "Optimizers::Robust::ColumnAndConstraintGeneration", "Column-and-Constraint Generation Algorithm", "DantzigWolfe::ArtificialCosts", "DantzigWolfeDecomposition", "DantzigWolfe::FarkasPricing", "Heuristics::IntegerMaster", "Optimizers::DantzigWolfeDecomposition", "Column Generation Algorithm", "DantzigWolfe::Neame", "DantzigWolfe::Wentges", "Stabilization", "Annotation", "Column", "Constant", "Ctr", "Env", "Expr", "LinExpr", "Model", "Param", "QuadExpr", "Row", "Solution::Dual", "Solution::Primal", "TempCtr", "TempVar", "Var", "Common", "Bilevel::Mibs", "Optimizers::Bilevel::Mibs", "External Bilevel Solvers", "GLPK", "Gurobi", "HiGHS", "Mosek", "Optimizers::GLPK", "Optimizers::Gurobi", "Optimizers::HiGHS", "Optimizers::Mosek", "OsiCbc", "OsiClp", "OsiCplex", "OsiSymphony", "COIN-OR/Osi (Cplex, Xpress, Cbc, \u2026)", "External MIP solvers", "Class List", "Callback", "CallbackFactory", "LazyCutCallback", "UserCutCallback", "Universal Callbacks", "Constants", "Tolerances and Numerics", "API", "VarType", "Common", "Type List", "Events", "Universal Callbacks", "Benchmark", "Build the doc!", "Developer guide", "Unit and integration tests", "Toy Example", "Facility Location Problem", "Generalized Assignment Problem", "Examples", "Knapsack Problem", "FAQ", "Why is Eigen necessary to solve QPs and QCQPs with Mosek?", "What Is Idol?", "Global Installation", "Linking Your C++ Project", "Installation", "Local Installation", "List of CMake Options", "References", "Bilevel Optimization", "Modeling", "Solving Bilevel Problems with Coin-OR/MibS [TODO]", "Modeling an Optimistic Bilevel Problem [TODO]", "Tutorials", "Creating Your Own Branching Rule (Advanced) [TODO]", "Create Your Own Callback (Advanced) [TODO]", "Creating Your Own Node Class (Advanced) [TODO]", "Creating Your Own Node Selection Rule (Advanced) [TODO]", "Branch-and-Bound Algorithm", "Adding User Cuts and Lazy Constraints [TODO]", "Writing an LP-based Branch-and-Bound [TODO]", "Modeling and Solving A Dantzig-Wolfe Reformulation [TODO]", "Using In-Out Stabilization [TODO]", "Column Generation and Branch-and-Price Algorithm", "The Integer Master Heuristic [TODO]", "Branch-and-Price 101", "Heuristic Pricing (to come)", "In-Out Stabilization (to come)", "Using Strong Branching", "Writing A Branch-and-Cut-and-Price Algorithm [TODO]", "Writing A Branch-and-Price Algorithm [TODO]", "Mixed-Integer Programming", "Constraints", "The Environment", "Expressions", "Modeling", "Models", "Objective Functions", "Variables", "Getting Access to The Underlying Optimizer", "Creating Your Own Optimizer (Advanced) [TODO]", "Creating Your Own Universal Callback", "Optimizers", "Solving a Model and Accessing the Solution", "Adding User Cuts and Lazy Constraints", "Column-and-Constraint-Generation Algorithm", "Using Trust Region Stabilization [TODO]", "Writing a Column-and-Constraint-Generation Algorithm [TODO]", "Writing Your Own Separator (Advanced) [TODO]", "Robust Optimization", "Modeling", "Modeling a Two-Stage Robust Problem [TODO]"], "titleterms": {"101": 117, "A": [113, 121, 122, 133], "In": [93, 114, 119], "OR": [67, 103], "The": [116, 117, 125, 131], "With": 94, "about": 126, "access": [124, 129, 130, 131, 135], "ad": [111, 129, 136], "advanc": [106, 107, 108, 109, 132, 140], "algorithm": [9, 25, 31, 94, 110, 115, 117, 121, 122, 137, 139], "an": [104, 112, 129, 136], "annot": 35, "answer": 93, "api": 77, "artificialcost": 26, "assign": 89, "automat": 117, "base": 112, "basic": [120, 133], "benchmark": 83, "bender": 136, "bestbound": 10, "bestestim": 11, "bilevel": [52, 53, 54, 69, 90, 101, 103, 104, 105], "bound": [9, 90, 94, 110, 112], "branch": [9, 22, 90, 94, 106, 110, 112, 115, 117, 120, 121, 122], "branchandbound": 0, "branchandboundcallback": 1, "branchandboundcallbackfactori": 2, "breadthfirst": 12, "build": [84, 86, 95, 99], "c": 96, "callback": [70, 74, 82, 107, 133], "callbackfactori": 71, "cbc": 67, "chang": [120, 129], "class": [69, 108], "cmake": 99, "code": 86, "coin": [67, 103], "column": [25, 31, 36, 90, 94, 115, 137, 139], "columnandconstraintgener": [23, 24], "come": [118, 119], "commerci": 99, "common": [51, 75, 79], "configur": 95, "constant": [37, 75, 126], "constraint": [25, 111, 124, 128, 136, 137, 139], "content": [94, 95, 99, 120, 124, 128, 129, 130, 133, 135, 136], "cover": [133, 136], "coverag": 86, "cplex": 67, "creat": [70, 106, 107, 108, 109, 117, 124, 128, 130, 132, 133], "ctr": 38, "current": 94, "cut": [3, 4, 111, 121, 133, 136], "dantzig": [94, 113, 117], "dantzigwolf": [26, 28, 32, 33], "dantzigwolfedecomposit": [27, 30], "decomposit": [94, 117], "depend": [84, 86, 99], "depthfirst": 13, "descript": 84, "detail": 93, "develop": 85, "doc": 84, "dual": 46, "eigen": [93, 99], "env": 39, "environ": 125, "event": 81, "exampl": [0, 1, 41, 42, 70, 86, 87, 90, 94, 95, 99, 117, 133, 135, 136], "expr": 40, "express": 126, "extern": [54, 68, 94, 99], "facil": 88, "faq": 92, "farkaspr": 28, "featur": 94, "file": 128, "firstinfeasiblefound": 16, "formul": 117, "from": 128, "full": 120, "function": [120, 129], "gener": [25, 31, 89, 90, 94, 115, 137, 139], "get": [94, 131], "give": 117, "global": 95, "glpk": [55, 59, 99], "guid": [84, 85, 86], "gurobi": [56, 60, 95, 99], "hash": 99, "heurist": [5, 6, 7, 8, 29, 116, 118], "high": [57, 61, 99], "hood": 99, "i": [93, 94], "idol": 94, "implement": 120, "inequ": 136, "instal": [84, 86, 95, 97, 98], "instruct": [84, 86, 117], "integ": [69, 80, 90, 105, 116, 123], "integermast": 29, "integr": [86, 99], "interfac": 94, "introduct": 136, "iter": 128, "knapsack": [91, 133, 136], "knapsackcov": 3, "lazi": [111, 136], "lazycutcallback": [70, 72], "leastinfeas": 17, "linexpr": 41, "link": [96, 99], "list": [69, 80, 99], "local": 98, "localbranch": 5, "locat": 88, "lp": 112, "map": 99, "martinu": 99, "master": 116, "mathemat": 117, "mib": [52, 53, 103], "mip": [68, 94], "mix": [69, 80, 90, 105, 123], "model": [42, 102, 104, 113, 117, 127, 128, 135, 142, 143], "modifi": [124, 130], "mosek": [58, 62, 93, 99], "mostinfeas": 18, "neam": 32, "necessari": 93, "node": [15, 108, 109], "numer": 76, "object": 129, "onc": 130, "open": 99, "optim": [24, 30, 53, 59, 60, 61, 62, 69, 90, 94, 101, 105, 129, 131, 132, 134, 136, 141], "optimist": 104, "option": [86, 99], "origin": 117, "osi": 67, "osicbc": 63, "osiclp": 64, "osicplex": 65, "osisymphoni": 66, "other": 99, "out": [114, 119], "over": 128, "own": [70, 106, 107, 108, 109, 132, 133, 140], "param": 43, "phase": 120, "plane": 4, "price": [90, 115, 117, 118, 121, 122], "primal": 47, "problem": [88, 89, 91, 103, 104, 143], "program": [69, 80, 90, 105, 123], "project": [96, 135], "pseudocost": 19, "qcqp": 93, "qp": 93, "quadexpr": 44, "read": 128, "refer": 100, "reformul": [113, 117], "region": 138, "remov": [124, 130], "ren": 6, "restrict": 120, "robin": 99, "robust": [23, 24, 69, 105, 141, 143], "row": 45, "rule": [15, 22, 106, 109], "save": 135, "score": 120, "select": [15, 109], "sens": 129, "separ": 140, "sever": 130, "short": 93, "simpl": 133, "simpleround": 7, "solut": [46, 47, 135], "solv": [93, 103, 113, 135], "solver": [54, 68, 94, 99], "sourc": 99, "stabil": [34, 114, 119, 138], "stage": 143, "start": 94, "strong": 120, "strongbranch": 20, "tabl": [94, 95, 99, 120, 124, 128, 129, 130, 133, 135, 136], "tempctr": 48, "tempvar": 49, "test": [86, 99], "thi": 94, "todo": [103, 104, 106, 107, 108, 109, 111, 112, 113, 114, 116, 121, 122, 132, 138, 139, 140, 143], "toi": 87, "toler": 76, "trust": 138, "tutori": 105, "two": 143, "type": 80, "ubuntu": [84, 86], "underli": 131, "uniformlyrandom": 21, "unit": [86, 99], "univers": [74, 82, 133], "us": [99, 114, 120, 138], "user": [111, 136], "usercutcallback": [70, 73], "var": 50, "variabl": [128, 130], "variant": 120, "vartyp": 78, "wentg": 33, "what": 94, "why": 93, "wolf": [94, 113, 117], "worstbound": 14, "write": [112, 121, 122, 128, 139, 140], "xpress": 67, "your": [70, 96, 106, 107, 108, 109, 132, 133, 140]}}) \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..b94e2d45 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,2 @@ + +https://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/BranchAndBound.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/BranchAndBoundCallback.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/BranchAndBoundCallbackFactory.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/cuts/KnapsackCover.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/cuts/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/heuristics/LocalBranching.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/heuristics/RENS.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/heuristics/SimpleRounding.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/heuristics/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/BestBound.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/BestEstimate.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/BreadthFirst.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/DepthFirst.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/WorstBound.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/node-selection/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/FirstInfeasibleFound.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/LeastInfeasible.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/MostInfeasible.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/PseudoCost.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/StrongBranching.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/UniformlyRandom.htmlhttps://hlefebvr.github.io/idol/en/api/classes/branch-and-bound/variable-selection/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-and-constraint-generation/ColumnAndConstraintGeneration.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-and-constraint-generation/Optimizers_ColumnAndConstraintGeneration.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-and-constraint-generation/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/ArtificialCosts.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/DantzigWolfeDecomposition.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/FarkasPricing.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/IntegerMaster.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/Optimizers_DantzigWolfeDecomposition.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/stabilization/Neame.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/stabilization/Wentges.htmlhttps://hlefebvr.github.io/idol/en/api/classes/column-generation/stabilization/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Annotation.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Column.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Constant.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Ctr.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Env.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Expr.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/LinExpr.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Model.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Param.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/QuadExpr.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Row.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/SolutionDual.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/SolutionPrimal.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/TempCtr.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/TempVar.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/Var.htmlhttps://hlefebvr.github.io/idol/en/api/classes/common/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-bilevel/MibS.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-bilevel/Optimizers_MibS.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-bilevel/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/GLPK.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Gurobi.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/HiGHS.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Mosek.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Optimizers_GLPK.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Optimizers_Gurobi.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Optimizers_HiGHS.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Optimizers_Mosek.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Osi/OsiCbc.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Osi/OsiClp.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Osi/OsiCplex.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Osi/OsiSymphony.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/Osi/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/external-mip/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/index.htmlhttps://hlefebvr.github.io/idol/en/api/classes/universal-callbacks/Callback.htmlhttps://hlefebvr.github.io/idol/en/api/classes/universal-callbacks/CallbackFactory.htmlhttps://hlefebvr.github.io/idol/en/api/classes/universal-callbacks/LazyCutCallback.htmlhttps://hlefebvr.github.io/idol/en/api/classes/universal-callbacks/UserCutCallback.htmlhttps://hlefebvr.github.io/idol/en/api/classes/universal-callbacks/index.htmlhttps://hlefebvr.github.io/idol/en/api/constants/index.htmlhttps://hlefebvr.github.io/idol/en/api/constants/tolerances.htmlhttps://hlefebvr.github.io/idol/en/api/index.htmlhttps://hlefebvr.github.io/idol/en/api/types/common/VarType.htmlhttps://hlefebvr.github.io/idol/en/api/types/common/index.htmlhttps://hlefebvr.github.io/idol/en/api/types/index.htmlhttps://hlefebvr.github.io/idol/en/api/types/universal-callbacks/CallbackEvent.htmlhttps://hlefebvr.github.io/idol/en/api/types/universal-callbacks/index.htmlhttps://hlefebvr.github.io/idol/en/benchmark/index.htmlhttps://hlefebvr.github.io/idol/en/developer_guide/build-the-doc.htmlhttps://hlefebvr.github.io/idol/en/developer_guide/index.htmlhttps://hlefebvr.github.io/idol/en/developer_guide/tests.htmlhttps://hlefebvr.github.io/idol/en/examples/bilevel-problem.htmlhttps://hlefebvr.github.io/idol/en/examples/facility-location-problem.htmlhttps://hlefebvr.github.io/idol/en/examples/generalized-assignment-problem.htmlhttps://hlefebvr.github.io/idol/en/examples/index.htmlhttps://hlefebvr.github.io/idol/en/examples/knapsack-problem.htmlhttps://hlefebvr.github.io/idol/en/faq/index.htmlhttps://hlefebvr.github.io/idol/en/faq/mosek-and-eigen.htmlhttps://hlefebvr.github.io/idol/en/index.htmlhttps://hlefebvr.github.io/idol/en/installation/global-installation/index.htmlhttps://hlefebvr.github.io/idol/en/installation/global-installation/linking.htmlhttps://hlefebvr.github.io/idol/en/installation/index.htmlhttps://hlefebvr.github.io/idol/en/installation/local_installation.htmlhttps://hlefebvr.github.io/idol/en/installation/options.htmlhttps://hlefebvr.github.io/idol/en/references.htmlhttps://hlefebvr.github.io/idol/en/tutorials/bilevel-optimization/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/bilevel-optimization/modeling/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/bilevel-optimization/modeling/mibs.htmlhttps://hlefebvr.github.io/idol/en/tutorials/bilevel-optimization/modeling/optimistic.htmlhttps://hlefebvr.github.io/idol/en/tutorials/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/create-callback.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/create-node.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/constraints.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/environment.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/expressions.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/models.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/objective-function.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/modeling/variables.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/access-optimizer.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/create-optimizer.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/create-universal-callback.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/solving.htmlhttps://hlefebvr.github.io/idol/en/tutorials/mixed-integer-programming/optimizers/universal-callbacks.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/column-and-constraint-generation/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/modeling/index.htmlhttps://hlefebvr.github.io/idol/en/tutorials/robust-optimization/modeling/two-stage-robust.htmlhttps://hlefebvr.github.io/idol/en/genindex.htmlhttps://hlefebvr.github.io/idol/en/search.html \ No newline at end of file diff --git a/tutorials/bilevel-optimization/index.html b/tutorials/bilevel-optimization/index.html new file mode 100644 index 00000000..4346543f --- /dev/null +++ b/tutorials/bilevel-optimization/index.html @@ -0,0 +1,149 @@ + + + + + + + Bilevel Optimization — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/bilevel-optimization/modeling/index.html b/tutorials/bilevel-optimization/modeling/index.html new file mode 100644 index 00000000..f783a363 --- /dev/null +++ b/tutorials/bilevel-optimization/modeling/index.html @@ -0,0 +1,151 @@ + + + + + + + Modeling — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/bilevel-optimization/modeling/mibs.html b/tutorials/bilevel-optimization/modeling/mibs.html new file mode 100644 index 00000000..49842745 --- /dev/null +++ b/tutorials/bilevel-optimization/modeling/mibs.html @@ -0,0 +1,146 @@ + + + + + + + Solving Bilevel Problems with Coin-OR/MibS [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/bilevel-optimization/modeling/optimistic.html b/tutorials/bilevel-optimization/modeling/optimistic.html new file mode 100644 index 00000000..a1e27734 --- /dev/null +++ b/tutorials/bilevel-optimization/modeling/optimistic.html @@ -0,0 +1,146 @@ + + + + + + + Modeling an Optimistic Bilevel Problem [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html new file mode 100644 index 00000000..cdad3e76 --- /dev/null +++ b/tutorials/index.html @@ -0,0 +1,217 @@ + + + + + + + Tutorials — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.html b/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.html new file mode 100644 index 00000000..2cafdcae --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/create-branching-rule.html @@ -0,0 +1,153 @@ + + + + + + + Creating Your Own Branching Rule (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/create-callback.html b/tutorials/mixed-integer-programming/branch-and-bound/create-callback.html new file mode 100644 index 00000000..224a3b92 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/create-callback.html @@ -0,0 +1,153 @@ + + + + + + + Create Your Own Callback (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.html b/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.html new file mode 100644 index 00000000..1bfa6a71 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/create-node-selection-rule.html @@ -0,0 +1,153 @@ + + + + + + + Creating Your Own Node Selection Rule (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/create-node.html b/tutorials/mixed-integer-programming/branch-and-bound/create-node.html new file mode 100644 index 00000000..0c4fd481 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/create-node.html @@ -0,0 +1,153 @@ + + + + + + + Creating Your Own Node Class (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/index.html b/tutorials/mixed-integer-programming/branch-and-bound/index.html new file mode 100644 index 00000000..050fdf79 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/index.html @@ -0,0 +1,162 @@ + + + + + + + Branch-and-Bound Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.html b/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.html new file mode 100644 index 00000000..69dfd808 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/user-cuts-lazy-constraints.html @@ -0,0 +1,153 @@ + + + + + + + Adding User Cuts and Lazy Constraints [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.html b/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.html new file mode 100644 index 00000000..18704e42 --- /dev/null +++ b/tutorials/mixed-integer-programming/branch-and-bound/write-branch-and-bound.html @@ -0,0 +1,153 @@ + + + + + + + Writing an LP-based Branch-and-Bound [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.html b/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.html new file mode 100644 index 00000000..f8f122ee --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/dantzig-wolfe.html @@ -0,0 +1,153 @@ + + + + + + + Modeling and Solving A Dantzig-Wolfe Reformulation [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.html b/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.html new file mode 100644 index 00000000..4aa7a89b --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/in-out-stabilization.html @@ -0,0 +1,153 @@ + + + + + + + Using In-Out Stabilization [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/index.html b/tutorials/mixed-integer-programming/dantzig-wolfe/index.html new file mode 100644 index 00000000..e8feda63 --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/index.html @@ -0,0 +1,163 @@ + + + + + + + Column Generation and Branch-and-Price Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.html b/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.html new file mode 100644 index 00000000..454172cf --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/integer-master.html @@ -0,0 +1,153 @@ + + + + + + + The Integer Master Heuristic [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.html b/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.html new file mode 100644 index 00000000..ebce30bb --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/old/dantzig_wolfe.html @@ -0,0 +1,367 @@ + + + + + + + Branch-and-Price 101 — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.html b/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.html new file mode 100644 index 00000000..ef63d29f --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/old/heuristic.html @@ -0,0 +1,129 @@ + + + + + + + Heuristic Pricing (to come) — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.html b/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.html new file mode 100644 index 00000000..958d5e04 --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/old/stabilization.html @@ -0,0 +1,129 @@ + + + + + + + In-Out Stabilization (to come) — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.html b/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.html new file mode 100644 index 00000000..f4b80d88 --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/strong-branching.html @@ -0,0 +1,319 @@ + + + + + + + Using Strong Branching — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.html b/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.html new file mode 100644 index 00000000..31af4aff --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-cut-and-price.html @@ -0,0 +1,153 @@ + + + + + + + Writing A Branch-and-Cut-and-Price Algorithm [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.html b/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.html new file mode 100644 index 00000000..a02db391 --- /dev/null +++ b/tutorials/mixed-integer-programming/dantzig-wolfe/writing-branch-and-price.html @@ -0,0 +1,153 @@ + + + + + + + Writing A Branch-and-Price Algorithm [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/index.html b/tutorials/mixed-integer-programming/index.html new file mode 100644 index 00000000..1fd878a5 --- /dev/null +++ b/tutorials/mixed-integer-programming/index.html @@ -0,0 +1,183 @@ + + + + + + + Mixed-Integer Programming — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/constraints.html b/tutorials/mixed-integer-programming/modeling/constraints.html new file mode 100644 index 00000000..bae5bcef --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/constraints.html @@ -0,0 +1,237 @@ + + + + + + + Constraints — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/environment.html b/tutorials/mixed-integer-programming/modeling/environment.html new file mode 100644 index 00000000..eb45514e --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/environment.html @@ -0,0 +1,157 @@ + + + + + + + The Environment — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/expressions.html b/tutorials/mixed-integer-programming/modeling/expressions.html new file mode 100644 index 00000000..ef903673 --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/expressions.html @@ -0,0 +1,214 @@ + + + + + + + Expressions — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/index.html b/tutorials/mixed-integer-programming/modeling/index.html new file mode 100644 index 00000000..ff48bd3f --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/index.html @@ -0,0 +1,166 @@ + + + + + + + Modeling — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/models.html b/tutorials/mixed-integer-programming/modeling/models.html new file mode 100644 index 00000000..1f052459 --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/models.html @@ -0,0 +1,222 @@ + + + + + + + Models — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/objective-function.html b/tutorials/mixed-integer-programming/modeling/objective-function.html new file mode 100644 index 00000000..3f16ca7f --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/objective-function.html @@ -0,0 +1,186 @@ + + + + + + + Objective Functions — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/modeling/variables.html b/tutorials/mixed-integer-programming/modeling/variables.html new file mode 100644 index 00000000..3cab67c8 --- /dev/null +++ b/tutorials/mixed-integer-programming/modeling/variables.html @@ -0,0 +1,270 @@ + + + + + + + Variables — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/access-optimizer.html b/tutorials/mixed-integer-programming/optimizers/access-optimizer.html new file mode 100644 index 00000000..5329de12 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/access-optimizer.html @@ -0,0 +1,173 @@ + + + + + + + Getting Access to The Underlying Optimizer — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/create-optimizer.html b/tutorials/mixed-integer-programming/optimizers/create-optimizer.html new file mode 100644 index 00000000..3aab9637 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/create-optimizer.html @@ -0,0 +1,152 @@ + + + + + + + Creating Your Own Optimizer (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/create-universal-callback.html b/tutorials/mixed-integer-programming/optimizers/create-universal-callback.html new file mode 100644 index 00000000..ef7ac464 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/create-universal-callback.html @@ -0,0 +1,331 @@ + + + + + + + Creating Your Own Universal Callback — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/index.html b/tutorials/mixed-integer-programming/optimizers/index.html new file mode 100644 index 00000000..9c26d732 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/index.html @@ -0,0 +1,239 @@ + + + + + + + Optimizers — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/solving.html b/tutorials/mixed-integer-programming/optimizers/solving.html new file mode 100644 index 00000000..e5505af4 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/solving.html @@ -0,0 +1,272 @@ + + + + + + + Solving a Model and Accessing the Solution — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/mixed-integer-programming/optimizers/universal-callbacks.html b/tutorials/mixed-integer-programming/optimizers/universal-callbacks.html new file mode 100644 index 00000000..b35b5e27 --- /dev/null +++ b/tutorials/mixed-integer-programming/optimizers/universal-callbacks.html @@ -0,0 +1,346 @@ + + + + + + + Adding User Cuts and Lazy Constraints — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/column-and-constraint-generation/index.html b/tutorials/robust-optimization/column-and-constraint-generation/index.html new file mode 100644 index 00000000..5830c4c8 --- /dev/null +++ b/tutorials/robust-optimization/column-and-constraint-generation/index.html @@ -0,0 +1,154 @@ + + + + + + + Column-and-Constraint-Generation Algorithm — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.html b/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.html new file mode 100644 index 00000000..381e2363 --- /dev/null +++ b/tutorials/robust-optimization/column-and-constraint-generation/trust-region-stabilization.html @@ -0,0 +1,148 @@ + + + + + + + Using Trust Region Stabilization [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.html b/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.html new file mode 100644 index 00000000..a30bd66d --- /dev/null +++ b/tutorials/robust-optimization/column-and-constraint-generation/write-ccg.html @@ -0,0 +1,148 @@ + + + + + + + Writing a Column-and-Constraint-Generation Algorithm [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.html b/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.html new file mode 100644 index 00000000..dd328c7d --- /dev/null +++ b/tutorials/robust-optimization/column-and-constraint-generation/writing-separator.html @@ -0,0 +1,148 @@ + + + + + + + Writing Your Own Separator (Advanced) [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/index.html b/tutorials/robust-optimization/index.html new file mode 100644 index 00000000..d7bc2d46 --- /dev/null +++ b/tutorials/robust-optimization/index.html @@ -0,0 +1,151 @@ + + + + + + + Robust Optimization — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/modeling/index.html b/tutorials/robust-optimization/modeling/index.html new file mode 100644 index 00000000..d7707889 --- /dev/null +++ b/tutorials/robust-optimization/modeling/index.html @@ -0,0 +1,150 @@ + + + + + + + Modeling — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/tutorials/robust-optimization/modeling/two-stage-robust.html b/tutorials/robust-optimization/modeling/two-stage-robust.html new file mode 100644 index 00000000..1ea38e1a --- /dev/null +++ b/tutorials/robust-optimization/modeling/two-stage-robust.html @@ -0,0 +1,146 @@ + + + + + + + Modeling a Two-Stage Robust Problem [TODO] — idol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + + + \ No newline at end of file