Installation & Setup

Grundlagen Operations Research

Auf dieser Seite richten Sie alles ein, was Sie brauchen, um die Julia-Beispiele des Kurses selbst auszuführen: die Programmiersprache Julia, den Editor Zed und die drei Kurs-Pakete. Der ganze Weg dauert etwa 15 Minuten. Danach läuft jede Code-Zelle dieses Kurses auch auf Ihrem Rechner.

HinweisBrauche ich das zwingend?

Nein. Sie können alle Vorlesungen und Übungen auch ohne eigene Installation lesen: sämtliche Ergebnisse sind auf den Seiten bereits ausgeführt. Für die Übungsaufgaben mit Selbstkontrolle (und für die Klausurvorbereitung) lohnt sich die Installation aber sehr: Optimierung lernt man durch Ausprobieren.

Schritt 1: Julia installieren

Wir empfehlen die Installation über juliaup, den offiziellen Versionsmanager. Er installiert immer die aktuelle stabile Version und hält sie automatisch aktuell.

Windows: Laden Sie auf julialang.org/downloads den MSIX App Installer herunter und öffnen Sie ihn. Funktioniert auf Ihrem Rechner der Microsoft Store, geht es alternativ auch im Terminal (PowerShell):

winget install --name Julia --id 9NJNWW8PVKMN -e -s msstore

macOS und Linux (im Terminal):

curl -fsSL https://install.julialang.org | sh

Alternativ finden Sie fertige Installationspakete auf julialang.org/downloads.

Falls das Installationsprogramm fragt, ob es etwas zu Ihrem „PATH” hinzufügen darf: ja, unbedingt. Sonst finden Terminal und Editor die Julia-Installation später nicht. Unter Windows fragt der App Installer nicht: Er trägt Julia selbst ein.

Prüfen Sie die Installation, indem Sie ein neues Terminal öffnen (ein Terminal in Zed findet Julia erst, wenn Sie Zed neu starten) und

julia --version

eingeben. Erscheint eine Versionsnummer (1.13 oder neuer), hat alles geklappt.

Schritt 2: Zed installieren

Als Editor verwenden wir im Kurs Zed (zed.dev): schnell, schlank und mit eingebauter Unterstützung für Jupyter-Kernel, über die wir Julia-Code direkt aus dem Editor heraus ausführen.

macOS (mit Homebrew, alternativ Installer von zed.dev):

brew install --cask zed

Windows: Installer von zed.dev/download herunterladen und ausführen.

Linux (im Terminal):

curl -f https://zed.dev/install.sh | sh

Installieren Sie anschließend die Julia-Erweiterung für Syntax-Unterstützung: Öffnen Sie in Zed die Befehlspalette (Strg+Umschalt+P bzw. Cmd+Umschalt+P, macOS), wählen Sie zed: extensions und suchen Sie nach „Julia”.

Zed bietet Studierenden einen kostenlosen Education-Plan (zed.dev/education). Für diesen Kurs brauchen Sie ihn nicht zwingend, die Anmeldung lohnt sich aber, wenn Sie Zed auch sonst nutzen möchten.

WarnungFallback: VS Code

Zed benötigt unter Windows eine DirectX-11-fähige Grafikkarte. Öffnet Zed nur ein leeres oder schwarzes Fenster oder meldet es „Unsupported GPU”, aktualisieren Sie zunächst die Grafiktreiber. Hilft das nicht, nutzen Sie VS Code mit der Erweiterung Julia (Julia Language Support): alles in diesem Kurs funktioniert auch dort (Zellen führen Sie dann mit Strg+Enter bzw. Alt+Enter aus).

Schritt 3: Kurs-Umgebung und Pakete installieren

Für diesen Kurs brauchen Sie drei Pakete: JuMP (Modellierungssprache), HiGHS (Open-Source-Solver) und Plots (Grafiken), dazu IJulia, damit Zed Julia-Code ausführen kann. Wir installieren alles in eine eigene Kurs-Umgebung: So bleiben die Kurspakete sauber getrennt von allem anderen auf Ihrem Rechner, und Sie können durch Installieren praktisch nichts kaputt machen.

Legen Sie einen Ordner für den Kurs an, öffnen Sie ein Terminal in diesem Ordner und starten Sie Julia mit der Kurs-Umgebung:

julia --project=grundlagen-or

Tippen Sie in der interaktiven Konsole (der REPL) eine schließende eckige Klammer ]. Die Eingabezeile wechselt in den blauen Paketmodus pkg>. Installieren Sie dann:

] add JuMP HiGHS Plots IJulia

Die Installation lädt einmalig einige hundert Megabyte herunter und dauert ein paar Minuten. Verlassen Sie den Paketmodus mit der Rücktaste (Backspace) und registrieren Sie zum Schluss den Jupyter-Kernel, über den Zed die Kurs-Umgebung findet:

using IJulia
zed_plots = raw"""
push!(Base.package_callbacks, pkg -> pkg.name == "Plots" &&
    @eval Base.showable(::MIME"text/html", ::$(Base.loaded_modules[pkg]).Plot) = false)
"""
IJulia.installkernel("Grundlagen OR", "--project=" * abspath("grundlagen-or"), "-e", zed_plots)

Der Teil zed_plots sorgt dafür, dass Zed Ihre Grafiken anzeigt: Die Web-Fassung einer Grafik kann Zed noch nicht darstellen, deshalb schickt der Kernel Grafiken als Bild. Mit exit() verlassen Sie die REPL.

Der Parameter --project=grundlagen-or sagt Julia, dass es die Umgebung in einem Unterordner grundlagen-or anlegen (und später wiederverwenden) soll. Arbeiten Sie deshalb immer im selben Kursordner, dann passt alles zusammen. Der Kernel merkt sich außerdem genau die Julia-Version, mit der er registriert wurde: Schließen Sie Zed vor einem Julia-Update (etwa mit juliaup update). Starten Sie danach Julia noch einmal mit julia --project=grundlagen-or und führen Sie die IJulia-Zeilen erneut aus.

Schritt 4: Testlauf

Legen Sie in Zed eine neue Datei in Ihrem Kursordner an (z. B. test.jl) mit folgendem Inhalt:

println("Hallo, Operations Research!")
Hallo, Operations Research!

Setzen Sie den Cursor in die Zeile und drücken Sie Strg+Umschalt+Enter (auch unter macOS mit Ctrl), oder wählen Sie in der Befehlspalette repl: run. Den Kernel wählt Zed selbst: Oben rechts im Editor zeigt die Kernel-Auswahl, welcher läuft. Dort sollte der Kernel stehen, dessen Name mit grundlagen-or beginnt, also der Kernel aus Schritt 3. Steht dort ein anderer (etwa julia-1.13), klicken Sie darauf und wählen Sie Ihren. Die Ausgabe erscheint direkt unter dem Code im Editor. Wenn Sie das sehen, ist Ihr Setup vollständig.

Alternativ können Sie jede Datei auch im Terminal ausführen:

julia --project=grundlagen-or test.jl
  • Der Kernel grundlagen-or-… taucht nicht auf: Befehlspalette → repl: refresh kernelspecs. Taucht er weiterhin nicht auf, Schritt 3 wiederholen und auf Fehlermeldungen bei IJulia.installkernel achten.
  • Der erste Start dauert lange: Das ist normal: Julia kompiliert beim ersten Ausführen. Ab dem zweiten Lauf innerhalb derselben Sitzung geht es deutlich schneller. Lassen Sie die Kernel-Sitzung deshalb laufen, statt sie nach jedem Lauf zu beenden.
  • Package JuMP not found: Prüfen Sie, ob oben rechts wirklich der Kernel grundlagen-or-… gewählt ist (nicht eine andere Julia-Installation), und wiederholen Sie notfalls Schritt 3.

Weitere Fehlerbilder und ihre Lösungen finden Sie in den FAQ.

Arbeitsdateien des Kurses

Auf jeder Übungsseite finden Sie rechts oben Download-Buttons: Julia lädt die Seite als ausführbare .jl-Datei, PDF als Ausdruck. Laden Sie die .jl-Datei herunter, öffnen Sie sie in Zed und arbeiten Sie die Aufgaben Zelle für Zelle durch (die Zellen sind mit # %% markiert: Cursor in die Zelle setzen, Strg+Umschalt+Enter). Die Selbstkontroll-Blöcke am Ende jeder Aufgabe sagen Ihnen, ob Ihre Lösung stimmt.

Best Practices und Tipps

Diese Tipps gehen über die reine Installation hinaus und ersparen Ihnen die häufigsten Anfangshürden. Zwingend sind sie für den Kurs nicht.

Reproduzierbare Paketumgebungen

Die Installation aus Schritt 3 nutzt bereits eine Projektumgebung: Im Ordner grundlagen-or liegen eine Project.toml (welche Pakete) und eine Manifest.toml (welche exakten Versionen). Dasselbe Muster lohnt sich für jedes eigene Projekt: Wechseln Sie in den Projektordner und aktivieren Sie ihn im Paketmodus:

] activate .
] add JuMP HiGHS Plots

Geben Sie ein solches Projekt weiter oder holen es von einer anderen Person, stellt ] instantiate mit einem einzigen Befehl exakt dieselben Paketversionen wieder her. So läuft Ihr Code auf jedem Rechner identisch.

Julia und Pakete aktuell halten

juliaup aktualisiert Julia selbst:

juliaup update

Schließen Sie Zed vorher und registrieren Sie danach den Jupyter-Kernel neu (die IJulia-Zeilen aus Schritt 3): Er gehört zu genau der Julia-Version, mit der er registriert wurde.

Die installierten Pakete bringen Sie im Paketmodus auf den neuesten Stand:

] update

Zügig arbeiten

Julia kompiliert Ihren Code beim ersten Ausführen, deshalb dauert der allererste Aufruf (etwa der erste Plot) spürbar länger. Danach geht es schnell. Lassen Sie die REPL deshalb geöffnet und führen Sie Ihre Datei mehrfach in derselben Sitzung aus, statt Julia jedes Mal neu zu starten.

Typische Stolperfallen

  • Indizes beginnen bei 1, nicht bei 0: v[1] ist das erste Element.
  • Elementweise Operationen brauchen einen Punkt: preise .* mengen multipliziert Eintrag für Eintrag, value.(X) liest alle Variablenwerte eines Vektors aus.
  • / liefert immer eine Kommazahl: 6 / 2 ergibt 3.0. Ganzzahlig teilen Sie mit div(6, 2).
  • Zuweisung = und Vergleich == nicht verwechseln: In Gleichungs-Nebenbedingungen schreiben Sie ==, nicht =.

Mehr dazu finden Sie unter Erste Schritte und in den Cheatsheets.

Wie geht es weiter?