Veroeffentlichung: Lizenzen, README, Colab-Entscheidung, JupyterLab im Image
Sechs Dinge, alle fuer das jetzt oeffentliche Repository. LIZENZEN. LICENSE traegt die MIT-Lizenz fuer den Programmcode (alle .py, Notebooks, Dockerfile, pyproject.toml), LICENSE-TEXT.md die CC BY-SA 4.0 fuer Buchtext, PDF, Website und Diagramme. Beide Dateien nennen ausdruecklich, was sie abdecken und was nicht - ein Codeblock im Buchtext bleibt Programmcode und steht unter MIT. Vorher hatte das Repository gar keine Lizenz, womit standardmaessig "alle Rechte vorbehalten" galt und niemand die 76 Programme haette weiterverwenden duerfen. COLAB. COLAB_BASIS_URL steht jetzt auf "". Der Platzhalter zeigte auf GitHub, das Repository liegt auf einer eigenen Forgejo-Instanz - und Colab oeffnet Notebooks NUR aus GitHub, Google Drive oder einem Upload. Die URL-Form colab.research.google.com/github/... ist fest auf GitHub verdrahtet; eine selbstgehostete Adresse dort einzusetzen ergaebe keinen Link zum eigenen Server, sondern einen toten GitHub-Link. Der Kommentar im Quelltext ging von GitHub aus und war damit selbst irrefuehrend; er ist ersetzt. Verloren geht nichts: Die 25 Notebooks liegen neben der Website und bekommen einen echten Download-Link, jetzt mit dem Hinweis, was man damit tut - "herunterladen und in Jupyter oeffnen, in Colab hochladen oder mit dem Kurs-Image starten". JUPYTERLAB IM KURS-IMAGE. Neue pyproject-Gruppe [notebook] mit jupyterlab, die Notebooks werden ins Image kopiert, und ein kleiner Startbefehl macht beide Betriebsarten ohne --entrypoint moeglich: ohne Argument JupyterLab, mit Argument ein einzelnes Programm. Gebaut und geprueft - Rucksack.py laeuft, JupyterLab antwortet mit HTTP 200 und zeigt alle 25 Notebooks. Image 1,31 -> 1,46 GB. Es laeuft ohne Token, deshalb im README die Portfreigabe an 127.0.0.1 gebunden. README KOMPLETT NEU. Es war die Bau-Anleitung eines privaten Verzeichnisses und ist jetzt die Visitenkarte eines oeffentlichen Repositorys: was das Buch ist, wo man es liest, drei Wege die Beispiele auszufuehren (Container, schlanke Installation, alles auf einmal), was hier liegt, wie man baut, die Colab-Frage, die Lizenzen und wie man mitwirkt. Alle relativen Links geprueft: 0 tot. .gitattributes. Ohne die Datei entschied core.autocrlf des jeweiligen Rechners, was beim Klonen passiert - ein Windows-Leser bekam CRLF-Rauschen in jedem Diff. Jetzt: im Repository immer LF, im Arbeitsverzeichnis passend zum System, Binaerdateien ausdruecklich ausgenommen. Der Bestand war bereits sauber (git add --renormalize aendert null Dateien). Zusaetzlich sind die erzeugten Verzeichnisse als linguist-generated markiert, sonst zaehlt die Sprachstatistik das Repository als HTML-Projekt. PROGRESS.md: Remote-Repository als erledigt markiert, der Colab-Befund festgehalten. CLAUDE.md um Veroeffentlichung, Lizenzen und die neuen Dateien ergaenzt. Geprueft: --check ohne Fehler, 0 tote README-Links, 76 Programme unveraendert, 33 pytest-Tests, pyproject baut mit acht Gruppen, PDF 759 Seiten (eine weniger - die Colab-Zeile entfaellt in 25 Kapiteln). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
360912dbfa
commit
4fa4e20b04
37 changed files with 467 additions and 258 deletions
|
|
@ -2,9 +2,9 @@
|
|||
# ganze Verzeichnis an den Daemon - mitsamt Website (rund 50 MB), PDF und
|
||||
# Notebooks, die im Image nichts zu suchen haben.
|
||||
|
||||
# Erzeugte Ausgaben
|
||||
# Erzeugte Ausgaben. Notebooks_04/ steht bewusst NICHT hier: Die 25 Notebooks
|
||||
# gehoeren ins Image, damit JupyterLab darin etwas zu oeffnen hat.
|
||||
OR_HTML_04/
|
||||
Notebooks_04/
|
||||
*.pdf
|
||||
Operations_Research_mit_Python_Version_04.md
|
||||
|
||||
|
|
|
|||
50
.gitattributes
vendored
Normal file
50
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# Zeilenenden. Ohne diese Datei entscheidet die core.autocrlf-Einstellung des
|
||||
# jeweiligen Rechners, was beim Klonen passiert - und ein Windows-Leser bekommt
|
||||
# je nach Konfiguration entweder CRLF-Rauschen in jedem Diff oder Python-
|
||||
# Dateien, die sein Editor als "gemischte Zeilenenden" anmeckert.
|
||||
#
|
||||
# Die Regel hier legt es fuer alle fest: Im Repository steht immer LF, im
|
||||
# Arbeitsverzeichnis bekommt jeder, was zu seinem System passt.
|
||||
|
||||
* text=auto eol=lf
|
||||
|
||||
# --- Quelltext und Buchtext: ausdruecklich Text ----------------------------
|
||||
*.py text diff=python
|
||||
*.md text
|
||||
*.txt text
|
||||
*.toml text
|
||||
*.yaml text
|
||||
*.yml text
|
||||
*.tex text
|
||||
*.css text
|
||||
*.js text
|
||||
*.html text
|
||||
*.svg text
|
||||
*.ipynb text
|
||||
Dockerfile text
|
||||
.gitignore text
|
||||
.dockerignore text
|
||||
.gitattributes text
|
||||
|
||||
# --- Binaerdateien: niemals anfassen ---------------------------------------
|
||||
# Ein versehentliches Umschreiben der Zeilenenden macht sie unbrauchbar.
|
||||
*.pdf binary
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.webp binary
|
||||
*.woff binary
|
||||
*.woff2 binary
|
||||
*.ttf binary
|
||||
*.otf binary
|
||||
*.xlsx binary
|
||||
*.zip binary
|
||||
|
||||
# --- Was auf GitHub/Forgejo die Sprachstatistik verzerrt --------------------
|
||||
# Die Website und die Notebooks sind ERZEUGT. Ohne diese Markierung zaehlt
|
||||
# Linguist das Repository als ueberwiegend HTML - es ist ein Python-Projekt.
|
||||
OR_HTML_04/** linguist-generated=true
|
||||
Notebooks_04/** linguist-generated=true
|
||||
Operations_Research_mit_Python_Version_04_Programme/** linguist-generated=true
|
||||
Operations_Research_mit_Python_Version_04.md linguist-generated=true
|
||||
21
CLAUDE.md
21
CLAUDE.md
|
|
@ -33,7 +33,9 @@ Notebooks_04/ generiert: ein .ipynb je Kapitel
|
|||
Kritik_und_Verbesserungsvorschlaege/ Quelle: Rezension, Verbesserungsvorschläge,
|
||||
NEUER_TITEL.md (Vorlage des Titelblatts)
|
||||
pyproject.toml Quelle: Abhängigkeiten in Gruppen
|
||||
Dockerfile, .dockerignore Quelle: Kurs-Image (nur Programme)
|
||||
Dockerfile, .dockerignore Quelle: Kurs-Image (Programme + JupyterLab)
|
||||
LICENSE, LICENSE-TEXT.md MIT fuer Code, CC BY-SA 4.0 fuer den Text
|
||||
.gitattributes LF im Repository, egal auf welchem System
|
||||
pandoc-defaults-basis.yaml, pandoc/, pandoc-defaults-buch.yaml PDF-Konfiguration
|
||||
```
|
||||
|
||||
|
|
@ -154,6 +156,23 @@ Im PDF steht stattdessen ein Hinweis auf die Website.
|
|||
|
||||
---
|
||||
|
||||
## Veroeffentlichung
|
||||
|
||||
Das Repository liegt oeffentlich auf <https://kitux.de/forgejo/dschlueter/operations_research>.
|
||||
|
||||
**`COLAB_BASIS_URL` ist bewusst leer.** Colab oeffnet Notebooks nur aus GitHub, Google Drive
|
||||
oder einem Upload; die URL-Form `colab.research.google.com/github/...` ist fest auf GitHub
|
||||
verdrahtet und kann eine selbstgehostete Git-Instanz nicht lesen. Statt eines toten Knopfes
|
||||
bekommt jedes Kapitel einen Download-Link auf sein Notebook. Wer spaeter nach GitHub
|
||||
spiegelt, traegt dort **einen** Wert ein.
|
||||
|
||||
Wer ohne eigene Installation rechnen will, nimmt das Kurs-Image:
|
||||
`docker run --rm -p 127.0.0.1:8888:8888 or-mit-python` startet JupyterLab mit allen
|
||||
25 Notebooks. Ohne Portfreigabe und mit einem Programmnamen als Argument fuehrt dasselbe
|
||||
Image ein einzelnes Programm aus.
|
||||
|
||||
---
|
||||
|
||||
## Sprache
|
||||
|
||||
Kommentare, Ausgaben und Fließtext sind durchgängig **Deutsch** — diesen Stil beibehalten.
|
||||
|
|
|
|||
30
Dockerfile
30
Dockerfile
|
|
@ -9,8 +9,8 @@
|
|||
# ist mit einer lokalen Installation besser bedient (siehe README.md).
|
||||
#
|
||||
# docker build -t or-mit-python .
|
||||
# docker run --rm or-mit-python Installationstest.py
|
||||
# docker run --rm -it or-mit-python # Python-Eingabe
|
||||
# docker run --rm -p 127.0.0.1:8888:8888 or-mit-python # JupyterLab
|
||||
# docker run --rm or-mit-python Installationstest.py # ein Programm
|
||||
# docker run --rm -v "$PWD/ausgabe:/buch/output" or-mit-python Excel_Bruecke.py
|
||||
#
|
||||
# Zwei Stufen: Die erste baut die Abhaengigkeiten in eine virtuelle Umgebung
|
||||
|
|
@ -44,7 +44,7 @@ COPY pyproject.toml README.md ./
|
|||
# Der Konflikt wird nicht durch Weglassen geloest, sondern zur Laufzeit durch
|
||||
# getrennte Prozesse (Kapitel Oekosystem). Ein Image, das nur eines von beiden
|
||||
# enthaelt, koennte die Haelfte der Beispiele nicht ausfuehren.
|
||||
RUN pip install ".[finance,large-scale,api,dev]"
|
||||
RUN pip install ".[finance,large-scale,api,dev,notebook]"
|
||||
|
||||
# --- Stufe 2: das eigentliche Image -----------------------------------------
|
||||
FROM python:3.12-slim AS laufzeit
|
||||
|
|
@ -66,14 +66,30 @@ ENV PATH="/opt/venv/bin:$PATH" \
|
|||
RUN useradd --create-home --uid 1000 kurs
|
||||
WORKDIR /buch
|
||||
COPY --chown=kurs:kurs Operations_Research_mit_Python_Version_04_Programme/ ./
|
||||
COPY --chown=kurs:kurs Notebooks_04/ ./Notebooks_04/
|
||||
|
||||
# Verzeichnis fuer erzeugte Dateien - als Volume einhaengbar, damit
|
||||
# Excel-Ausgaben und Diagramme den Container ueberleben. Angelegt wird es
|
||||
# VOR dem Benutzerwechsel, denn /buch gehoert root.
|
||||
RUN mkdir -p /buch/output && chown kurs:kurs /buch/output
|
||||
USER kurs
|
||||
|
||||
# Ohne Argument eine Python-Eingabeaufforderung, mit Argument das genannte
|
||||
# Programm: 'docker run --rm or-mit-python Rucksack.py'
|
||||
ENTRYPOINT ["python"]
|
||||
# Ein Startbefehl, zwei Betriebsarten - damit niemand '--entrypoint' braucht:
|
||||
# ohne Argument -> JupyterLab mit den 25 Kapitel-Notebooks
|
||||
# mit Argument -> genau dieses Programm
|
||||
RUN printf '%s\n' \
|
||||
'#!/bin/sh' \
|
||||
'if [ $# -eq 0 ]; then' \
|
||||
' exec jupyter lab --ip=0.0.0.0 --port=8888 --no-browser \' \
|
||||
' --ServerApp.token= --ServerApp.root_dir=/buch' \
|
||||
'fi' \
|
||||
'exec python "$@"' \
|
||||
> /usr/local/bin/starte && chmod +x /usr/local/bin/starte
|
||||
|
||||
USER kurs
|
||||
EXPOSE 8888
|
||||
|
||||
# JupyterLab laeuft ohne Token. Das ist fuer ein Kurs-Image auf dem eigenen
|
||||
# Rechner richtig - deshalb im README die Portfreigabe an 127.0.0.1 binden
|
||||
# und den Container NICHT ins offene Netz stellen.
|
||||
ENTRYPOINT ["/usr/local/bin/starte"]
|
||||
CMD []
|
||||
|
|
|
|||
39
LICENSE
Normal file
39
LICENSE
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
Dieses Repository steht unter ZWEI Lizenzen. Welche gilt, hängt davon ab,
|
||||
was Sie verwenden möchten:
|
||||
|
||||
* PROGRAMMCODE — MIT-Lizenz (unten im Wortlaut).
|
||||
Betrifft: alle .py-Dateien (Beispielprogramme, Build-Skripte,
|
||||
Diagrammgeneratoren), die Jupyter-Notebooks, Dockerfile, pyproject.toml
|
||||
und die Konfigurationsdateien.
|
||||
|
||||
* BUCHTEXT UND ABBILDUNGEN — Creative Commons BY-SA 4.0.
|
||||
Betrifft: alle .md-Kapitelquellen, das erzeugte PDF, die Website in
|
||||
OR_HTML_04/ und die Diagramme in bilder_04/.
|
||||
Wortlaut und Bedingungen: siehe LICENSE-TEXT.md.
|
||||
|
||||
Im Zweifel und für Mischformen (etwa ein Codeblock, der im Buchtext
|
||||
abgedruckt ist): Der Code darin steht unter der MIT-Lizenz.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Dieter Schlüter
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
56
LICENSE-TEXT.md
Normal file
56
LICENSE-TEXT.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# Lizenz für Buchtext und Abbildungen
|
||||
|
||||
**Optimierte Entscheidungsfindung mit Python** — © 2026 Dieter Schlüter
|
||||
|
||||
Der Buchtext und die Abbildungen stehen unter der Lizenz
|
||||
**Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0
|
||||
International (CC BY-SA 4.0)**.
|
||||
|
||||
* Kurzfassung (allgemeinverständlich): <https://creativecommons.org/licenses/by-sa/4.0/deed.de>
|
||||
* Verbindlicher Volltext: <https://creativecommons.org/licenses/by-sa/4.0/legalcode.de>
|
||||
|
||||
## Was darunter fällt
|
||||
|
||||
| Betroffen | Nicht betroffen |
|
||||
| --- | --- |
|
||||
| Die Kapitelquellen in `Operations_Research_mit_Python_Version_04/*.md` | Sämtlicher Programmcode (`*.py`, Notebooks, `Dockerfile`, `pyproject.toml`) — der steht unter der **MIT-Lizenz**, siehe `LICENSE` |
|
||||
| Das erzeugte PDF | |
|
||||
| Die Website in `OR_HTML_04/` | Die Schriftdateien unter `OR_HTML_04/assets/` und `katex/` — sie tragen ihre eigenen Lizenzen |
|
||||
| Die Diagramme in `bilder_04/` | |
|
||||
|
||||
Ein Codeblock, der im Buchtext abgedruckt ist, bleibt Programmcode: Für ihn
|
||||
gilt die MIT-Lizenz.
|
||||
|
||||
## Was Sie dürfen
|
||||
|
||||
**Teilen** — das Material in jedem Format vervielfältigen und weiterverbreiten.
|
||||
**Bearbeiten** — es remixen, verändern und darauf aufbauen, auch kommerziell.
|
||||
|
||||
## Unter diesen Bedingungen
|
||||
|
||||
**Namensnennung.** Nennen Sie den Autor (Dieter Schlüter), verlinken Sie auf
|
||||
die Lizenz und geben Sie an, ob Änderungen vorgenommen wurden. Eine
|
||||
brauchbare Form:
|
||||
|
||||
> Nach *Optimierte Entscheidungsfindung mit Python* von Dieter Schlüter
|
||||
> (<https://kitux.de/forgejo/dschlueter/operations_research>), lizenziert unter
|
||||
> CC BY-SA 4.0. Bearbeitet: [was Sie geändert haben].
|
||||
|
||||
**Weitergabe unter gleichen Bedingungen.** Wenn Sie das Material verändern
|
||||
oder darauf aufbauen, müssen Sie Ihre Beiträge unter derselben Lizenz wie das
|
||||
Original verbreiten.
|
||||
|
||||
**Keine weiteren Einschränkungen.** Sie dürfen keine zusätzlichen Klauseln
|
||||
anwenden, die anderen rechtlich etwas untersagen, was die Lizenz erlaubt.
|
||||
|
||||
## Was diese Lizenz nicht abdeckt
|
||||
|
||||
Sie erstreckt sich nicht auf Marken- und Namensrechte Dritter. Die im Buch
|
||||
genannten Bibliotheken — HiGHS, Google OR-Tools, CVXPY, SciPy, Pyomo, linopy
|
||||
und andere — stehen unter ihren eigenen Lizenzen; wer sie einsetzt, hält sich
|
||||
an diese.
|
||||
|
||||
Für die Inhalte gibt es **keine Gewährleistung**. Die Modelle und Zahlen sind
|
||||
Lehrbeispiele. Wer auf ihrer Grundlage betriebliche oder finanzielle
|
||||
Entscheidungen trifft, tut das in eigener Verantwortung — das gilt besonders
|
||||
für die Kapitel zu Finanzmärkten.
|
||||
BIN
OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf
generated
BIN
OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf
generated
Binary file not shown.
3
OR_HTML_04/bruecke.html
generated
3
OR_HTML_04/bruecke.html
generated
|
|
@ -126,8 +126,7 @@
|
|||
<p><strong>Zeitbedarf:</strong> ca. 2,5 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Strukturbruecke.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/bruecke.ipynb">bruecke.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/bruecke.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/bruecke.ipynb">bruecke.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/cpsat.html
generated
3
OR_HTML_04/cpsat.html
generated
|
|
@ -114,8 +114,7 @@
|
|||
<code>Parallele_Suche.py</code><br />
|
||||
<code>CP_SAT_Statusfaelle.py</code><br />
|
||||
<code>Strafgewichte.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/cpsat.ipynb">cpsat.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/cpsat.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/cpsat.ipynb">cpsat.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/cvar.html
generated
3
OR_HTML_04/cvar.html
generated
|
|
@ -110,8 +110,7 @@
|
|||
<p><strong>Programme:</strong><br />
|
||||
<code>VaR_CVaR_Demo.py</code><br />
|
||||
<code>CVaR_Portfolio.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/cvar.ipynb">cvar.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/cvar.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/cvar.ipynb">cvar.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/dekomposition.html
generated
3
OR_HTML_04/dekomposition.html
generated
|
|
@ -109,8 +109,7 @@
|
|||
<p><strong>Zeitbedarf:</strong> ca. 3 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Spaltengenerierung.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/dekomposition.ipynb">dekomposition.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/dekomposition.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/dekomposition.ipynb">dekomposition.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/dynamische-programmierung.html
generated
3
OR_HTML_04/dynamische-programmierung.html
generated
|
|
@ -110,8 +110,7 @@
|
|||
<p><strong>Programme:</strong><br />
|
||||
<code>Bellman_Minimalbeispiel.py</code><br />
|
||||
<code>Mehrperiodige_Order_Execution.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/dynamische-programmierung.ipynb">dynamische-programmierung.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/dynamische-programmierung.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/dynamische-programmierung.ipynb">dynamische-programmierung.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/einfuehrung.html
generated
3
OR_HTML_04/einfuehrung.html
generated
|
|
@ -114,8 +114,7 @@
|
|||
<code>Brute_Force_Vergleich.py</code><br />
|
||||
<code>Bausteine_Vorlage.py</code><br />
|
||||
<code>Excel_Bruecke.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/einfuehrung.ipynb">einfuehrung.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/einfuehrung.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/einfuehrung.ipynb">einfuehrung.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/finanzdaten.html
generated
3
OR_HTML_04/finanzdaten.html
generated
|
|
@ -113,8 +113,7 @@
|
|||
<code>Finanzdaten_Ledoit_Wolf.py</code><br />
|
||||
<code>Kovarianz_Falle.py</code></p>
|
||||
<p><strong>⚠️ Überspringen Sie dieses Kapitel nicht.</strong> Wer direkt bei Markowitz (<a href="markowitz.html#kap-markowitz">Kapitel 19</a>) einsteigt, erhält absurde Portfoliogewichte und weiß nicht, warum.</p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/finanzdaten.ipynb">finanzdaten.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/finanzdaten.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/finanzdaten.ipynb">finanzdaten.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/fundament.html
generated
3
OR_HTML_04/fundament.html
generated
|
|
@ -112,8 +112,7 @@
|
|||
<code>Visualisierung_Loesungsraum.py</code><br />
|
||||
<code>Konvexitaet_Demo.py</code><br />
|
||||
<code>Skalierung_Kondition.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/fundament.ipynb">fundament.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/fundament.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/fundament.ipynb">fundament.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
69
OR_HTML_04/gesamtdokument.html
generated
69
OR_HTML_04/gesamtdokument.html
generated
|
|
@ -3114,8 +3114,7 @@ Alles bereit — Sie können mit dem ersten Kapitel beginnen.</code></pre>
|
|||
<code>Brute_Force_Vergleich.py</code><br />
|
||||
<code>Bausteine_Vorlage.py</code><br />
|
||||
<code>Excel_Bruecke.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/einfuehrung.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/einfuehrung.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/einfuehrung.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:einfuehrung-schnellstart">1.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -4421,8 +4420,7 @@ Deckungsbeitrag: 18600 EUR</code></pre>
|
|||
<code>Visualisierung_Loesungsraum.py</code><br />
|
||||
<code>Konvexitaet_Demo.py</code><br />
|
||||
<code>Skalierung_Kondition.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/fundament.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/fundament.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/fundament.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:fundament-schnellstart">2.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -5592,8 +5590,7 @@ und runden Sie Solver-Ergebnisse NIE ohne Toleranzpruefung.
|
|||
<code>Solver_Wahl.py</code><br />
|
||||
<code>Modellierungsschichten.py</code><br />
|
||||
<code>Vektorisierte_Modellgenerierung.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/oekosystem.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/oekosystem.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/oekosystem.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:oekosystem-schnellstart">3.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -6933,8 +6930,7 @@ Groesse Variante Aufbau Loesen Aufba
|
|||
<p><strong>Zeitbedarf:</strong> ca. 3 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Vom_Wunsch_zum_Modell.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/modellierung.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/modellierung.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/modellierung.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:modellierung-schnellstart">4.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -7889,8 +7885,7 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt
|
|||
<code>Sensitivitaetsanalyse.py</code><br />
|
||||
<code>Dualitaet_Nachweis.py</code><br />
|
||||
<code>Toleranzen_und_Entartung.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/lp.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/lp.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/lp.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:lp-schnellstart">5.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -9354,8 +9349,7 @@ brauchbare Aussage. Ein erfundener Einzelwert ist es nicht.</code></pre>
|
|||
<code>Solverstatus_und_Gap.py</code><br />
|
||||
<code>Warmstart_Effekt.py</code><br />
|
||||
<code>Big_M_Falle.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/milp.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/milp.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/milp.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:milp-schnellstart">6.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -11027,8 +11021,7 @@ funktioniert immer.
|
|||
<code>Parallele_Suche.py</code><br />
|
||||
<code>CP_SAT_Statusfaelle.py</code><br />
|
||||
<code>Strafgewichte.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/cpsat.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/cpsat.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/cpsat.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:cpsat-schnellstart">7.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -12730,8 +12723,7 @@ Nebenbedingungen. Alles, was einen Preis hat, wird irgendwann gekauft.
|
|||
<code>Zuordnung_Ungarisch.py</code><br />
|
||||
<code>VRP_Flotten_Routing.py</code><br />
|
||||
<code>VRP_Kapazitaetsfalle.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/graphen.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/graphen.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/graphen.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:graphen-schnellstart">8.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -13674,8 +13666,7 @@ plausibel aussieht.
|
|||
<code>Simulated_Annealing.py</code><br />
|
||||
<code>Metaheuristik_vs_Exakt.py</code><br />
|
||||
<code>Large_Neighborhood_Search.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/metaheuristiken.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/metaheuristiken.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/metaheuristiken.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:metaheuristiken-schnellstart">9.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -15245,8 +15236,7 @@ Abstand zum Optimum.
|
|||
<p><strong>Zeitbedarf:</strong> ca. 3 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Spaltengenerierung.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/dekomposition.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/dekomposition.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/dekomposition.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:dekomposition-schnellstart">10.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -16093,8 +16083,7 @@ Mutterrolle 5,600 mm, 13 bestellte Breiten, 219 Zuschnitte.
|
|||
<code>KKT_Nachweis.py</code><br />
|
||||
<code>Entropie_Maximierte_Allokation.py</code><br />
|
||||
<code>Lokale_Optima_Multistart.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/qp-nlp.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/qp-nlp.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/qp-nlp.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:qp-nlp-schnellstart">11.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -17270,8 +17259,7 @@ The objective is not DCP. Its following subexpressions are not: QuadForm(...)</c
|
|||
<code>Stochastische_Optimierung.py</code><br />
|
||||
<code>Robuste_Optimierung.py</code><br />
|
||||
<code>Chance_Constraints.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/unsicherheit.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/unsicherheit.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/unsicherheit.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:unsicherheit-schnellstart">12.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -18419,8 +18407,7 @@ Anteil ueber 11,34 Tage: 95.5 %</code></pre>
|
|||
<p><strong>Programme:</strong><br />
|
||||
<code>Bellman_Minimalbeispiel.py</code><br />
|
||||
<code>Mehrperiodige_Order_Execution.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/dynamische-programmierung.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/dynamische-programmierung.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/dynamische-programmierung.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:dynamische-programmierung-schnellstart">13.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -19288,8 +19275,7 @@ Abweichung DP zur analytischen Loesung: 5.788 % (Diskretisierung: 1000 Stueck)
|
|||
<p><strong>Zeitbedarf:</strong> ca. 4 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Mehrziel_Pareto.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/mehrziel.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/mehrziel.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/mehrziel.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:mehrziel-schnellstart">14.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -19977,8 +19963,7 @@ e(x) \le \varepsilon
|
|||
<p><strong>Zeitbedarf:</strong> ca. 3,5 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Predict_then_Optimize.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/prognose.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/prognose.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/prognose.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:prognose-schnellstart">15.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -20724,8 +20709,7 @@ Kosten statt auf Fehler trainiert.
|
|||
<p><strong>Zeitbedarf:</strong> ca. 2,5 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Strukturbruecke.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/bruecke.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/bruecke.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/bruecke.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:bruecke-schnellstart">16.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -21395,8 +21379,7 @@ u_s \ge \ell_s^\top w - \gamma, \quad u_s \ge 0
|
|||
<p><strong>Zeitbedarf:</strong> ca. 4 Stunden.</p>
|
||||
<p><strong>Programme:</strong><br />
|
||||
<code>Kraftwerkseinsatz.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/supplychain.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/supplychain.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/supplychain.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:supplychain-schnellstart">17.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -22179,8 +22162,7 @@ zweistufig 111111222222222222222111 (39 Blockstunden)</code></pre>
|
|||
<code>Finanzdaten_Ledoit_Wolf.py</code><br />
|
||||
<code>Kovarianz_Falle.py</code></p>
|
||||
<p><strong>⚠️ Überspringen Sie dieses Kapitel nicht.</strong> Wer direkt bei Markowitz (<a href="#kap-markowitz">Kapitel 19</a>) einsteigt, erhält absurde Portfoliogewichte und weiß nicht, warum.</p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/finanzdaten.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/finanzdaten.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/finanzdaten.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:finanzdaten-schnellstart">18.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -23032,8 +23014,7 @@ Ausfallraten und jede andere geschaetzte Groesse.
|
|||
<code>Diversifikation_Demo.py</code><br />
|
||||
<code>Markowitz_CVXPY.py</code><br />
|
||||
<code>Renditeschaetzung_Falle.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/markowitz.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/markowitz.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/markowitz.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:markowitz-schnellstart">19.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -24010,8 +23991,7 @@ Drei praktische Konsequenzen:
|
|||
<p><strong>Programme:</strong><br />
|
||||
<code>VaR_CVaR_Demo.py</code><br />
|
||||
<code>CVaR_Portfolio.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/cvar.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/cvar.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/cvar.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:cvar-schnellstart">20.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -24667,8 +24647,7 @@ CVaR: Portfolio 101.33 vs. Summe 159.24 -> subadditiv (kohaerent)
|
|||
<code>Backtest_Fallen.py</code><br />
|
||||
<code>Data_Snooping.py</code></p>
|
||||
<p><strong>⚠️ Keine Anlageberatung.</strong> Dieses Kapitel demonstriert Methodik an realen Daten, keine handelbare Strategie. <a href="#sec:handelsmaschine-vom-backtest-zum-betrieb">Abschnitt 21.7</a> erklärt ausführlich, warum ein guter Backtest noch lange keine funktionierende Strategie ist.</p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/handelsmaschine.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/handelsmaschine.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/handelsmaschine.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:handelsmaschine-schnellstart">21.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -25728,8 +25707,7 @@ von allen Fehlversuchen genau einen: den erfolgreichsten.
|
|||
<code>Betriebsueberwachung.py</code><br />
|
||||
<code>or_kern.py</code><br />
|
||||
<code>Solverwechsel_CPSAT_HiGHS.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/praxisfallen.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/praxisfallen.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/praxisfallen.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:praxisfallen-schnellstart">22.1 In 5 Minuten gelöst</h2>
|
||||
|
|
@ -28148,8 +28126,7 @@ sichtbar wird, und gibt Zeit zum Handeln.
|
|||
<code>Mutationstest.py</code><br />
|
||||
<code>Benchmark_Skalierung.py</code><br />
|
||||
<code>Optimierungsdienst.py</code></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/testing.ipynb</code><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/testing.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <code>Notebooks_04/testing.ipynb</code></p>
|
||||
</blockquote>
|
||||
<hr />
|
||||
<h2 id="sec:testing-schnellstart">23.1 In 5 Minuten gelöst</h2>
|
||||
|
|
|
|||
3
OR_HTML_04/graphen.html
generated
3
OR_HTML_04/graphen.html
generated
|
|
@ -112,8 +112,7 @@
|
|||
<code>Zuordnung_Ungarisch.py</code><br />
|
||||
<code>VRP_Flotten_Routing.py</code><br />
|
||||
<code>VRP_Kapazitaetsfalle.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/graphen.ipynb">graphen.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/graphen.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/graphen.ipynb">graphen.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/handelsmaschine.html
generated
3
OR_HTML_04/handelsmaschine.html
generated
|
|
@ -112,8 +112,7 @@
|
|||
<code>Backtest_Fallen.py</code><br />
|
||||
<code>Data_Snooping.py</code></p>
|
||||
<p><strong>⚠️ Keine Anlageberatung.</strong> Dieses Kapitel demonstriert Methodik an realen Daten, keine handelbare Strategie. <a href="#sec:handelsmaschine-vom-backtest-zum-betrieb">Abschnitt 21.7</a> erklärt ausführlich, warum ein guter Backtest noch lange keine funktionierende Strategie ist.</p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/handelsmaschine.ipynb">handelsmaschine.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/handelsmaschine.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/handelsmaschine.ipynb">handelsmaschine.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/lp.html
generated
3
OR_HTML_04/lp.html
generated
|
|
@ -124,8 +124,7 @@
|
|||
<code>Sensitivitaetsanalyse.py</code><br />
|
||||
<code>Dualitaet_Nachweis.py</code><br />
|
||||
<code>Toleranzen_und_Entartung.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/lp.ipynb">lp.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/lp.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/lp.ipynb">lp.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
3
OR_HTML_04/markowitz.html
generated
3
OR_HTML_04/markowitz.html
generated
|
|
@ -111,8 +111,7 @@
|
|||
<code>Diversifikation_Demo.py</code><br />
|
||||
<code>Markowitz_CVXPY.py</code><br />
|
||||
<code>Renditeschaetzung_Falle.py</code></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/markowitz.ipynb">markowitz.ipynb</a><br />
|
||||
<a href="https://colab.research.google.com/github/dschlueter/or-mit-python/blob/main/Notebooks_04/markowitz.ipynb">In Google Colab öffnen</a></p>
|
||||
<p><strong>Notebook:</strong> <a href="Notebooks_04/markowitz.ipynb">markowitz.ipynb</a> — herunterladen und in Jupyter öffnen, in Colab hochladen oder mit dem Kurs-Image starten</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<hr />
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue