LINGO: Eine kleine Einführung



Ähnliche Dokumente
7 Rechnen mit Polynomen

Lineare Optimierung Ergänzungskurs

Optimierung und Simulation ökonomischer Problemlagen privater Haushalte 3. Vorlesung

Lernmaterial für die Fernuni Hagen effizient und prüfungsnah

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

Mathematik-Klausur vom

Tutorium zur Mikroökonomie II WS 02/03 Universität Mannheim Tri Vi Dang. Aufgabenblatt 3 (KW 44) ( )

Bestimmung einer ersten

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Die Verbindung von Linearer Programmierung und Graphentheorie

Simplex-Umformung für Dummies

Künstliches binäres Neuron

Aufgabe 6 Excel 2013 (Fortgeschrittene) Musterlösung

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Die Invaliden-Versicherung ändert sich

GDPdU Export. Modulbeschreibung. GDPdU Export. Software-Lösungen. Stand: Seite 1

4. Dynamische Optimierung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Theoretische Grundlagen der Informatik WS 09/10

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Anleitung für Kunden zum Umgang mit verschlüsselten s von der LASA Brandenburg GmbH

Bauteilattribute als Sachdaten anzeigen

Excel Funktionen durch eigene Funktionen erweitern.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Lineare Gleichungssysteme

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Erstellen einer in OWA (Outlook Web App)

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

6.2 Scan-Konvertierung (Scan Conversion)

1 topologisches Sortieren

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

OutLook 2003 Konfiguration

3. Grundlagen der Linearen Programmierung

Einführung in die Programmierung

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Die Lernumgebung des Projekts Informationskompetenz

Mehrere PDF-Dokumente zu einem zusammenfügen

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Einfügen von Bildern innerhalb eines Beitrages

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Erwin Grüner

Wissensdatenbankeintrag zur Sage New Classic Ab Version 2011 WDB Artikel: 21306

Eigenwerte und Eigenvektoren von Matrizen

5. Bildauflösung ICT-Komp 10

Der monatliche Tarif für ein Handy wurde als lineare Funktion der Form f(x) = k x + d modelliert (siehe Grafik).

3. LINEARE GLEICHUNGSSYSTEME

Die Gesellschaftsformen

Text-Zahlen-Formatieren

Lineare Gleichungssysteme

Anleitung über den Umgang mit Schildern

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Linearen Gleichungssysteme Anwendungsaufgaben

Vorarlberger Standardschulinstallation Anbindung von Android Mobile Devices

! " # $ " % & Nicki Wruck worldwidewruck

macs Support Ticket System

1. Einführung. 2. Die Abschlagsdefinition

Die Post hat eine Umfrage gemacht

Korrelation (II) Korrelation und Kausalität

Printserver und die Einrichtung von TCP/IP oder LPR Ports

Rechnung Angebot Zeiterfassung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Kurzanleitung MAN E-Learning (WBT)

2. Programmierung in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Mathematik-Klausur vom 2. Februar 2006

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können.

Optimierung. Optimierung. Vorlesung 7 Lineare Programmierung II Thomas Brox, Fabian Kuhn

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Java Einführung Operatoren Kapitel 2 und 3

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Kapitalerhöhung - Verbuchung

1. Einführung. 2. Ändern oder Anlegen einer Zahlungsbedingung

Professionelle Seminare im Bereich MS-Office

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Installation Hardlockserver-Dongle

Grundbegriffe der Informatik

Die Erstellung eigener Strukturprofile

Extrema von Funktionen in zwei Variablen

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Übungen Programmieren 1 Felix Rohrer. Übungen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Musterlösungen zur Linearen Algebra II Blatt 5

Die reellen Lösungen der kubischen Gleichung

e LEARNING Kurz-Anleitung zum Erstellen eines Wikis 1. Wiki erstellen

Übungsklausur. Bitte wählen Sie fünf Aufgaben aus! Aufgabe 1. Übungsklausur zu Mathematik I für BWL und VWL (WS 2008/09) PD Dr.

Tipps & Tricks im CRM

Fachhochschule Bochum Fachhochschule Münster Fachhochschule Südwestfalen

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

2. Negative Dualzahlen darstellen

Binärdarstellung von Fliesskommazahlen

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Transkript:

LINGO: Eine kleine Einführung Jun.-Prof.Dr. T. Nieberg Lineare und Ganzzahlige Optimierung, WS 2009/10 LINDO/LINGO ist ein Software-Paket, mit dessen Hilfe (ganzzahlige) lineare Programme schnell und einfach formuliert und gelöst werden können. Das Programm kann beim Hersteller 1 als Studentenversion heruntergeladen werden, diese Version ist in der Anzahl Variablen und Nebenbedingungen limitiert. Anhand des folgenden Beispiels werden wir nun den Formulierungs- und Lösungsprozess mit LINGO darstellen. 1 Ein Beispielproblem Eine Firma produziert ein Produkt, für das in den folgenden 4 Wochen eine Nachfrage von 20, 30, 40 und 35 Einheiten besteht. Pro Woche können maximal 36 Einheiten produziert werden, die Nachfrage kann aber auch durch Produktion vorhergehender Wochen erfüllt werden, d.h. es steht ein Lager zur Verfügung. Im Moment ist der Vorrat dort 10. Die Lagerhaltungskosten betragen 30 EUR für jede Einheit, die beim Übergang in die nächste Woche fällig wird, und jede produzierte, aber nicht direkt verkaufte Einheit wird gelagert. Die Produktionskosten pro Einheit betragen 200, 180, 175 und 190 EUR in Woche 1,2,3 bzw. 4. Ziel ist, die Nachfrage mit minimalen Kosten zu erfüllen. 2 Modellierung mit LINGO Entscheidungsvariablen: prod(i): Einheiten, die in Woche i produziert werden; i = 1, 2, 3, 4 lager(i): Einheiten, die zwischen Woche i und i + 1 im Lager sind; i = 1, 2, 3 In LINGO: SETS: WOCHE/1..4/: prod, lager; ENDSETS 1 www.lindo.com 1

Lineare und Ganzzahlige Optimierung, WS 2009/10 2 Hiermit hat jede Woche (1, 2, 3, 4) die Variablen prod(i) und lager(i). (Die Variable lager(4) ist nicht unbedingt nötig, sie ist aber im nachfolgenden Modell sinnvoll.) Will man den Wochen andere Namen geben, ist dies auch möglich: WOCHE/w19, w20, w21, w22/: prod, lager; Zielfunktion: mit min 4 pcost(i)prod(i) + i=1 3 lcost(i)lager(i) i=1 pcost = (200, 180, 175, 190) und lcost = (30, 30, 30). In LINGO: Wir verändern die Sets in WOCHE/1..4/: prod, lager, pcost, lcost; und fügen die Zielfunktion MIN = @SUM(WOCHE(i): pcost(i)*prod(i) + lcost(i)*lager(i)); sowie die Werte DATA: pcost = 200,180,175,190; lcost = 30,30,30,0; ENDDATA der Beschreibung hinzu. Die letzten 4 Zeilen legen für die Variablen pcost und lcost Werte fest, und diese werden nun als Konstanten, d.h. Koeffizienten, angesehen. (Durch lcost(4)=0 bleibt das Modell korrekt! Alternativ kann auch die Zielfunktion durch MIN = @SUM(WOCHE(i): pcost(i)*prod(i)) + @SUM(WOCHE(i) i #LE# 3: lcost(i)*lager(i)); definiert werden. Nebenbedingungen: prod(i) 36; i = 1, 2, 3, 4 lager(1) =prod(1) nachfrage(1) + 10 lager(i) =prod(i)+lager(i 1) nachfrage(i); i = 2, 3, 4 prod(i) 0; i = 1, 2, 3, 4 lager(i) 0; i = 1, 2, 3, 4 In LINGO: Wir verändern die Sets in WOCHE/1..4/: prod, lager, pcost, lcost, nachfrage; und fügen die Werte nachfrage = 20, 30, 40, 35; in DATA hinzu.

Lineare und Ganzzahlige Optimierung, WS 2009/10 3 Die Nebenbedingungen sind dann: @FOR(WOCHE(i): prod(i) <= 36); lager(1) = prod(1)-nachfrage(1)+10; @FOR(WOCHE(i) i #GE# 2: lager(i) = prod(i) + lager(i-1) - nachfrage(i)); @FOR(WOCHE(i): prod(i) >= 0); @FOR(WOCHE(i): lager(i) >= 0); Bei den letzten beiden Nebenbedingungen kommt eine Besonderheit von LINGO zum Tragen: standardmäßig wird davon ausgegangen, dass alle Variablen nichtnegativ sind (wie man dies umgeht wird später noch behandelt). Die letzten zwei Zeilen sind also streng genommen überflüssig.... die komplette Modellbeschreibung: MODEL: SETS: WOCHE/1..4/: prod, lager, pcost, lcost, nachfrage; ENDSETS MIN = @SUM(WOCHE(i): pcost(i)*prod(i) + lcost(i)*lager(i)); @FOR(WOCHE(i): prod(i) <= 36); lager(1) = prod(1)-nachfrage(1)+10; @FOR(WOCHE(i) i #GE# 2: lager(i) = prod(i) + lager(i-1) - nachfrage(i)); DATA: pcost = 200,180,175,190; lcost = 30,30,30,0; nachfrage = 20, 30, 40, 35; ENDDATA END 3 Generierung des (I)LPs und dessen Lösung LINGO Generate Display model liefert das entsprechende (I)LP-Modell: MODEL: [ 1] MIN= 200 * PROD 1 + 30 * LAGER 1 + 180 * PROD 2 + 30 * LAGER 2 + 175 * PROD 3 + 30 * LAGER 3 + 190 * PROD 4 ; [ 2] PROD 1 <= 36 ; [ 3] PROD 2 <= 36 ; [ 4] PROD 3 <= 36 ; [ 5] PROD 4 <= 36 ; [ 6] - PROD 1 + LAGER 1 = - 10 ; [ 7] - LAGER 1 - PROD 2 + LAGER 2 = - 30 ;

Lineare und Ganzzahlige Optimierung, WS 2009/10 4 [ 8] - LAGER 2 - PROD 3 + LAGER 3 = - 40 ; [ 9] - LAGER 3 - PROD 4 + LAGER 4 = - 35 ; END Nach der Lösungsberechnung (CTRL-U oder LINGO Solve) erscheint ein LINGO Solver Status -Fenster, das Auskunft über den Prozess gibt, und ein solution report, der die Werte der Entscheidungsvariablen, Zielfunktion und weitere nützliche Informationen enthält. Für das Beispiel sieht dieser Report wie folgt aus: Global optimal solution found. Objective value: 21190.00 Total solver iterations: 1 Variable Value Reduced Cost PROD( 1) 10.00000 0.000000 PROD( 2) 34.00000 0.000000 PROD( 3) 36.00000 0.000000 PROD( 4) 35.00000 0.000000 LAGER( 1) 0.000000 50.00000 LAGER( 2) 4.000000 0.000000 LAGER( 3) 0.000000 50.00000 LAGER( 4) 0.000000 190.0000 PCOST( 1) 200.0000 0.000000 PCOST( 2) 180.0000 0.000000 PCOST( 3) 175.0000 0.000000 PCOST( 4) 190.0000 0.000000 LCOST( 1) 30.00000 0.000000 LCOST( 2) 30.00000 0.000000 LCOST( 3) 30.00000 0.000000 LCOST( 4) 0.000000 0.000000 NACHFRAGE( 1) 20.00000 0.000000 NACHFRAGE( 2) 30.00000 0.000000 NACHFRAGE( 3) 40.00000 0.000000 NACHFRAGE( 4) 35.00000 0.000000 Row Slack or Surplus Dual Price 1 21190.00-1.000000 2 26.00000 0.000000 3 2.000000 0.000000 4 0.000000 35.00000 5 1.000000 0.000000 6 0.000000 200.0000

Lineare und Ganzzahlige Optimierung, WS 2009/10 5 7 0.000000 180.0000 8 0.000000 210.0000 9 0.000000 190.0000 Standardmäßig wird von nichtnegativen, rationalen Variablen ausgegangen. Soll im obigen Modell eine Variable als ganzzahlig deklariert werden, so fügt man @FOR(WOCHE(i): @GIN( prod(i))); hinzu (prod(i) sind jetzt nichtnegativ und ganzzahlig). Weitere Möglichkeiten für Variablen: @GIN: ganzzahlig, nichtnegativ ( N) @BIN: binär @FREE: frei (kann sowohl positiv, als auch negativ sein) 4 Weitere Tipps LINGO ist nicht case-sensitive: SUM, SuM, sum oder sum ist das gleiche. Jede Zeile wird mit einem Semikolon (;) beendet, außer SETS, DATA, ENDSETS und ENDDATA. Kommentar beginnen mit Ausrufungszeichen und enden mit Semikolon:! Dies ist ein Kommentar ; Es können auch Matrizen (mehrdimensionale Vektoren ) als Variablen definiert werden: TYP/1..5/; LINK(WOCHE,TYP): prod; definiert eine 2-dimensionalen 4 5 Matrix prod (WOCHE hatte 1..4 als Länge). Sind bei obiger Matrix prod nicht alle Kombinationen von WOCHE und TYP erlaubt, kann man diesen Vektor auch einschränken: LINK(WOCHE,TYP)/1,2 1,3 1,4 2,1 2,4 3,4 4,2 4,4 5,1/: prod prod(1,1) gibt es also nicht, und beim Aufbau des Modells wird dies auch entsprechend berücksichtigt. Um Indizes einzuschränken sind auch logische Operatoren vorhanden: #EQ#: gleich (equal) #NE#: ungleich (not equal) #GE#: größer gleich (greater than or equal) #GT#: größer (greater than) #LE#: kleiner gleich (less than or equal) #LT#: kleiner (less than) #AND#: logisches und #OR#: logisches oder

Lineare und Ganzzahlige Optimierung, WS 2009/10 6 LINGO kennt zwei Dateitypen,.lng und.lg4. Erstgenannte sind reine Textdateien, welche die Modellbeschreibung enthalten, und können mit jedem Editor bearbeitet werden.