You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lib/PlasmoBenders/README.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,12 +18,12 @@ Pkg.add("PlasmoBenders")
18
18
19
19
[Benders decomposition](https://en.wikipedia.org/wiki/Benders_decomposition) (BD) is a decomposition approach that breaks problems into a master problem and a subproblem(s) and is typically applied to linear and mixed integer linear programs. BD is an iterative algorithm that can be useful for problems where there are a set of complicating variables (in the master problem) that, once fixed, make the subproblem easier to solve. An iteration of BD generally includes 1) solving the master problem, 2) passing the solution of the master problem to the subproblem, 3) solving the subproblem with the master problem solution, and 4) passing primal and dual information from the subproblem to the master problem and forming cutting planes on the master problem. PlasmoBenders applies this approach to graph-based problems where each subgraph of an OptiGraph is the master problem or a subproblem. PD is applied to the graph based on the user-defined subproblems.
20
20
21
-
Nested Benders Decomposition (NBD; also called [dual dynamic programming](https://www-sciencedirect-com.ezproxy.library.wisc.edu/science/article/pii/S0098135421000430)) uses similar ideas to BD but can have a sequence of subproblems (i.e., not all subproblems are connected to the original master problem, forming a nested structure). NBD can be applied to graphs with a tree structure, and NBD is likewise implemented in PlasmoBenders.
21
+
Nested Benders Decomposition (NBD; also called [dual dynamic programming](https://doi.org/10.1016/j.compchemeng.2021.107265)) uses similar ideas to BD but can have a sequence of subproblems (i.e., not all subproblems are connected to the original master problem, forming a nested structure). NBD can be applied to graphs with a tree structure, and NBD is likewise implemented in PlasmoBenders.
22
22
23
23
> [!NOTE]
24
24
> PlasmoBenders requires Plasmo v0.6.2 or later
25
25
26
-
PlasmoBenders is built on a `BendersOptimizer` object which requires a user-defined graph and a subgraph of that graph as the root (master problem) graph. After the information is past, the `BendersOptimizer` constructor updates the graph to apply BD or NBD. `JuMP.optimize!`is extended so that the iterative BD/NBD algorithm is applied to find a solution.
26
+
PlasmoBenders is built on a `BendersAlgorithm` object which requires a user-defined graph and a subgraph of that graph as the root (master problem) graph. After the information is passed, the `BendersAlgorithm` object is instantiated and can be solved with the `run_algorithm!`function.
The `BendersOptimizer` constructor takes the overall graph, `g0` as the first object and then the root/master subgraph `g1` as the second argument.
71
+
The `BendersAlgorithm` constructor takes the overall graph, `g0` as the first object and then the root/master subgraph `g1` as the second argument.
72
72
73
73
### Additional Functionality
74
74
75
-
PlasmoBenders includes additional functionality. The following keyword arguments can be passed to the `BendersOptimizer` constructor. These include the following key word arguments:
75
+
PlasmoBenders includes additional functionality. The following keyword arguments can be passed to the `BendersAlgorithm` constructor. These include the following key word arguments:
76
76
77
77
*`max_iters` - maximum number of iterations to use
78
78
*`tol` - termination tolerance between upper and lower bounds
0 commit comments