From 596ae170eb48bc8b6399aa8f05a474cf389b522a Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 14:18:27 -0700 Subject: [PATCH 1/8] change date --- .../intro_to_gurobipy/intro_to_gurobipy.ipynb | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb b/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb index 2061596..f5e43cc 100644 --- a/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb +++ b/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "df92bca2", + "id": "289dca03", "metadata": { "slideshow": { "slide_type": "slide" @@ -12,14 +12,14 @@ "# Introduction to Gurobi Python API\n", "\n", "###### Gurobi Days Digital\n", - "###### June 1, 2023\n", + "###### June 24, 2026\n", "###### Maliheh Aramon, PhD, Optimization Engineer\n", "###### aramon@gurobi.com" ] }, { "cell_type": "markdown", - "id": "a89d2355", + "id": "2e141a36", "metadata": { "slideshow": { "slide_type": "slide" @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": null, - "id": "922de8f7", + "id": "7777d733", "metadata": { "slideshow": { "slide_type": "slide" @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "d247cb27", + "id": "c7ce01c5", "metadata": { "slideshow": { "slide_type": "slide" @@ -76,7 +76,7 @@ }, { "cell_type": "markdown", - "id": "287f3155", + "id": "84f9fe54", "metadata": { "slideshow": { "slide_type": "slide" @@ -98,7 +98,7 @@ }, { "cell_type": "markdown", - "id": "fe9e495b", + "id": "e6d9b8b2", "metadata": { "slideshow": { "slide_type": "slide" @@ -136,7 +136,7 @@ }, { "cell_type": "markdown", - "id": "d97b6242", + "id": "f40e1b24", "metadata": { "slideshow": { "slide_type": "slide" @@ -157,7 +157,7 @@ { "cell_type": "code", "execution_count": null, - "id": "985298bc", + "id": "dd78e032", "metadata": { "code_folding": [ 22 @@ -199,7 +199,7 @@ }, { "cell_type": "markdown", - "id": "782dd74c", + "id": "b539fb10", "metadata": { "slideshow": { "slide_type": "slide" @@ -228,7 +228,7 @@ }, { "cell_type": "markdown", - "id": "521221e8", + "id": "975ff7ad", "metadata": { "slideshow": { "slide_type": "slide" @@ -259,7 +259,7 @@ { "cell_type": "code", "execution_count": null, - "id": "670c2be2", + "id": "6d1bbdb6", "metadata": { "slideshow": { "slide_type": "fragment" @@ -286,7 +286,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eefb7e67", + "id": "4f28285b", "metadata": {}, "outputs": [], "source": [ @@ -298,7 +298,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ba1ff69b", + "id": "d58b0cfb", "metadata": {}, "outputs": [], "source": [ @@ -312,7 +312,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6102c6d6", + "id": "4c08978c", "metadata": { "slideshow": { "slide_type": "fragment" @@ -338,7 +338,7 @@ }, { "cell_type": "markdown", - "id": "e14650dd", + "id": "968e774b", "metadata": { "slideshow": { "slide_type": "slide" @@ -373,7 +373,7 @@ }, { "cell_type": "markdown", - "id": "a39c946c", + "id": "4fe89c26", "metadata": { "slideshow": { "slide_type": "slide" @@ -392,7 +392,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e52bfe37", + "id": "ff80bbca", "metadata": { "slideshow": { "slide_type": "fragment" @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "b4b2e89b", + "id": "352fa1e4", "metadata": { "slideshow": { "slide_type": "slide" @@ -449,7 +449,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5a1f9012", + "id": "8b5bfdf5", "metadata": { "slideshow": { "slide_type": "fragment" @@ -469,7 +469,7 @@ }, { "cell_type": "markdown", - "id": "eea3ff89", + "id": "28c8800e", "metadata": { "slideshow": { "slide_type": "slide" @@ -496,7 +496,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7ff0dfb1", + "id": "b4a11976", "metadata": { "slideshow": { "slide_type": "fragment" @@ -535,7 +535,7 @@ }, { "cell_type": "markdown", - "id": "f68aeb79", + "id": "1a66983d", "metadata": { "slideshow": { "slide_type": "slide" @@ -564,7 +564,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9ad55a25", + "id": "8f834a08", "metadata": { "slideshow": { "slide_type": "fragment" @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "5c10a7ef", + "id": "e4239105", "metadata": { "slideshow": { "slide_type": "slide" @@ -628,7 +628,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2a89c7de", + "id": "ef04ee39", "metadata": { "slideshow": { "slide_type": "fragment" @@ -656,7 +656,7 @@ }, { "cell_type": "markdown", - "id": "94fc3d89", + "id": "55557185", "metadata": { "slideshow": { "slide_type": "slide" @@ -679,7 +679,7 @@ { "cell_type": "code", "execution_count": null, - "id": "29dbc512", + "id": "1924b08b", "metadata": { "slideshow": { "slide_type": "fragment" @@ -724,7 +724,7 @@ }, { "cell_type": "markdown", - "id": "710b16b1", + "id": "5b24fca9", "metadata": { "slideshow": { "slide_type": "slide" @@ -741,7 +741,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c4b6b335", + "id": "1e014d73", "metadata": { "slideshow": { "slide_type": "fragment" @@ -775,7 +775,7 @@ }, { "cell_type": "markdown", - "id": "ce180f81", + "id": "05cefdb4", "metadata": { "slideshow": { "slide_type": "slide" @@ -789,7 +789,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0f3f0755", + "id": "5eb2533a", "metadata": { "slideshow": { "slide_type": "fragment" @@ -814,7 +814,7 @@ }, { "cell_type": "markdown", - "id": "516f5c91", + "id": "fc99cda1", "metadata": { "slideshow": { "slide_type": "slide" @@ -859,7 +859,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d8e9e499", + "id": "abafed41", "metadata": { "slideshow": { "slide_type": "fragment" @@ -913,7 +913,7 @@ }, { "cell_type": "markdown", - "id": "ca333a72", + "id": "c23d0ea8", "metadata": { "slideshow": { "slide_type": "slide" @@ -941,7 +941,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d357f1c2", + "id": "7c8ea428", "metadata": { "slideshow": { "slide_type": "fragment" @@ -967,7 +967,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7364ac9c", + "id": "aaaf7358", "metadata": { "slideshow": { "slide_type": "fragment" @@ -1021,7 +1021,7 @@ }, { "cell_type": "markdown", - "id": "9b4a3d7b", + "id": "185c6bf2", "metadata": { "slideshow": { "slide_type": "slide" @@ -1040,7 +1040,7 @@ }, { "cell_type": "markdown", - "id": "23b7b060", + "id": "848d0c2a", "metadata": { "slideshow": { "slide_type": "slide" @@ -1055,7 +1055,7 @@ }, { "cell_type": "markdown", - "id": "60f61c5e", + "id": "686efdba", "metadata": { "slideshow": { "slide_type": "slide" @@ -1086,7 +1086,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.12.2" }, "vscode": { "interpreter": { From 9a60992b6e772461314b495114bef13d74a0753a Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 14:21:31 -0700 Subject: [PATCH 2/8] update text --- gurobi_days_digital_2023/intro_to_gurobipy/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/README.md b/gurobi_days_digital_2023/intro_to_gurobipy/README.md index 0573686..31ed18e 100644 --- a/gurobi_days_digital_2023/intro_to_gurobipy/README.md +++ b/gurobi_days_digital_2023/intro_to_gurobipy/README.md @@ -1,6 +1,5 @@ # Introduction to Gurobi Python API -This notebook was used for the Gurobi Python API session at Gurobi Days Digital 2023. It will walk you through the basics of the Gurobi Python API. -The video of the session can be watched [here](https://vimeo.com/830685647/c7f9971fda) +This notebook was used for the Gurobi Python API session at Gurobi Days Digital. It will walk you through the basics of the Gurobi Python API. ## View the notebook From 7618761c43eb58bcb2654c3ad6ff364486fea2b5 Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 14:22:42 -0700 Subject: [PATCH 3/8] move the folder --- .../intro_to_gurobipy/README.md | 0 .../intro_to_gurobipy/data/glass4.mps.bz2 | Bin .../intro_to_gurobipy/data/portfolio-example.json | 0 .../intro_to_gurobipy/images/card-game.png | Bin .../intro_to_gurobipy/intro_to_gurobipy.ipynb | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename {gurobi_days_digital_2023 => intro_to_gurobipy}/intro_to_gurobipy/README.md (100%) rename {gurobi_days_digital_2023 => intro_to_gurobipy}/intro_to_gurobipy/data/glass4.mps.bz2 (100%) rename {gurobi_days_digital_2023 => intro_to_gurobipy}/intro_to_gurobipy/data/portfolio-example.json (100%) rename {gurobi_days_digital_2023 => intro_to_gurobipy}/intro_to_gurobipy/images/card-game.png (100%) rename {gurobi_days_digital_2023 => intro_to_gurobipy}/intro_to_gurobipy/intro_to_gurobipy.ipynb (100%) diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/README.md b/intro_to_gurobipy/intro_to_gurobipy/README.md similarity index 100% rename from gurobi_days_digital_2023/intro_to_gurobipy/README.md rename to intro_to_gurobipy/intro_to_gurobipy/README.md diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/data/glass4.mps.bz2 b/intro_to_gurobipy/intro_to_gurobipy/data/glass4.mps.bz2 similarity index 100% rename from gurobi_days_digital_2023/intro_to_gurobipy/data/glass4.mps.bz2 rename to intro_to_gurobipy/intro_to_gurobipy/data/glass4.mps.bz2 diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/data/portfolio-example.json b/intro_to_gurobipy/intro_to_gurobipy/data/portfolio-example.json similarity index 100% rename from gurobi_days_digital_2023/intro_to_gurobipy/data/portfolio-example.json rename to intro_to_gurobipy/intro_to_gurobipy/data/portfolio-example.json diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/images/card-game.png b/intro_to_gurobipy/intro_to_gurobipy/images/card-game.png similarity index 100% rename from gurobi_days_digital_2023/intro_to_gurobipy/images/card-game.png rename to intro_to_gurobipy/intro_to_gurobipy/images/card-game.png diff --git a/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb similarity index 100% rename from gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb rename to intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb From 0d2e951063fe03470971f014dc640bc270826555 Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 14:30:56 -0700 Subject: [PATCH 4/8] update readme --- intro_to_gurobipy/intro_to_gurobipy/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intro_to_gurobipy/intro_to_gurobipy/README.md b/intro_to_gurobipy/intro_to_gurobipy/README.md index 31ed18e..8ab3ff4 100644 --- a/intro_to_gurobipy/intro_to_gurobipy/README.md +++ b/intro_to_gurobipy/intro_to_gurobipy/README.md @@ -3,7 +3,7 @@ This notebook was used for the Gurobi Python API session at Gurobi Days Digital. ## View the notebook -[Google Colab Link](https://colab.research.google.com/github/Gurobi/modeling-examples/blob/master/gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb) +[Google Colab Link](https://colab.research.google.com/github/Gurobi/modeling-examples/blob/master/intro_to_gurobipy/intro_to_gurobipy.ipynb) ---- For details on licensing or on running the notebooks, see the overview on [Modeling Examples](../../) From 8247f9c8717747ec43719c1bb9bcf1530caf083a Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 14:31:52 -0700 Subject: [PATCH 5/8] update the link --- .../intro_to_gurobipy/intro_to_gurobipy.ipynb | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb index f5e43cc..98a69a8 100644 --- a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb +++ b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "289dca03", + "id": "aae0f1e0", "metadata": { "slideshow": { "slide_type": "slide" @@ -19,7 +19,7 @@ }, { "cell_type": "markdown", - "id": "2e141a36", + "id": "4886f223", "metadata": { "slideshow": { "slide_type": "slide" @@ -30,7 +30,7 @@ "- Visit [Gurobi modeling-examples](https://github.com/Gurobi/modeling-examples) repository \n", "- Clone the repository which contains this notebook and other examples or download it\n", "by clicking [here](https://github.com/Gurobi/modeling-examples/archive/refs/heads/master.zip)\n", - "- Navigate to folder __gurobi_days_digital_2023/intro_to_gurobipy__\n", + "- Navigate to folder __intro_to_gurobipy__\n", "- [Start Jupyter Notebook Server](https://docs.jupyter.org/en/latest/running.html#id2)\n", "- Open the notebook in Jupyter Notebook\n", "- The notebook will install the gurobipy package and other dependencies. The Gurobi pip package includes a size-limited trial license that will allow you to run the notebook" @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7777d733", + "id": "cf907810", "metadata": { "slideshow": { "slide_type": "slide" @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "c7ce01c5", + "id": "d897e49c", "metadata": { "slideshow": { "slide_type": "slide" @@ -76,7 +76,7 @@ }, { "cell_type": "markdown", - "id": "84f9fe54", + "id": "98f0c164", "metadata": { "slideshow": { "slide_type": "slide" @@ -98,7 +98,7 @@ }, { "cell_type": "markdown", - "id": "e6d9b8b2", + "id": "4a93e6b2", "metadata": { "slideshow": { "slide_type": "slide" @@ -136,7 +136,7 @@ }, { "cell_type": "markdown", - "id": "f40e1b24", + "id": "fd2775ec", "metadata": { "slideshow": { "slide_type": "slide" @@ -157,7 +157,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dd78e032", + "id": "26ccb11a", "metadata": { "code_folding": [ 22 @@ -199,7 +199,7 @@ }, { "cell_type": "markdown", - "id": "b539fb10", + "id": "d867a3cb", "metadata": { "slideshow": { "slide_type": "slide" @@ -228,7 +228,7 @@ }, { "cell_type": "markdown", - "id": "975ff7ad", + "id": "057765ad", "metadata": { "slideshow": { "slide_type": "slide" @@ -259,7 +259,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6d1bbdb6", + "id": "8e3e45bf", "metadata": { "slideshow": { "slide_type": "fragment" @@ -286,7 +286,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4f28285b", + "id": "a2f0b69e", "metadata": {}, "outputs": [], "source": [ @@ -298,7 +298,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d58b0cfb", + "id": "6d88a28a", "metadata": {}, "outputs": [], "source": [ @@ -312,7 +312,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4c08978c", + "id": "85713ffb", "metadata": { "slideshow": { "slide_type": "fragment" @@ -338,7 +338,7 @@ }, { "cell_type": "markdown", - "id": "968e774b", + "id": "d86bacf9", "metadata": { "slideshow": { "slide_type": "slide" @@ -373,7 +373,7 @@ }, { "cell_type": "markdown", - "id": "4fe89c26", + "id": "7f0177cb", "metadata": { "slideshow": { "slide_type": "slide" @@ -392,7 +392,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ff80bbca", + "id": "70b5f668", "metadata": { "slideshow": { "slide_type": "fragment" @@ -422,7 +422,7 @@ }, { "cell_type": "markdown", - "id": "352fa1e4", + "id": "89b3d23f", "metadata": { "slideshow": { "slide_type": "slide" @@ -449,7 +449,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8b5bfdf5", + "id": "4d532b26", "metadata": { "slideshow": { "slide_type": "fragment" @@ -469,7 +469,7 @@ }, { "cell_type": "markdown", - "id": "28c8800e", + "id": "8e815095", "metadata": { "slideshow": { "slide_type": "slide" @@ -496,7 +496,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b4a11976", + "id": "a055a6ff", "metadata": { "slideshow": { "slide_type": "fragment" @@ -535,7 +535,7 @@ }, { "cell_type": "markdown", - "id": "1a66983d", + "id": "500bc5af", "metadata": { "slideshow": { "slide_type": "slide" @@ -564,7 +564,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f834a08", + "id": "be75ff75", "metadata": { "slideshow": { "slide_type": "fragment" @@ -609,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "e4239105", + "id": "a00d33e3", "metadata": { "slideshow": { "slide_type": "slide" @@ -628,7 +628,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ef04ee39", + "id": "db345945", "metadata": { "slideshow": { "slide_type": "fragment" @@ -656,7 +656,7 @@ }, { "cell_type": "markdown", - "id": "55557185", + "id": "8b403781", "metadata": { "slideshow": { "slide_type": "slide" @@ -679,7 +679,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1924b08b", + "id": "7ff2b7cc", "metadata": { "slideshow": { "slide_type": "fragment" @@ -724,7 +724,7 @@ }, { "cell_type": "markdown", - "id": "5b24fca9", + "id": "eb627d15", "metadata": { "slideshow": { "slide_type": "slide" @@ -741,7 +741,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1e014d73", + "id": "f60e8ffc", "metadata": { "slideshow": { "slide_type": "fragment" @@ -775,7 +775,7 @@ }, { "cell_type": "markdown", - "id": "05cefdb4", + "id": "05547bf2", "metadata": { "slideshow": { "slide_type": "slide" @@ -789,7 +789,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5eb2533a", + "id": "36214b31", "metadata": { "slideshow": { "slide_type": "fragment" @@ -814,7 +814,7 @@ }, { "cell_type": "markdown", - "id": "fc99cda1", + "id": "6471825d", "metadata": { "slideshow": { "slide_type": "slide" @@ -859,7 +859,7 @@ { "cell_type": "code", "execution_count": null, - "id": "abafed41", + "id": "170805d1", "metadata": { "slideshow": { "slide_type": "fragment" @@ -913,7 +913,7 @@ }, { "cell_type": "markdown", - "id": "c23d0ea8", + "id": "17d42d14", "metadata": { "slideshow": { "slide_type": "slide" @@ -941,7 +941,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7c8ea428", + "id": "2dfa0562", "metadata": { "slideshow": { "slide_type": "fragment" @@ -967,7 +967,7 @@ { "cell_type": "code", "execution_count": null, - "id": "aaaf7358", + "id": "f0751e84", "metadata": { "slideshow": { "slide_type": "fragment" @@ -1021,7 +1021,7 @@ }, { "cell_type": "markdown", - "id": "185c6bf2", + "id": "286f54d3", "metadata": { "slideshow": { "slide_type": "slide" @@ -1040,7 +1040,7 @@ }, { "cell_type": "markdown", - "id": "848d0c2a", + "id": "60cb57da", "metadata": { "slideshow": { "slide_type": "slide" @@ -1055,7 +1055,7 @@ }, { "cell_type": "markdown", - "id": "686efdba", + "id": "fb64859f", "metadata": { "slideshow": { "slide_type": "slide" From 3d010892ec0f62a8683babb7144b22b492017dbc Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 18:49:41 -0700 Subject: [PATCH 6/8] update links --- .../intro_to_gurobipy/intro_to_gurobipy.ipynb | 140 +++++++++--------- 1 file changed, 69 insertions(+), 71 deletions(-) diff --git a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb index 98a69a8..8f83ca4 100644 --- a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb +++ b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "aae0f1e0", + "id": "ff267917", "metadata": { "slideshow": { "slide_type": "slide" @@ -19,7 +19,7 @@ }, { "cell_type": "markdown", - "id": "4886f223", + "id": "c7add96f", "metadata": { "slideshow": { "slide_type": "slide" @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": null, - "id": "cf907810", + "id": "becedc5b", "metadata": { "slideshow": { "slide_type": "slide" @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "d897e49c", + "id": "e6a335dc", "metadata": { "slideshow": { "slide_type": "slide" @@ -76,7 +76,7 @@ }, { "cell_type": "markdown", - "id": "98f0c164", + "id": "bf8838b1", "metadata": { "slideshow": { "slide_type": "slide" @@ -85,11 +85,10 @@ "source": [ "## How to Install gurobipy?\n", "\n", - "There are three main approaches to install gurobipy on any operating systems such as Linux, Windows, or macOS.\n", + "There are two main approaches to install gurobipy on any operating systems such as Linux, Windows, or macOS.\n", "\n", - "- [Pip](https://www.gurobi.com/documentation/10.0/quickstart_mac/cs_using_pip_to_install_gr.html#subsubsection:pip)\n", - "- [Conda](https://www.gurobi.com/documentation/10.0/quickstart_mac/cs_anaconda_and_grb_conda_.html#subsubsection:Anaconda)\n", - "- [Manual installation via the Gurobi distribution package](https://www.gurobi.com/documentation/10.0/quickstart_mac/cs_manual_installation.html#subsubsection:manualinstall)\n", + "- Pip\n", + "- Conda\n", "\n", "Relevant Knowledge Base (KB) articles:\n", "- [Which Python versions are supported by Gurobi?](https://support.gurobi.com/hc/en-us/articles/360013195212)\n", @@ -98,7 +97,7 @@ }, { "cell_type": "markdown", - "id": "4a93e6b2", + "id": "6a5efc36", "metadata": { "slideshow": { "slide_type": "slide" @@ -136,7 +135,7 @@ }, { "cell_type": "markdown", - "id": "fd2775ec", + "id": "5b2738d7", "metadata": { "slideshow": { "slide_type": "slide" @@ -157,7 +156,7 @@ { "cell_type": "code", "execution_count": null, - "id": "26ccb11a", + "id": "4a1cf970", "metadata": { "code_folding": [ 22 @@ -199,7 +198,7 @@ }, { "cell_type": "markdown", - "id": "d867a3cb", + "id": "1db40407", "metadata": { "slideshow": { "slide_type": "slide" @@ -228,7 +227,7 @@ }, { "cell_type": "markdown", - "id": "057765ad", + "id": "e0a8c8df", "metadata": { "slideshow": { "slide_type": "slide" @@ -237,29 +236,29 @@ "source": [ " ## Extented Data Structures in Gurobi Python API\n", " \n", - " - [tuplelist()](https://www.gurobi.com/documentation/10.0/refman/py_tuplelist.html)\n", + " - [tuplelist()](https://www.gurobi.com/documentation/current/refman/py_tuplelist.html)\n", " - A sub-class of Python list \n", " - Important methods to build sub-lists efficiently \n", - " - [tuplelist.select(pattern)](https://www.gurobi.com/documentation/10.0/refman/py_tuplelist_select.html) --> tuplelist()\n", + " - [tuplelist.select(pattern)](https://www.gurobi.com/documentation/current/refman/py_tuplelist_select.html) --> tuplelist()\n", " \n", " \n", " \n", - "- [tupledict()](https://www.gurobi.com/documentation/10.0/refman/py_tupledict.html)\n", + "- [tupledict()](https://www.gurobi.com/documentation/current/refman/py_tupledict.html)\n", " - A sub-class of Python dict\n", " - The keys of a tupledict() are stored as tuplelist() and the values are Gurobi variable objects\n", " - Important methods to build linear expressions efficiently:\n", - " - [tupledict.select(pattern)](https://www.gurobi.com/documentation/10.0/refman/py_tupledict_select.html) --> List\n", - " - [tupledict.sum(pattern)](https://www.gurobi.com/documentation/10.0/refman/py_tupledict_sum.html) --> LinExpr()\n", - " - [tupledict.prod(coeff, pattern)](https://www.gurobi.com/documentation/10.0/refman/py_tupledict_prod.html) --> LinExpr()\n", + " - [tupledict.select(pattern)](https://www.gurobi.com/documentation/current/refman/py_tupledict_select.html) --> List\n", + " - [tupledict.sum(pattern)](https://www.gurobi.com/documentation/current/refman/py_tupledict_sum.html) --> LinExpr()\n", + " - [tupledict.prod(coeff, pattern)](https://www.gurobi.com/documentation/current/refman/py_tupledict_prod.html) --> LinExpr()\n", " \n", " \n", - "- [multidict()](https://www.gurobi.com/documentation/10.0/refman/py_multidict.html): A convenience function to define multiple dictionaries in one statement." + "- [multidict()](https://www.gurobi.com/documentation/current/refman/py_multidict.html): A convenience function to define multiple dictionaries in one statement." ] }, { "cell_type": "code", "execution_count": null, - "id": "8e3e45bf", + "id": "c4540670", "metadata": { "slideshow": { "slide_type": "fragment" @@ -286,7 +285,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a2f0b69e", + "id": "4763eaef", "metadata": {}, "outputs": [], "source": [ @@ -298,7 +297,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6d88a28a", + "id": "812389ed", "metadata": {}, "outputs": [], "source": [ @@ -312,7 +311,7 @@ { "cell_type": "code", "execution_count": null, - "id": "85713ffb", + "id": "b1260ab8", "metadata": { "slideshow": { "slide_type": "fragment" @@ -338,14 +337,14 @@ }, { "cell_type": "markdown", - "id": "d86bacf9", + "id": "f2eba8ea", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Environments](https://www.gurobi.com/documentation/10.0/refman/py_env2.html)\n", + "## [Environments](https://www.gurobi.com/documentation/current/refman/py_env2.html)\n", "\n", "```\n", "+--------------------------------------------+\n", @@ -368,20 +367,20 @@ "- Using remote resources such as floating, cloud, or compute server licenses for optimization\n", "- Garbage collection when using Jupyter notebooks\n", "\n", - "Note: It is better to create new environments via the context manager." + "Note: It is better to create new environments via the [context manager](https://support.gurobi.com/hc/en-us/articles/4424054948881-How-do-I-manage-Gurobi-environments-in-gurobipy)." ] }, { "cell_type": "markdown", - "id": "7f0177cb", + "id": "d822c113", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Model](https://www.gurobi.com/documentation/10.0/refman/py_model.html)\n", - "Model building in the [Python API](https://www.gurobi.com/documentation/10.0/refman/py_python_api_overview.html) is object oriented. The reference manual contains [a full list of methods](https://www.gurobi.com/documentation/10.0/refman/py_python_api_details.html#sec:Python-details) on a model object. \n", + "## [Model](https://www.gurobi.com/documentation/current/refman/py_model.html)\n", + "Model building in the [Python API](https://www.gurobi.com/documentation/current/refman/py_python_api_overview.html) is object oriented. The reference manual contains [a full list of methods](https://www.gurobi.com/documentation/current/refman/py_python_api_details.html#sec:Python-details) on a model object. \n", "\n", "The signature for constructing a model object is:\n", "```\n", @@ -392,7 +391,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70b5f668", + "id": "3ece5640", "metadata": { "slideshow": { "slide_type": "fragment" @@ -422,7 +421,7 @@ }, { "cell_type": "markdown", - "id": "89b3d23f", + "id": "39e336b8", "metadata": { "slideshow": { "slide_type": "slide" @@ -431,7 +430,7 @@ "source": [ "## Decision Variables\n", "\n", - "Since variables are associated with a particular model object, use the [Model.addVar()](https://www.gurobi.com/documentation/10.0/refman/py_model_addvar.html#pythonmethod:Model.addVar) method to create a Gurobi variable object ([Var](https://www.gurobi.com/documentation/10.0/refman/py_var.html)):\n", + "Since variables are associated with a particular model object, use the [Model.addVar()](https://www.gurobi.com/documentation/current/refman/py_model_addvar.html#pythonmethod:Model.addVar) method to create a Gurobi variable object ([Var](https://www.gurobi.com/documentation/current/refman/py_var.html)):\n", "```\n", "Model.addVar(lb=0, ub=float(\"inf\"), obj=0, vtype=GRB.CONTINUOUS, name=\"\", column=None)\n", "```\n", @@ -449,7 +448,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4d532b26", + "id": "00a3f876", "metadata": { "slideshow": { "slide_type": "fragment" @@ -469,14 +468,14 @@ }, { "cell_type": "markdown", - "id": "8e815095", + "id": "da2b7c97", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Model.addVars()](https://www.gurobi.com/documentation/10.0/refman/py_model_addvars.html#pythonmethod:Model.addVar)\n", + "## [Model.addVars()](https://www.gurobi.com/documentation/current/refman/py_model_addvars.html#pythonmethod:Model.addVar)\n", "\n", "To add multiple decision variables to the model, use the Model.addVars() method which returns a Gurobi tupledict object containing the newly created variables:\n", "```\n", @@ -496,7 +495,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a055a6ff", + "id": "b39a6221", "metadata": { "slideshow": { "slide_type": "fragment" @@ -535,7 +534,7 @@ }, { "cell_type": "markdown", - "id": "500bc5af", + "id": "88c44161", "metadata": { "slideshow": { "slide_type": "slide" @@ -543,12 +542,12 @@ }, "source": [ "## Constraints\n", - "Like variables, constraints are also associated with a model. Use the method [Model.addConstr()](https://www.gurobi.com/documentation/10.0/refman/py_model_addconstr.html) to add a constraint to a model.\n", + "Like variables, constraints are also associated with a model. Use the method [Model.addConstr()](https://www.gurobi.com/documentation/current/refman/py_model_addconstr.html) to add a constraint to a model.\n", "```\n", "Model.addConstr(constr, name=\"\")\n", "```\n", "\n", - "`constr` is a [TempConstr](https://www.gurobi.com/documentation/10.0/refman/py_tempconstr.html#pythonclass:TempConstr) object that can take different types:\n", + "`constr` is a [TempConstr](https://www.gurobi.com/documentation/current/refman/py_tempconstr.html#pythonclass:TempConstr) object that can take different types:\n", "\n", "- Linear Constraint: `x + y <= 1` \n", "- Ranged Linear Constraint: `x + y == [1, 3]`\n", @@ -564,7 +563,7 @@ { "cell_type": "code", "execution_count": null, - "id": "be75ff75", + "id": "600cc5c8", "metadata": { "slideshow": { "slide_type": "fragment" @@ -609,14 +608,14 @@ }, { "cell_type": "markdown", - "id": "a00d33e3", + "id": "23e0adc0", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Model.addConstrs](https://www.gurobi.com/documentation/10.0/refman/py_model_addconstrs.html)\n", + "## [Model.addConstrs](https://www.gurobi.com/documentation/current/refman/py_model_addconstrs.html)\n", "\n", "To add multiple constraints to the model, use the Model.addConstrs() method which returns a Gurobi tupledict that contains the newly created constraints:\n", "\n", @@ -628,7 +627,7 @@ { "cell_type": "code", "execution_count": null, - "id": "db345945", + "id": "1c2ea69a", "metadata": { "slideshow": { "slide_type": "fragment" @@ -656,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "8b403781", + "id": "87741684", "metadata": { "slideshow": { "slide_type": "slide" @@ -665,13 +664,13 @@ "source": [ "## Objective Function\n", "\n", - "To set the model objective equal to a linear or a quadratic expression, use the [Model.setObjective()](https://www.gurobi.com/documentation/10.0/refman/py_model_setobjective.html) method:\n", + "To set the model objective equal to a linear or a quadratic expression, use the [Model.setObjective()](https://www.gurobi.com/documentation/current/refman/py_model_setobjective.html) method:\n", "```\n", "Model.setObjective(expr, sense=GRB.MINIMIZE)\n", "```\n", "- expr: \n", - " - [LinExpr()](https://www.gurobi.com/documentation/10.0/refman/py_lex.html): constant + coefficient-variable pairs capturing linear terms\n", - " - [QuadExpr()](https://www.gurobi.com/documentation/10.0/refman/py_qex.html): linear expression + list of coefficient-variable-variable triples\n", + " - [LinExpr()](https://www.gurobi.com/documentation/current/refman/py_lex.html): constant + coefficient-variable pairs capturing linear terms\n", + " - [QuadExpr()](https://www.gurobi.com/documentation/current/refman/py_qex.html): linear expression + list of coefficient-variable-variable triples\n", "- sense:\n", " - GRB.MINIMIZE (default) or GRB.MAXIMIZE" ] @@ -679,7 +678,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7ff2b7cc", + "id": "0774a681", "metadata": { "slideshow": { "slide_type": "fragment" @@ -724,14 +723,14 @@ }, { "cell_type": "markdown", - "id": "eb627d15", + "id": "af44c698", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Attributes](https://www.gurobi.com/documentation/10.0/refman/attributes.html)\n", + "## [Attributes](https://www.gurobi.com/documentation/current/refman/attributes.html)\n", "\n", "The primary mechanism for querying and modifying properties of a Gurobi object is through the attribute interface. You can see the complete set of Gurobi attributes in the reference linked above.\n", "\n", @@ -741,7 +740,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f60e8ffc", + "id": "49c1ecd3", "metadata": { "slideshow": { "slide_type": "fragment" @@ -753,7 +752,7 @@ "import gurobipy as gp\n", "from gurobipy import GRB\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/gurobi_days_digital_2023/intro_to_gurobipy/data/glass4.mps.bz2\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/glass4.mps.bz2\"\n", "path_to_file, _ = urllib.request.urlretrieve(url, \"./glass4.mps.bz2\")\n", "\n", "# running notebook locally:\n", @@ -775,21 +774,21 @@ }, { "cell_type": "markdown", - "id": "05547bf2", + "id": "dca53115", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [Parameters](https://www.gurobi.com/documentation/10.0/refman/parameter_descriptions.html)\n", + "## [Parameters](https://www.gurobi.com/documentation/current/refman/parameter_descriptions.html)\n", "Parameters control the mechanics of the Gurobi Optimizer." ] }, { "cell_type": "code", "execution_count": null, - "id": "36214b31", + "id": "61277a1d", "metadata": { "slideshow": { "slide_type": "fragment" @@ -801,7 +800,7 @@ "import gurobipy as gp\n", "from gurobipy import GRB\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/gurobi_days_digital_2023/intro_to_gurobipy/data/glass4.mps.bz2\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/glass4.mps.bz2\"\n", "path_to_file, _ = urllib.request.urlretrieve(url, \"./glass4.mps.bz2\")\n", "\n", "# running notebook locally:\n", @@ -814,14 +813,14 @@ }, { "cell_type": "markdown", - "id": "6471825d", + "id": "f3c629c6", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ - "## [General Constraints](https://www.gurobi.com/documentation/10.0/refman/constraints.html#subsubsection:GeneralConstraints)\n", + "## [General Constraints](https://www.gurobi.com/documentation/current/refman/constraints.html#subsubsection:GeneralConstraints)\n", "\n", "General constraints allow defining certain variable relationships easily without going to the hardship of modeling these relationships in terms of the more fundamental constraints of MIP. Capturing a single one of these general constraints can often require a large set of constraints and a number of auxiliary decision variables.\n", "\n", @@ -859,7 +858,7 @@ { "cell_type": "code", "execution_count": null, - "id": "170805d1", + "id": "66195906", "metadata": { "slideshow": { "slide_type": "fragment" @@ -913,7 +912,7 @@ }, { "cell_type": "markdown", - "id": "17d42d14", + "id": "11d889db", "metadata": { "slideshow": { "slide_type": "slide" @@ -941,7 +940,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2dfa0562", + "id": "9a94383c", "metadata": { "slideshow": { "slide_type": "fragment" @@ -953,7 +952,7 @@ "from urllib.request import urlopen\n", "import numpy as np\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/gurobi_days_digital_2023/intro_to_gurobipy/data/portfolio-example.json\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/portfolio-example.json\"\n", "response = urlopen(url)\n", "data = json.loads(response.read())\n", "\n", @@ -967,7 +966,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f0751e84", + "id": "e47a1de3", "metadata": { "slideshow": { "slide_type": "fragment" @@ -1021,7 +1020,7 @@ }, { "cell_type": "markdown", - "id": "286f54d3", + "id": "d132cb20", "metadata": { "slideshow": { "slide_type": "slide" @@ -1033,14 +1032,13 @@ "- Do ensure the separation between your model and data\n", "- Do use descriptive names where appropriate\n", "- Exploit sparsity when creating variables/constraints - Only create variables/constraints for valid combinations\n", - "- Do consider using the Package [gurobipy stubs](https://support.gurobi.com/hc/en-us/articles/4415139954449-How-do-I-enable-type-hinting-in-the-Gurobi-Python-API-) for Type Hinting\n", "- Don’t forget to dispose of your model and environment\n", "- Use the documentation" ] }, { "cell_type": "markdown", - "id": "60cb57da", + "id": "8e29bb28", "metadata": { "slideshow": { "slide_type": "slide" @@ -1055,7 +1053,7 @@ }, { "cell_type": "markdown", - "id": "fb64859f", + "id": "8150f61c", "metadata": { "slideshow": { "slide_type": "slide" @@ -1063,8 +1061,8 @@ }, "source": [ "## Resources\n", - "- [Gurobi Python Documentation](https://www.gurobi.com/documentation/10.0/refman/py_python_api_overview.html)\n", - "- [Gurobi Python Examples](https://www.gurobi.com/documentation/10.0/examples/python_examples.html)\n", + "- [Gurobi Python Documentation](https://www.gurobi.com/documentation/current/refman/py_python_api_overview.html)\n", + "- [Gurobi Python Examples](https://www.gurobi.com/documentation/current/examples/python_examples.html)\n", "- [Gurobi Jupyter Notebook Modeling Examples](https://www.gurobi.com/jupyter_models/)\n", "- [Gurobi Knowledge Base](https://support.gurobi.com/hc/en-us/categories/360000840331-Knowledge-Base)" ] From b21f7bd85cdaa9930b882bdbc72c72e5a1a8a11c Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 18:58:55 -0700 Subject: [PATCH 7/8] update the path --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 8f9b7be..4ace914 100644 --- a/tox.ini +++ b/tox.ini @@ -45,7 +45,7 @@ commands = ./farm_planning/farm_planning.ipynb \ ./food_manufacturing/food_manufacture_1.ipynb \ ./food_manufacturing/food_manufacture_2.ipynb \ - ./gurobi_days_digital_2023/intro_to_gurobipy/intro_to_gurobipy.ipynb \ + ./intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb \ ./linear_regression/l0_regression.ipynb \ ./logical_design/logical_design.ipynb \ ./lost_luggage_distribution/lost_luggage_distribution.ipynb \ From 829870a2af85461b8db42527d4ea72dedea89cb2 Mon Sep 17 00:00:00 2001 From: aramon Date: Fri, 21 Jun 2024 19:12:11 -0700 Subject: [PATCH 8/8] update path to example files --- .../intro_to_gurobipy/intro_to_gurobipy.ipynb | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb index 8f83ca4..50269bb 100644 --- a/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb +++ b/intro_to_gurobipy/intro_to_gurobipy/intro_to_gurobipy.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ff267917", + "id": "9985f7b1", "metadata": { "slideshow": { "slide_type": "slide" @@ -19,7 +19,7 @@ }, { "cell_type": "markdown", - "id": "c7add96f", + "id": "a66b4594", "metadata": { "slideshow": { "slide_type": "slide" @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": null, - "id": "becedc5b", + "id": "b319a3b4", "metadata": { "slideshow": { "slide_type": "slide" @@ -57,7 +57,7 @@ }, { "cell_type": "markdown", - "id": "e6a335dc", + "id": "e5f5db7f", "metadata": { "slideshow": { "slide_type": "slide" @@ -76,7 +76,7 @@ }, { "cell_type": "markdown", - "id": "bf8838b1", + "id": "5f92f0e2", "metadata": { "slideshow": { "slide_type": "slide" @@ -97,7 +97,7 @@ }, { "cell_type": "markdown", - "id": "6a5efc36", + "id": "e3f02815", "metadata": { "slideshow": { "slide_type": "slide" @@ -135,7 +135,7 @@ }, { "cell_type": "markdown", - "id": "5b2738d7", + "id": "5eb49aef", "metadata": { "slideshow": { "slide_type": "slide" @@ -156,7 +156,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4a1cf970", + "id": "c51e50c5", "metadata": { "code_folding": [ 22 @@ -198,7 +198,7 @@ }, { "cell_type": "markdown", - "id": "1db40407", + "id": "c6d94dcd", "metadata": { "slideshow": { "slide_type": "slide" @@ -227,7 +227,7 @@ }, { "cell_type": "markdown", - "id": "e0a8c8df", + "id": "f99590d2", "metadata": { "slideshow": { "slide_type": "slide" @@ -258,7 +258,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c4540670", + "id": "a5637577", "metadata": { "slideshow": { "slide_type": "fragment" @@ -285,7 +285,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4763eaef", + "id": "8a45c285", "metadata": {}, "outputs": [], "source": [ @@ -297,7 +297,7 @@ { "cell_type": "code", "execution_count": null, - "id": "812389ed", + "id": "67191848", "metadata": {}, "outputs": [], "source": [ @@ -311,7 +311,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b1260ab8", + "id": "517262d6", "metadata": { "slideshow": { "slide_type": "fragment" @@ -337,7 +337,7 @@ }, { "cell_type": "markdown", - "id": "f2eba8ea", + "id": "87d60197", "metadata": { "slideshow": { "slide_type": "slide" @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "d822c113", + "id": "dbd8d9ad", "metadata": { "slideshow": { "slide_type": "slide" @@ -391,7 +391,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3ece5640", + "id": "31c772ec", "metadata": { "slideshow": { "slide_type": "fragment" @@ -421,7 +421,7 @@ }, { "cell_type": "markdown", - "id": "39e336b8", + "id": "cb757e97", "metadata": { "slideshow": { "slide_type": "slide" @@ -448,7 +448,7 @@ { "cell_type": "code", "execution_count": null, - "id": "00a3f876", + "id": "81839558", "metadata": { "slideshow": { "slide_type": "fragment" @@ -468,7 +468,7 @@ }, { "cell_type": "markdown", - "id": "da2b7c97", + "id": "51071459", "metadata": { "slideshow": { "slide_type": "slide" @@ -495,7 +495,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b39a6221", + "id": "b2948b40", "metadata": { "slideshow": { "slide_type": "fragment" @@ -534,7 +534,7 @@ }, { "cell_type": "markdown", - "id": "88c44161", + "id": "61214373", "metadata": { "slideshow": { "slide_type": "slide" @@ -563,7 +563,7 @@ { "cell_type": "code", "execution_count": null, - "id": "600cc5c8", + "id": "87d043c9", "metadata": { "slideshow": { "slide_type": "fragment" @@ -608,7 +608,7 @@ }, { "cell_type": "markdown", - "id": "23e0adc0", + "id": "b49864fc", "metadata": { "slideshow": { "slide_type": "slide" @@ -627,7 +627,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1c2ea69a", + "id": "ee87d5e7", "metadata": { "slideshow": { "slide_type": "fragment" @@ -655,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "87741684", + "id": "c6e35294", "metadata": { "slideshow": { "slide_type": "slide" @@ -678,7 +678,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0774a681", + "id": "4e83785a", "metadata": { "slideshow": { "slide_type": "fragment" @@ -723,7 +723,7 @@ }, { "cell_type": "markdown", - "id": "af44c698", + "id": "82e22abf", "metadata": { "slideshow": { "slide_type": "slide" @@ -740,7 +740,7 @@ { "cell_type": "code", "execution_count": null, - "id": "49c1ecd3", + "id": "475ea4d5", "metadata": { "slideshow": { "slide_type": "fragment" @@ -752,7 +752,7 @@ "import gurobipy as gp\n", "from gurobipy import GRB\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/glass4.mps.bz2\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/intro_to_gurobipy/data/glass4.mps.bz2\"\n", "path_to_file, _ = urllib.request.urlretrieve(url, \"./glass4.mps.bz2\")\n", "\n", "# running notebook locally:\n", @@ -774,7 +774,7 @@ }, { "cell_type": "markdown", - "id": "dca53115", + "id": "ca8ac2a1", "metadata": { "slideshow": { "slide_type": "slide" @@ -788,7 +788,7 @@ { "cell_type": "code", "execution_count": null, - "id": "61277a1d", + "id": "8d5f7434", "metadata": { "slideshow": { "slide_type": "fragment" @@ -800,7 +800,7 @@ "import gurobipy as gp\n", "from gurobipy import GRB\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/glass4.mps.bz2\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/intro_to_gurobipy/data/glass4.mps.bz2\"\n", "path_to_file, _ = urllib.request.urlretrieve(url, \"./glass4.mps.bz2\")\n", "\n", "# running notebook locally:\n", @@ -813,7 +813,7 @@ }, { "cell_type": "markdown", - "id": "f3c629c6", + "id": "97615d56", "metadata": { "slideshow": { "slide_type": "slide" @@ -858,7 +858,7 @@ { "cell_type": "code", "execution_count": null, - "id": "66195906", + "id": "5e1ba317", "metadata": { "slideshow": { "slide_type": "fragment" @@ -912,7 +912,7 @@ }, { "cell_type": "markdown", - "id": "11d889db", + "id": "a2314369", "metadata": { "slideshow": { "slide_type": "slide" @@ -940,7 +940,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9a94383c", + "id": "18a48e9e", "metadata": { "slideshow": { "slide_type": "fragment" @@ -952,7 +952,7 @@ "from urllib.request import urlopen\n", "import numpy as np\n", "\n", - "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/data/portfolio-example.json\"\n", + "url = \"https://raw.githubusercontent.com/Gurobi/modeling-examples/master/intro_to_gurobipy/intro_to_gurobipy/data/portfolio-example.json\"\n", "response = urlopen(url)\n", "data = json.loads(response.read())\n", "\n", @@ -966,7 +966,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e47a1de3", + "id": "3d1519b2", "metadata": { "slideshow": { "slide_type": "fragment" @@ -1020,7 +1020,7 @@ }, { "cell_type": "markdown", - "id": "d132cb20", + "id": "48c99d33", "metadata": { "slideshow": { "slide_type": "slide" @@ -1038,7 +1038,7 @@ }, { "cell_type": "markdown", - "id": "8e29bb28", + "id": "5e8e9773", "metadata": { "slideshow": { "slide_type": "slide" @@ -1053,7 +1053,7 @@ }, { "cell_type": "markdown", - "id": "8150f61c", + "id": "44aff1db", "metadata": { "slideshow": { "slide_type": "slide"