Fachbereich Mathematik und Informatik

Suchen
Startseite Mathematik und Informatik
Startseite
Universität Münster

Kontakt
Impressum

Hinweise zum Einlesen von Daten mit AMPL

Ab einer gewissen Komplexität eines linearen Optimierungsproblems bietet es sich an, den Quellcode des zugehörigen AMPL-Programms in einen Modellteil und einen Datenteil zu splitten und diese in verschiedenen Dateien abzuspeichern. Diese Trennung macht das Programm übersichtlicher und erleichtert nachträgliche Änderungen der Systemparameter.

  1. Modellteil: Hier wird die Grundstruktur des LPs festgelegt. Typischerweise deklariert man Indexmengen (mit set), Parameter (mit param) und Optimierungsvariablen (mit var), ohne bereits numerische Werte zuzuweisen. Die Initialisierung der Indexmengen und der Parameter ist Aufgabe des Datenteils. Außerdem kann man hier die zu minimierende Zielfunktion (mit minimize BEZEICHNUNG: ... ) und die Nebenbedingungen (mit subject to BEZEICHNUNG: ... ) definieren.
  2. Datenteil: Hier werden die im Modellteil deklarierten Indexmengen und Parameter initialisiert, d.h. es werden konkrete Mengen bzw. numerische Werte für die Parameter festgelegt.

In der auszuführenden AMPL-Datei liest man mittels

model <dateiname>.mod

bzw.

data <dateiname>.dat

den Modell- und den Datenfile ein.


Programmieraufgabe 20:

Prinzipiell lassen sich das LP und insbesondere die Nebenbedingungen derart formulieren, dass man für jede einzelne Restriktion eine eigene "subject to" - Anweisung definiert. Dieser Aufwand lässt sich vermeiden, indem man die kommentierten Modell- bzw. Datenfiles lebensmittel.mod bzw. lebensmittel.dat wie oben beschrieben in sein AMPL-Programm einbindet. Nun sind lediglich noch die Zielfunktion und die Nebenbedingungen anzugeben und anschließend wie gewohnt ein solver auszuwählen (bspw. IPOPT), mit welchem das LP gelöst werden soll.

Ein paar hilfreiche AMPL-Sprachkonstrukte:

  • Die Summation

    Masse['Mehl'] + Masse['Reis'] + ... + Masse['Kakao'];

    lässt sich kompakt schreiben als

    sum {j in Lebensmittel} Masse[j];

  • Eine indizierte Menge von Nebenbedingungen kann durch einen einzigen Befehl definiert werden:

    subject to Mindestbedarf {i in Nährstoffe}: ... ;

Für die beiden Nebenbedingungen "Der monatliche Verbrauch an ... " können Sie davon ausgehen, dass ein Monat 30 Tage umfasst.

Abgabe: Falls Sie von den bereitgestellten Modell- und Datenfiles Gebrauch machen, müssen Sie diese nicht Ihrem Übungsgruppenleiter per Mail schicken. Es genügt, Ihr AMPL-Programm, in welchem diese Files eingebunden werden, in Papierform und per eMail abzugeben. Außerdem bitte unbedingt eine sinnvolle Ausgabe des Programms (AMPL-Befehl: display ... ; ) ausdrucken und abgeben.

Bei Fragen und Problemen mit AMPL zögern Sie bitte nicht, Ihren Übungsgruppenleiter zu fragen oder Bahne Christiansen zu kontaktieren.

zurückblättern

Diese Seite:  :: Seite drucken   :: Seite empfehlen  :: Seite kommentieren

© FB 10 Mathematik und Informatik

© FB 10 Mathematik und Informatik der Universität Münster
Einsteinstrasse 62 · 48149 Münster
Tel.: +49 251 83-3 30 16 · Fax: +49 251 83-3 83 50
E-Mail: mathdek@math.uni-muenster.de