Skip to content
Snippets Groups Projects
Commit 4fd6343c authored by Gabriel Gehrke's avatar Gabriel Gehrke
Browse files

minor fixes for clarity + added MIP start resource

parent 10666ed3
No related branches found
No related tags found
No related merge requests found
......@@ -25,10 +25,10 @@ Advanced functions such as $\sin x$ are of course completely forbidden (though,
In a Mixed Integer Program, we have
1. Variables, which can be fractional, boolean, or integral. Fractional and integral variables can additional have a lower and upper bound.
2. A linear objective function that can be minimized or maximized.
1. Variables, which can be fractional, boolean, or integral. Fractional and integral variables can additionaly have a lower and upper bound (as opposed to CP-SAT, where bounds were mandatory).
2. A linear objective function that is to be minimized or maximized.
3. A set of linear constraints on the variables that have to be satisfied by every solution.
4. Optionally, a lazy constraints-function that gets a solution and returns nothing if the solution is feasible or constraints that are violated and should be added to the set. This allows to have a theoretically huge number of constraints in the model, but not in the computer memory.
4. Optionally, a lazy constraints-function that gets a solution and returns nothing if the solution is feasible or returns constraints that are violated and should be added to the set. This allows to have a theoretically huge number of constraints in the model, but not in the computer memory.
You can also check out these [video lectures](https://www.gurobi.com/resource/tutorial-mixed-integer-linear-programming/).
......@@ -36,7 +36,7 @@ We again provide an [example for the Degree Constrained Bottleneck Spanning Tree
## Installation
We will use [Gurobi](https://www.gurobi.com/). In case you haven't already installed it, you can do so using Anaconda
We will use [Gurobi](https://www.gurobi.com/). In case you haven't already installed it, you can do so using Anaconda
```bash
conda config --add channels http://conda.anaconda.org/gurobi
......@@ -60,5 +60,5 @@ You may have to be within the university's network (or use VPN) for this.
* Model the BTSP as a Mixed Integer Program on paper. Use the [constraint technique](https://en.wikipedia.org/wiki/Travelling_salesman_problem#Dantzig%E2%80%93Fulkerson%E2%80%93Johnson_formulation) already used for SAT to enforce a single tour and do not use the [technique](https://en.wikipedia.org/wiki/Travelling_salesman_problem#Miller%E2%80%93Tucker%E2%80%93Zemlin_formulation[21]) used with CP-SAT (as it performs poorly with MIP-solvers).
* Implement the model with Gurobi. Add the subtour elimination constraints via callbacks.
* How does the solver performs compared to the CP-SAT-solver and the SAT-solver? What is the smallest instance you can no longer solve, and what is the largest instance you still can solve in 5 minutes.
* You can provide Gurobi with initial solutions. How does this influence the performance?
* Extend the solver to not just search for the minimal bottleneck, but return the shortest tour with this bottleneck. Also adapt your CP-SAT solver to do so and compare the performance of the two.
* You can provide Gurobi with initial solutions. How does this influence the performance? (Lead: ["MIP starts"](https://support.gurobi.com/hc/en-us/articles/360043834831-How-do-I-use-MIP-starts-))
* Extend the solver by implementing a second version to not just search for the minimal bottleneck, but return the shortest tour with this bottleneck. Also adapt your CP-SAT solver to do so and compare the performance of the two.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment