Einsatz von Software zur Lösung linearer Optimierungsprobleme im

Transcription

Einsatz von Software zur Lösung linearer Optimierungsprobleme im
Technische Universität Kaiserslautern, Fachbereich Mathematik
SS 2004
Projektstudie zum Thema:
„Einsatz von Software zur Lösung linearer Optimierungsprobleme im Mathematikunterricht“
Prof. Dr. H. W. Hamacher
geschrieben von
Evelyn Stephan
Evelyn.Stephan@web.de
8. Fachsemester
Inhaltsverzeichnis
1
2
Was ist lineare Optimierung?
3
1.1
Einführung
3
1.2
Lineare Optimierung in der Schule:
WelcheVorschriften macht der Lehrplan?
5
Eine Unterrichtseinheit zur linearen Optimierung
6
2.1
Einstieg in die Unterrichtseinheit ohne Computereinsatz
6
2.2
Weiterführung mit dem Rechner und Vorstellung
verschiedener Programme
7
2.2.1
2.3
Das Tabellenkalkulationsprogramm
EXCEL
11
2.2.2
Das Computeralgebrasystem MuPAD
20
2.2.3
Xpress – MP
29
2.2.4
Das Computeralgebrasystem DERIVE
33
2.2.5
Das Computeralgebrasystem MATHEMATICA
38
Schlussbetrachtung
44
3
Literaturverzeichnis
46
4
Versicherung über die selbstständige Anfertigung
und die verwendeten Hilfsmittel
48
2
1. Kapitel
Was ist lineare Optimierung?
1.1 Einführung
Die lineare Optimierung ist ein noch recht junger Zweig der Mathematik, der sich erst im
20. Jahrhundert entwickelte und sich mit der Anwendung der Mathematik in der Wirtschaft
beschäftigt. Dabei handelt es sich um Aufgaben, bei denen nach einem Extremwert (Minimum oder Maximum) einer Größe gesucht wird, welche von mehreren Variablen abhängt.
Diese Variablen sind einschränkenden Nebenbedingungen unterworfen. „Optimal“ bedeutet
also in diesem Zusammenhang soviel wie „extremal unter gewissen Bedingungen“. Die Nebenbedingungen sind meistens durch Gleichungen oder Ungleichungen gegeben, können aber
z.B. auch die Ganzzahligkeit der Lösung fordern.
Es gibt heute eine Fülle von Beispielen, in denen die Methoden der linearen Optimierung ihre
Anwendung finden: Im Transportwesen kann so berechnet werden, wie umfangreiche Transporte mit einem möglichst geringen Aufwand durchgeführt werden können, in der Ernährungswissenschaft und in der Futtermittelindustrie bestimmt man mit diesen Methoden, wie
preiswerte Rationen mit einem vorgegebenen Gehalt an Nährstoffen hergestellt werden können und in der Stahlherstellung ermittelt man so die optimale Ausnutzung der Walzstraßen,
um nur einige Beispiele zu nennen.
Die lineare Optimierung entwickelte sich besonders in den letzten fünfzig Jahren sehr
rasant. 1939 legte der russische Mathematiker Kantorowicz mit seinem Buch „Mathematische
Methoden in der Organisation und Planung der Produktion“ die erste Arbeit über das Gebiet
der mathematischen Optimierung vor. Der Amerikaner F. L. Hitchcock veröffentlichte ebenfalls zu dieser Zeit eine Arbeit über ein Transportproblem. Beide Arbeiten wurden jedoch
lange Zeit nicht beachtet. Erst nach dem zweiten Weltkrieg erkannten Mathematiker und Ökonomen die Möglichkeiten, die hier versteckt waren. Alles ging daraufhin sehr schnell voran. 1947 entwickelte G. B. Dantzig den Simplexalgorithmus, von dem in der vorliegenden
Arbeit auch immer wieder die Rede sein wird. Von dort an wurden immer neue und schnellere Methoden zur Lösung verschiedenster Probleme entwickelt.
Schließlich gelangte man auch zu der Einsicht, dass die lineare Optimierung in der
Schule nicht fehlen sollte, was sich auf den Lehrplan und selbstverständlich auch auf die
Lehrbücher niederschlug. In dem Buch von Behnke, Bertram und Sauer [16] heißt es noch im
Jahr 1966 in Kapitel 5: „Es sollen vielmehr einige Grundzüge der neueren angewandten und
numerischen Mathematik skizziert werden, die dem Gymnasialunterricht nahe liegen. Die
Meinung ist dabei nicht, dass diese Dinge in den Unterricht einzubauen sind. Sie sollen nur
Aufgabenmaterial für die eine oder andere Mathematikstunde liefern.“ Auf dieses Zitat folgt
in dem Buch ein Kapitel zur linearen Optimierung. Heute findet sich dagegen ein Kapitel zu
3
diesem Themenbereich in den meisten Mathematiklehrbüchern, beispielsweise in [12]1 und
[13].
Durch die Aufnahme dieses sehr anwendungsbezogenen Themengebiets in den Unterricht soll den Schülern gezeigt werden, dass Mathematik nicht nur zum Selbstzweck betrieben
wird, wie es in der Schule häufig den Anschein hat, sondern auch wirklich in der Praxis zur
Lösung von Problemen herangezogen werden kann. Dadurch soll ein besonderer Motivationsschub von dieser Unterrichtsreihe ausgehen. Insbesondere der Einsatz von Rechnern, der die
Entwicklung der linearen Optimierung in der vorliegenden Art erst möglich gemacht hat, soll
dabei auch im Unterricht eine wichtige Rolle spielen und die Schüler für dieses Thema begeistern.
In der vorliegenden Arbeit geht es in erster Linie um die Einsatzmöglichkeiten, die fünf
ausgewählte Softwareprogramme in einer Unterrichtsreihe zur linearen Optimierung bieten.
Um jedoch zunächst zu klären, welche Probleme die Programme überhaupt bewältigen können müssen, betrachte ich zuerst die Vorschriften, die der Lehrplan bezüglich dieses Themas
macht. Danach werde ich mir überlegen, welche Inhalte in der Schule vermittelt werden sollten bzw. vermittelt werden können. Anhand dieser Überlegungen möchte ich schließlich in
groben Zügen eine Unterrichtseinheit entwerfen, die diese Inhalte berücksichtigt und die
Softwareprogramme mit ihren jeweiligen Eigenarten zu integrieren versucht. Der Vergleich
der verschiedenen Programme erfolgt an einer Beispielaufgabe, die vor Behandlung der Programme vorgestellt wird.
1.2 Lineare Optimierung in der Schule: Welche Vorschriften macht der
Lehrplan?
Die wachsende Bedeutung der Linearen Optimierung spiegelt sich, wie bereits erwähnt,
in der Formulierung der Lehrpläne wieder, so heißt es im Lehrplan Mathematik für die Klassen 7- 9/10 von Hauptschule, Realschule und Gymnasium, Rheinland – Pfalz, auf Seite 6:
„...Neue mathematische Stoffgebiete, die durch veränderte gesellschaftliche oder wirtschaftliche Bedingungen auch für die schulische Ausbildung relevant wurden und neue
Methoden, die, durch die didaktische Forschung entwickelt, sich im Unterricht als erfolgreich erwiesen, werden ebenfalls berücksichtigt. Hierzu zählen z.B. die Statistik und
in Realschule und Gymnasium das lineare Optimieren.“
In diesem Lehrplan werden fachspezifisch-allgemeine Lernziele des Mathematikunterrichts aufgeführt, die durch das Lösen von linearen Optimierungsaufgaben meiner Meinung
nach erfüllt werden und somit die Aufnahme der linearen Optimierung in den Lehrplan bei
weitem rechtfertigen. Unter anderem sind dabei zu nennen:
Die Förderung von Fähigkeiten wie Abstraktionsvermögen, problemlösendes Verhalten und
mathematisches Modellieren, sowie die Einübung von fachlichen Kompetenzen wie dem Lösen von Gleichungen und Ungleichungen, die Anfertigung von Skizzen und Zeichnungen und
nicht zuletzt dem Einsatz von Computern zur Lösung dieser Probleme.
All diese Fähigkeiten werden beim Modellieren einer linearen Optimierungsaufgabe geschult,
da zunächst die Problemstellung erkannt, wichtige von unwichtigen Informationen getrennt,
ein mathematisches Modell formuliert und gelöst, sowie eine Interpretation der mathematischen Lösung vorgenommen werden muss.
1
Die Zahlen in eckigen Klammern beziehen sich auf die Literaturliste auf Seite 47.
4
Allerdings wird der linearen Optimierung dann doch nur ein eher geringer Platz im
Lehrplan eingeräumt. In den Hauptschulen wird die Problematik gar nicht besprochen, in den
Realschulen und Gymnasien soll sie in der neunten Klasse am Ende eines Blocks über „lineare Gleichungen und Ungleichungen mit zwei Lösungsvariablen“ behandelt werden. Dabei
sollen die Schüler am Ende der Unterrichtseinheit in der Lage sein, einfache Aufgaben zum
linearen Optimieren lösen zu können. Konkret heißt es hier: [1] S.132
„Beim Lösen von Aufgaben zum linearen Optimieren steht der Prozess der Mathematisierung von Sachproblemen im Vordergrund und nicht das schematische Einüben von
Lösungsverfahren. Es sollen deshalb auch den Schülern nur „einfache“ Aufgaben zur
selbstständigen Bearbeitung vorgelegt werden.
„Einfach“ bedeutet hier:
Aus dem vorgegebenen Aufgabentext müssen unmittelbar zu entnehmen sein:
• Die Variablen x und y des Ungleichungssystems
• Die Bedingungen für diese Variablen
• Die zu optimierende Größe und deren Abhängigkeit von x und y
Es ist möglich, auf die Zielfunktion ganz zu verzichten und die optimale Lösung durch
systematisches Probieren am Planungsvieleck zu ermitteln.“
Im Lehrplan für die Oberstufe [2] wird die lineare Optimierung nicht explizit erwähnt,
könnte aber wohl als Anwendungsgebiet in einer Unterrichtsreihe zur linearen Algebra behandelt werden.
Besonders dem Ruf nach häufigerem Computereinsatz im Mathematikunterricht, der
auch im Lehrplan immer wieder auftaucht, kann mit dieser Themenreihe nachgekommen
werden, wie im Abschnitt 2.2 deutlich wird.
5
Kapitel 2
Eine Unterrichtseinheit zur Linearen Optimierung
Im folgenden Teil meiner Projektstudie möchte ich versuchen, in groben Zügen eine
Unterrichtsreihe zum Thema lineare Optimierung zu umreißen, die insbesondere die Lösung
von Optimierungsproblemen mithilfe verschiedener Softwareprogramme berücksichtigt, und
damit wohl über den Rahmen des im Lehrplan vorgesehenen Unterrichtsbausteins zu diesem
Thema hinausgeht. Zielgruppe ist hierbei eine Klasse ab der achten Jahrgangsstufe, durch
entsprechende Erweiterungen wie z.B. die Einführung des Simplexalgorithmus, kann die Unterrichtsreihe aber auch auf Leistungskursniveau gebracht werden.
Zunächst möchte ich in diesem Kapitel meiner Arbeit kurz ansprechen, wie das Thema
in den ersten Stunden der Unterrichtsreihe anhand einer praktisch, ohne Computereinsatz zu
lösenden Aufgabe eingeführt werden kann.
Im zweiten Teil, wenn die Schüler bereits über Grundkenntnisse der linearen Optimierung verfügen, soll der Computer zum Einsatz kommen, um die erworbenen Fähigkeiten auszubauen und zu vertiefen. Diesen Teil möchte ich ausführlicher besprechen. Dabei sollen fünf
verschiedene Softwareprogramme vorgestellt werden, die an dieser Stelle Verwendung finden
könnten. Ein Vergleich ihrer jeweiligen Fähigkeiten und Eigenarten erfolgt durch die Bearbeitung einiger Beispielaufgaben.
Eine Behandlung des Themas der linearen Optimierung ausschließlich am Rechner
halte ich für ungeeignet, da vermutlich, besonders beim Einstieg in das Thema, nicht nur mathematische Probleme, sondern auch technische Probleme bzw. Probleme der Schüler mit
dem Programm das Verständnis behindern.
Ein einführender Kurs zu diesem Thema in der Schule könnte, meiner Meinung nach, die
folgenden Aspekte enthalten:
•
•
•
•
Lösen von Maximums – und Minimumsaufgaben (graphisch und mit einem Softwareprogramm) mit beschränktem, unbeschränktem und leerem zulässigen Bereich
bzw. eindeutiger und nicht eindeutiger Lösung
Aufstellen des Linearen Programms bei einer Zielfunktion mit mehr als zwei Variablen und lösen des Problems mit dem Rechner
Eventuell Ausblick auf ganzzahlige oder nichtlineare Optimierung
Im Leistungskurs: Hauptsatz der linearen Optimierung, Simplexverfahren
Ich werde versuchen diese Bereiche hier abzudecken.
2.1 Einstieg in die Unterrichtseinheit ohne Computereinsatz
Zum Einstieg in diese Themenreihe bietet sich ein fächerübergreifender Ansatz an.
Beispielsweise im Fach Sozialkunde kann bei der Behandlung des Themas „Wirtschaftsord6
nung und Wirtschaftspolitik“ auf die Probleme bei der möglichst kostengünstigen, aber gewinnbringenden Produktion einer Ware eingegangen werden. Somit wäre der Grundstein für
eine „sinnvolle“ Mathematikaufgabe gelegt. Es würde sich z.B. die in [11] S.166 gestellte
Aufgabe 2: “Stellt die Tätigkeiten zusammen, die bei der Entwicklung, der Produktion und
dem Vertrieb eines neuen Autos anfallen...“ mit entsprechenden Zusatzformulierungen für
einen solchen Ansatz eignen. Die Schüler könnten zur Aufgabe gestellt bekommen, sich über
die Kosten eines bestimmten Autos zu informieren und sich auch über die darin enthaltenen
Herstellerkosten Gedanken zu machen. In welcher Größenordnung liegen sie? Was möchte
der Produzent erreichen? Welche Bedingungen z.B. bezüglich des Personal muss er beachten?
So kann schrittweise eine „aus dem Leben entnommene“ Optimierungsaufgabe erstellt werden. Dabei wird natürlich in diesem Fach noch nicht mathematisch formuliert, sondern nur
allgemein die Nebenbedingungen in mündlicher Form ausgedrückt. Als Hausaufgabe für die
nächste Mathematikstunde sollen sich die Schüler eine geeignete Lösung des Herstellerproblems überlegen. Somit erfahren sie deutlicher als in vielen anderen Mathematikstunden, dass
der Stoff, den sie erlernen, auch wirklich praktisch anwendbar ist.
In der folgenden Mathematikstunde sollten die Lösungen der Schüler verglichen und
die beste ausgesucht werden. Dann kann man zur mathematischen Lösung des Problems übergehen. Es wird ein Arbeitsblatt mit einem sehr einfachen Maximierungs- oder Minimierungsproblem ausgeteilt, das graphisch gelöst werden soll und das die Schüler in Zweier- oder
Dreiergruppen bearbeiten.
Dabei wird vorausgesetzt, dass die Schüler mit der graphischen Lösung eines Systems
linearer Ungleichungen mit zwei Variablen vertraut sind oder zumindest die Themen „Lineare
Funktionen und ihre Graphen“ und „Lineare Gleichungssysteme“ (Schnittpunktberechnung
bei Geraden) behandelt wurden. Eine ausführliche und schrittweise Erklärung sowie eine Reihe von Aufgaben finden sich beispielsweise in den Schulbüchern [12] S.47 und [13] S.44.
Als Hausaufgabe kann eine analoge Aufgabe gestellt werden. Dieser Teil der Unterrichtsreihe
sollte nicht mehr als zwei Mathematikstunden in Anspruch nehmen und an ihrem Ende müssen die Schüler in der Lage sein, mit den Begriffen Zielfunktion, Nebenbedingungen, Nichtnegativitätsbedingung, zulässiger Bereich, zulässige Lösung und Zielfunktionswert umzugehen. Nun ist ein Übergang zum computergestützten Unterricht möglich, da die Grundbegriffe
geklärt wurden. Wurden bisher nur Minimierungsaufgaben bearbeitet, so sollten in den folgenden Stunden Maximierungsaufgaben gestellt werden und umgekehrt.
2.2 Weiterführung mit dem Rechner und Vorstellung verschiedene Programme
Nachdem den Schülern nun allgemein bekannt ist, mit welchen Problemen sich die lineare Optimierung beschäftigt und Grundbegriffe geklärt wurden, können die erworbenen
Fähigkeiten am Rechner vertieft und schwierigere Probleme in Angriff genommen werden. Es
bieten sich hierzu verschiedene Softwareprogramme an, die teilweise sehr unterschiedliches
leisten. Ich habe fünf Programme ausgewählt, die geeignet zu sein scheinen und jetzt vorgestellt werden. Dabei handelt es sich um das Tabellenkalkulationsprogramm EXCEL, die
Computeralgebrasysteme (CAS) DERIVE, MATHEMATICA und MuPAD und das speziell
für die mathematische Optimierung entwickelte Programm Xpress MP.
Dabei werde ich die Programme zur Lösung der folgenden Aufgaben einsetzen, um
einen Vergleich zwischen ihnen zu ermöglichen. (Aufgabe 1 und 2 aus [3] S. 4, S. 41 in abgewandelter Form übernommen, Aufgabe 3 aus [14] S.14)
7
Aufgaben
1. Aufgabe:
Eine Firma stellt zwei verschiedene Handytypen her. Bei der Produktion muss folgendes beachtet werden:
Die Abteilung, die die Gehäuse herstellt, kann in einer Woche höchstens 1000 Gehäuse des
einen oder des anderen Typs herstellen. Die Montageabteilung kann aus logistischen Gründen höchstens 800 Handys des zweiten Typs in der Woche zusammenbauen. Die Abteilung
für elektrische Installation kann höchstens 800 Handys des ersten Typs oder 1200 Handys des
zweiten Typs oder eine entsprechende Kombination in der Woche fertig stellen.
Das Management der Firma möchte wissen, wie viele Handys des ersten bzw. des zweiten
Typs hergestellt werden müssen, um den Gewinn pro Woche zu maximieren, wenn Handytyp
eins 120 Euro und Handytyp zwei 90 Euro kosten soll.
(Hinweis: Für ein Handy des Typs eins ist 1/800, für ein Handy des Typs zwei 1/1200 der
wöchentlichen Arbeitszeit aufzuwenden)
a)
b)
c)
d)
Formuliere das lineare Programm und löse es graphisch.
Löse das Problem mit dem (jeweiligen) Softwareprogramm.
Ändere den Preis von Handytyp eins auf 135 Euro. Welche Lösung ergibt sich
jetzt? (kein Eckpunkt sondern Randstrecke)
Verändere die Nebenbedingungen nach Wahl, lass zum Beispiel einige Nebenbedingungen weg oder ändere die Zahlen. Was siehst du? (unbeschränkt, nicht ganzzahlige Lösungen, leerer zulässiger Bereich)
2. Aufgabe:
Die Firma möchte ihr Angebot erweitern und produziert künftig auch zwei weitere
Handytypen. Die Abteilung für die Gehäuseabteilung steigert ihre Produktion auf 1800. Der
dritte Handytyp soll 150 Euro kosten und kann höchstens 400 mal pro Woche in der Montageabteilung zusammengebaut werden. Der vierte Handytyp kostet nur 70 Euro, kann dafür
aber 900 mal zusammengebaut werden. Die Installationsabteilung kann höchstens 400 Handys des dritten Typs oder 1200 Handys des vierten Typs fertig stellen. Sonstige Bedingungen
gelten wie in Aufgabe 1.
a)
b)
Formuliere das dazugehörige lineare Programm, kann es graphisch gelöst werden?
Löse die Aufgabe mit einem Softwareprogramm. Ist die Lösung realistisch? (Wie
könnte eine ganzzahlige Lösung aussehen?)
Bemerkung:
Die Worte in Klammern sollten auf einem Aufgabenblatt für Schüler nicht enthalten
sein. Sie dienen lediglich der Orientierung, was mit dem jeweiligen Aufgabenteil bezweckt
werden soll.
8
Die zugehörigen linearen Programme sehen folgendermaßen aus:
Aufgabe 1:
max 120 x + 90 y
u.d.N. x + y ≤ 1000
y ≤ 800
3 x + 2 y ≤ 2400
x, y ≥
(1)
0
Aufgabe 2:
max 120 x + 90 y + 150 z + 70 w
u.d.N. x + y + z + w ≤ 1800
≤ 800
y
z
≤ 400
w ≤ 900
3 x + 2 y + 6 z + 2 w ≤ 2400
x, y , z , w ≥
0
(2)
Bemerkung:
Wie bereits oben erwähnt, halte ich es für möglich, in einem Mathematikleistungskurs
den Hauptsatz der linearen Optimierung sowie das Simplexverfahren einzuführen. Dabei
würde ich mit der Einführung des Themenbereichs der linearen Optimierung genauso beginnen wie oben beschrieben, nur können die Aufgaben etwas schneller abgehandelt werden.
Dann stellt sich die Frage nach der prinzipiellen Form des Zulässigkeitsbereichs. An dieser
Stelle kann der Begriff der konvexen Menge mit den Schülern erarbeitet werden. Durch die
Frage nach den Stellen an denen optimale Punkte überhaupt liegen können, gelangt man
schließlich zum Hauptsatz der linearen Optimierung (Formulierung nach [14]):
Eine n-stellige reelle lineare Funktion, die auf einem durch reelle lineare Ungleichungen mit n
Variablen beschriebenen konvexen Bereich (Zulässigkeitsbereich) definiert ist, nimmt ihr
Maximum bzw. ihr Minimum – sofern ein solches existiert – stets am Rand dieses Bereiches
an.
Nun ist es möglich, die Arbeitsweise des Simplexalgorithmus anschaulich als „Abwandern von Ecken mit Richtungshinweisen“ zu erklären. Eine stark vereinfachte, aber sehr
leicht verständliche Erklärung findet sich auch in [5], S.61. Eine mathematische Begründung
des Simplexverfahrens würde zu weit führen, ist aber für Interessierte in [15] ausführlich dargestellt. Die Schritte des Algorithmus sollten lediglich an Beispielen vorgestellt werden, um
dann von den Schülern nachvollzogen werden zu können. So lernen sie eine Möglichkeit kennen, mit der Probleme mit mehr als zwei Variablen bearbeitet werden bzw. mit der die Softwareprogramme diese Aufgaben lösen. Ich werde auch untersuchen, inwieweit sich die später
vorgestellten Programme in dieser Unterrichtseinheit einsetzen lassen.
9
Zum Ende der Unterrichtsreihe ist es möglich einen Ausblick auf nichtlineare Optimierungsprobleme zu geben. Dafür eignet sich beispielsweise folgende Aufgabe:
3. Aufgabe:
Viktoria will für ihr Zwergkaninchen ein rechteckiges Gehege direkt an der Hauswand einrichten. Sie hat dafür 3 Meter passenden Drahtzaun auf einer Rolle. Wie soll sie die
Seitenlängen wählen, damit der Flächeninhalt maximal wird?
Es ist also
max x ⋅ y
u.d .N . 2 x + y = 3
x, y ≥ 0
zu lösen.
Nun komme ich zur Bearbeitung dieser Aufgaben mit den erwähnten Programmen.
10
(3)
2.2.1 Das Tabellenkalkulationsprogramm EXCEL
Das Tabellenkalkulationsprogramm Excel ist eine Standardsoftware, die auf jedem
Rechner vorhanden ist. Mit Excel können Tabellen erstellt werden, in deren Zellen sowohl
Texte als auch Größen sowie Zahlen eingegeben werden können. Das Besondere einer Tabellenkalkulation ist aber, dass in die einzelnen Zellen einer Tabelle auch Rechenvorschriften
eingeschrieben werden können, nach denen die in anderen Zellen eingegebenen Zahlen miteinander verknüpft werden. Auf diese Weise lassen sich schnell Tabellen unter Annahme unterschiedlicher Bedingungen berechnen. Die erstellten Tabellen lassen sich als Diagramme
darstellen [17].
In diesem Programm ist ein Tool „SOLVER“ enthalten, das zur Lösung von linearen
und nichtlinearen Extremwertproblemen dienen kann. In dieser Unterrichtsreihe zur linearen
Optimierung kann dadurch der Simplexalgorithmus als sogenannte Black Box eingesetzt werden. EXCEL ermöglicht außerdem auch eine grafische Lösung von Problemen mit zwei Variablen. Meine Darstellung orientiert sich hier an [6].
Zusätzlich besteht die Möglichkeit mit dem Tool „SIMPLEX“ Pivotoperationen an
Simplextableaus vorzunehmen. Ich bearbeite nun die oben gestellten Aufgaben, um die eben
erwähnten Möglichkeiten dieses Programms vorzustellen.
Lösung zu Aufgabe 1:
zu Aufgabe 1. b) Löse das Problem mit dem (jeweiligen) Softwareprogramm.
Graphische Lösung:
Zunächst erfolgt die Bestimmung der „Spurgeraden“ (Begrenzungsgeraden der Halbebenen) aus (1), die dann aufgrund der Nichtnegativitätsbedingungen im ersten Quadranten
gezeichnet werden.
y1 = 1000 −
x
y 2 = 800
y 3 = 1200 − 1,5 x
Die Schnittmenge der drei Halbebenen bestimmen den zulässigen Bereich. Für die
Zielfunktion gilt:
G 4
yz =
− x, ( wobei G für den erzielten Gewinn steht)
90 3
Durch paralleles Verschieben der Zielgeraden über dem zulässigen Bereich ergibt sich
dann der gesuchte maximale Wert an dessen Rand (bzw. einem Eckpunkt). Diese Vorgehensweise ist natürlich allen Programmen gemeinsam.
Zur Realisierung dieses Vorgehens mit Excel erstellt man zunächst eine Wertetabelle
für die Spurgeraden. Diese ist in Abb.2.1 zu sehen, in der ersten Spalte befinden sich die Werte für die Variable x. Die drei folgenden Spalten enthalten die Werte für die jeweilige Spurgerade. Der zulässige Bereich ergibt sich bei diesem Maximierungsproblem dann als Minimum
der jeweiligen Werte, dargestellt in der fünften Spalte. (Die in Abb.2.1 in jeder Zelle enthaltenen Anführungsstriche bewirken lediglich eine Ausgabe der Formel statt des berechneten
11
Werts, sie müssen bei einer Anwendung ausgelassen werden.) Weiterhin benötigt man die
sechste Spalte für den Wert der Zielfunktion in jeder Zeile.
Abbildung 2.1: Formeln zur Berechnung des zulässigen Bereichs und der Zielfunktion
Um die Zielfunktion im späteren Diagramm bewegen zu können, verknüpft man zunächst die Spalte mit der Zielfunktion mit der Zelle für G (über die Eingabe von $F$1 in den
Zellen F3 – F5). Zuletzt muss die Zelle für G noch mit einer Bildlaufleiste verknüpft werden,
wie im Folgenden beschrieben wird. Später ist es dann möglich durch Ziehen an der Bildlaufleiste die Zielfunktion im Diagramm zu verschieben. Die Bildlaufleiste befindet sich im Menü
„Ansicht > Symbolleisten > Formular“.
Abbildung 2.2: Bildlaufleiste
Sie kann mit der Maus aufgezogen und entsprechend positioniert werden (wie z.B. in
Zelle $G$1 in Abb.2.1). Die Zellverknüpfung muss noch hergestellt werden: Das Kontextmenü öffnet sich durch einen Klick mit der rechten Maustaste und durch „Steuerelemente formatieren“ erhält man eine Dialogbox, in der die Ausgabeverknüpfung zur entsprechenden Zelle
in unserer Tabelle hergestellt werden muss:
Abbildung 2.3: Zellverknüpfung herstellen
12
Der Maximalwert einer Bildlaufleiste beträgt lediglich 30 000, der Gewinn G sollte
aber in Bereichen bis 200 000 veränderbar sein, daher wird der Wert der Bildlaufleiste durch
eine Multiplikation mit 2000 in der Zelle $F$1 heraufgesetzt (siehe Abb.2.1).
Nun ist es möglich ein Diagramm mit Zielfunktion und zulässigem Bereich zu erstellen. Hierzu verfolgt man den Pfad „Einfügen > Diagramme > Punkt (XY)“ und wählt den
Untertyp „Punkte mit Linien ohne Datenpunkte“ aus. Durch entsprechendes Markieren der
ersten Spalte und der Spalte für den zulässigen Bereich bzw. die Zielfunktion entsteht so das
folgende Diagramm:
Eindeutige Lösung
1200
1000
800
zulässiger Bereich
600
Zielfunktion
400
200
0
0
200
400
600
800
1000
Abbildung 2.4 : Zulässiger Bereich und Zielfunktion
Im Eckpunkt (400/600) erreicht G den Maximalwert 102 000. Also müssen 400 Handys des Typs eins und 600 Handys des Typs zwei produziert werden, um den maximalen Gewinn von 102 000 Euro zu erzielen. In diesem Fall sieht die zugehörige Wertetabelle folgendermaßen aus:
Abbildung 2.5: Wertetabelle im Zielbereich
13
Wie man aus dieser Tabelle und dem Diagramm erkennt, schneiden sich in diesem
Punkt die Spurgeraden y1 und y2.
Lösung mit dem SOLVER:
Excel verfügt über ein leistungsstarkes Werkzeug zur Lösung von linearen Optimierungsaufgaben, den SOLVER. Dieses Tool findet sich im Menü EXTRAS. Sollte der SOLVER dort nicht aufgeführt sein, muss er über „EXTRAS > ADD-IN-Manager > SOLVER“
aktiviert werden. Der SOLVER verwendet zur Lösung von linearen und ganzzahligen Problemen die Simplexmethode und die „Branch and Bound“ – Methode, weitere Informationen
zu den verwendeten Algorithmen finden sich in der Hilfe zum SOLVER.
Man gibt zunächst das Optimierungsproblem etwa folgendermaßen ein:
Abbildung 2.6: Eingabe der Aufgabe
In dieser Abbildung 2.6 enthalten die Zellen B3 und C3 die zu verändernden Variablen. Diese werden dann mit der Zelle H2, die die Formel für die Zielfunktion beinhaltet, verknüpft. Weiterhin verknüpft man sie mit den Zellen F5–F7, in denen, zusammen mit E5-E7,
die Nebenbedingungen stehen.
Dann wird der SOLVER mit folgenden Angaben für Zielzelle (Zielfunktion), Zielwert
(Max/Min), veränderbare Zellen (Variablen) und Nebenbedingungen gefüllt:
Abbildung 2.7: EXCEL - SOLVER
14
Dabei ist noch zu beachten, dass unter Optionen die Nichtnegativität der Variablen
ausgewählt wird. Somit erhält man die erwartete Lösung x = 400, y = 600, maximaler Gewinn
102 000 Euro:
Abbildung 2.8: optimale Lösung
zu Aufgabe 1. c) Ändere den Preis von Handytyp eins auf 135 Euro. Welche Lösung ergibt
sich jetzt?
Als neue Zielfunktion erhält man somit:
G 3
− x,
90 2
Durch entsprechendes Abändern der Funktion in der Tabelle ergibt sich folgendes Diagramm:
yz =
nicht eindeutige Lösung
1400
1200
1000
800
zulässiger Bereich
600
Zielfunktion
400
200
0
0
200
400
600
800
1000
Abbildung 2.9 : Lösung ist Randstrecke
Wie man sieht, ist die Lösung hier zum ersten Mal nicht eindeutig bestimmt (also kein
Eckpunkt), sondern es ergibt sich eine Strecke. Ziel ist es hiermit den Schülern zu veranschaulichen, dass alle Punkte dieser Strecke optimale Lösungen sind und nicht immer nur eine
optimale Lösung existieren muss.
Der SOLVER liefert, wie erwartet, die bereits oben gefundene Lösung x = 400, y =
600 in Abb.2.10. Nur der maximale Gewinn hat einen anderen Betrag, da ja die Zielfunktion
verändert wurde. Er beträgt jetzt 108 000 Euro.
15
Abbildung 2.10: Lösung mit dem SOLVER
zu Aufgabe 1. d) Verändere die Nebenbedingungen nach Wahl, lass zum Beispiel einige Nebenbedingungen weg oder ändere die Zahlen. Was siehst du? (unbeschränkt, nicht ganzzahlige Lösungen)
Lässt man beispielsweise die erste und die dritte Nebenbedingung im LP (1) weg, so
ergibt sich ein zulässiger Bereich, der unbeschränkt ist. Oder durch Hinzufügen der Bedingung y >= 1000 wird das lineare Problem unlösbar. Außerdem werden bei Änderung der Nebenbedingungen mit Sicherheit nicht-ganzzahlige Lösungen auftreten. So werden die Schüler
spielerisch an häufig auftretende Probleme und Spezialfälle herangeführt und erhalten einen
kleinen Ausblick auf andere Gebiete der Optimierung.
Diese Veränderungen lassen sich mit dem SOLVER sehr einfach und schnell durch Abänderung der Zahlenwerte oder durch die Befehle „Hinzufügen/Ändern/Löschen“ im Feld für die
Nebenbedingungen durchführen. Änderungen in der graphischen Lösung erfordern dagegen
mehr Geschick im Umgang mit Excel und sind daher wohl eher nicht für die Schülerhand
geeignet.
Lösung zu Aufgabe 2:
Diese Aufgabe enthält vier Variablen und ist daher natürlich nur noch mit dem SOLVER lösbar:
Abbildung 2.11: Lösung zu Aufgabe 2
Diese Lösung x = 266,67, y = 800, z = 0, w = 0 und optimalem Gewinn von 104 000
Euro ist in der Praxis unbrauchbar, da eine Anzahl von x = 266,67 Handys in der Praxis nicht
hergestellt werden kann. Falls die Schüler nicht selbst Einwände gegen diese Lösung erheben,
sollte darauf hingewiesen werden. Dieses Problem kann behoben werden, indem man zusätzliche Nebenbedingungen im SOLVER hinzufügt. Dazu wählt man „Extras > SOLVER > Ne16
benbedingung Hinzufügen“, dann sollte in die Zielzelle die jeweilige Zelle für eine Variable
eingegeben und der Operator „ganzzahlig“ ausgewählt werden.
Abbildung 2.12:Ganzzahlige Lösung von Aufgabe 2
Somit ergibt sich die in Abb. 2.12 gezeigte Lösung x = 266, y = 800, z = 0, w = 1, mit
der ein Gewinn von 103 990 Euro erzielt wird.
Lösung zu Aufgabe 3:
Auch nichtlineare Probleme lassen sich mit dem SOLVER lösen:
Abbildung 2.13: Lösung zu Aufgabe 3
Es ergibt sich x = 0,75 m und y = 1,5 m. Dann hat der Käfig die maximale Fläche von
1,125 m².
Einsatz von Excel im Leistungskurs zur Einführung des Simplexalgorithmus
Zusätzlich bietet Excel mit dem Tool „SIMPLEX“ die Möglichkeit, nach Eingabe eines Simplextableaus und dem Aussuchen einer Pivotspalte, Pivotoperationen durchführen zu
lassen. Dabei muss das Simplextableau in folgender Form in die Zellen eingegeben werden:
−1
−1
AB A
AB b
−1
c − c B AB A
−1
− c B AB b
Hier ein Beispiel:
17
Abbildung 2.14: Eingabe des Simplextableaus
Zuerst müssen alle Zellen markiert werden, um dann mit „Simplex -> SetTableau“
(siehe Abbildung 2.14) das Simplextableau festlegen zu können. Dann wird mithilfe von „SelectPivotCol“ die Spalte ausgewählt, in der ein Pivotelement gesucht werden soll:
Abbildung 2.15: Aussuchen der Pivotspalte
In Abbildung 2.15 wurde die erste Spalte ausgesucht. Nach Markieren der Spalte erscheint am Ende des Tableaus eine zusätzliche Spalte, die die Wahl des Pivotelements bestimmt. Nach dem Simplexalgorithmus muss dasjenige Element der Pivotspalte ausgesucht
werden, für das tr,n+1/trj (hier in der Spalte H enthalten) minimal wird. Hier entspricht diese
Regel dem Element in B3. Nach Markieren von B3 und Auswahl von „Simplex -> Pivot“
ergibt sich folgendes Tableau:
Abbildung 2.16: Durchführung der Pivotoperation
Dieser Vorgang wird wiederholt und man erhält das optimale Tableau:
18
Abbildung 2.17: optimales Simplextableau
Nach der Besprechung des Simplexalgorithmus (lediglich der Reihenfolge der Schritte) und Vorführung eines Beispiels, das die Funktionsweise dieses „Simplex“ – Tools verdeutlicht, sollten die Schüler in der Lage sein selbst einige Aufgaben mit dem Simplexalgorithmus zu lösen bzw. durch Herumprobieren eigene Erfahrungen zu machen. Ich denke, dass
sich die einzelnen Schritte des Algorithmus so leichter im Gedächtnis der Schüler verankern
und nicht einfache, aber langwierige Rechnungen den Blick auf das Wesentliche versperren.
Excel bietet also viele Möglichkeiten des sinnvollen Einsatzes beim Thema „Lineare
Optimierung“ im Mathematikunterricht. Ein besonderer Vorteil dieses Programms ist, dass es
an jeder Schule vorhanden sein müsste, was bei den folgenden Programmen nicht unbedingt
der Fall sein muss. Nachteilig wirkt sich aus, dass die graphische Lösung nicht ganz einfach
realisierbar ist. Bereits kleine Tippfehler führen zu großen Problemen und lassen sich schwer
beseitigen. Die Veränderungen der Nebenbedingungen gestalten sich schwierig und sind nur
mit viel Verständnis für das Programm durchführbar. Müssen die Schüler selbst die Tabellen
zur Zeichnung aufstellen, wird das viel Zeit in Anspruch nehmen. Allerdings eignet sich ein
fertiges Diagramm für eine Demonstration des Verschiebens der Zielgeraden über den zulässigen Bereich sehr gut.
Man muss aber auch beachten, dass dieses Verfahren zur Zeichnung des zulässigen
Bereichs in dieser Form nur anwendbar ist, wenn die untere Begrenzung des zulässigen Bereichs durch die positive x – Achse erfolgt. Ist das nicht der Fall, muss man sich ein anderes
Verfahren zur Darstellung des zulässigen Bereichs überlegen. Dies dürfte zwar nicht allzu
schwierig sein, jedoch muss daher schon vorher bekannt sein, wie der zulässige Bereich aussieht. Dieses Problem tritt beim CAS MuPAD, das im nächsten Teil vorgestellt wird, nicht
auf.
Die beiden Tools SOLVER und SIMPLEX sind dagegen relativ schnell zu verstehen
und auch recht einfach zu bedienen. Beim Gebrauch des SOLVER lassen sich Veränderungen
der Nebenbedingungen und der Zielfunktion schnell durchführen und der „SIMPLEX“ ermöglicht es, die Schritte des Simplexalgorithmus zu verfolgen. Sie eignen sich daher recht gut
für den Unterricht.
19
2.2.2 Das Computeralgebrasystem MuPAD
MuPAD pro ist ein Computeralgebrasystem, das durch eine Kombination aus interaktiven Arbeitsblättern, einer umfangreichen mathematischen Bibliothek und vielen Grafikmöglichkeiten vielseitig in den mathematischen Unterricht integriert werden kann. Es ermöglicht
Modelle in einer Mathematik – nahen Syntax zu definieren, zu kommentieren und zur Unterstützung des Modellbildungsprozesses auch zu visualisieren. Die Funktionen der linearen Optimierung basieren hierbei auf dem 2-Phasen Simplexalgorithmus. Zum Auffinden ganzzahliger Lösungen wird der Algorithmus von Land – Doig benutzt. MuPAD pro ist keine reine
Schulsoftware, sondern ist auch im Studium und Beruf einsetzbar. Das Programm wurde von
SciFace Software und der MuPAD Forschungsgruppe der Universität Paderborn, NRW, entwickelt [7].
Die in MuPAD enthaltene Bibliothek für lineare Optimierung liefert einige wichtige Befehle, die hier kurz vorgestellt werden sollen. Ich halte es für sinnvoll in einer Unterrichtseinheit, in der dieses Programm eingesetzt werden soll, die folgende Liste in ausgedruckter Form
den Schülern zur Verfügung zu stellen:
• linopt::corners([constr,obj],vars)
Berechnet alle zulässigen Ecken des durch die Restriktionen constr und die Zielfunktion
obj gegebenen linearen Optimierungsproblems mit den Variablen vars. Zusätzlich wird
die optimale Lösung mit dem zugehörigen Zielfunktionswert zurückgegeben.
linopt::corners([constr,obj], vars, All)
Berechnet alle Ecken des linearen Optimierungsproblems (auch unzulässige).
Beinhaltet die Definition des linearen Programms zusätzlich die Option „NonNegative“,
so dürfen alle Variablen nur nicht-negative Werte annehmen.
• linopt::maximize([constr, obj])
Berechnet die Lösung der linearen oder gemischtganzzahligen Optimierungsaufgabe, die
durch die Restriktionen constr und die Zielfunktion obj beschrieben wird und maximiert werden soll. Die Option All würde zusätzlich bewirken, dass alle Variablen nur
ganzzahlige Werte annehmen. Eine Option DualPrices ermöglicht eine Ausgabe der
Schattenpreise, was aber in der Schule weniger interessant sein dürfte. Dieser Befehl kann
die Zustände OPTIMAL (optimale Lösung gefunden), EMPTY (es existiert keine Lösung)
oder UNBOUNDED (unbeschränkter Zulässigkeitsbereich) zurückgeben. Der folgende Befehl arbeitet analog für ein Minimierungsproblem:
linopt::minimize([constr, obj])
• linopt::plot_data([constr, obj], vars)
Liefert eine grafische Darstellung des zulässigen Bereiches des linearen Optimierungsproblems und einer Geraden, die orthogonal zum Zielfunktionsvektor ist und durch die
Ecke mit dem optimalen gefundenen Zielfunktionswert geht. (Um diesen Befehl benutzen
20
zu können, müssen zuvor durch den linopt::corners Befehl die Ecken ausgerechnet
worden sein.)
Diese Befehle müssten zur Behandlung der linearen Optimierung in der Mittelstufe bereits
ausreichen. In der Oberstufe, bei der Einführung des Simplexalgorithmus, bieten sich noch
folgende Kommandos an:
• linopt::Transparent([constr,obj])
Dieser Befehl berechnet das kanonische Simplex – Tableau des linearen Optimierungsproblems, das durch die Restriktionen constr und die Zielfunktion obj beschrieben
wird. (Achtung: Alle Prozeduren der linopt Bibliothek, die das von linopt::Transparent gelieferte Tableau benutzen, dienen der Minimierung des gegebenen Problems! Es kann also notwendig sein, die Zielfunktion zuerst mit –1 zu multiplizieren.)
Im zurückgegebenen Simplex – Tableau des Domaintyps linopt::Transparent wird
eine eigene Notation benutzt. „linopt“ steht hier für das Tableau, „obj“ beschreibt die
lineare Zielfunktion, „restr“ steht für die Beschränkungen, slk [1], slk[2], ...
sind die Schlupfvariablen und die Namen der anderen Variablen stehen jeweils für sich
selbst. Eine Variable, die als Zeilenbeschriftung auftaucht, zeigt an, dass diese Variable
Basisvariable ist.
• linopt::Transparent::autostep(tableau)
Führt den nächsten Simplexschritt für das gegebene Simplextableau tableau aus. Es
wird entweder ein Simplextableau des Domaintyps linopt::Transparent oder eine
Menge, die eine Lösung des linearen Optimierungsproblems enthält, zurückgegeben.
• linopt::Transparent::result(tableau)
Bestimmt die zum gegebenen Simplex – Tableau zugehörige Ecke und gibt die Werte der
benutzerdefinierten Variablen zurück.
• linopt::Transparent::simplex(tableau)
Beendet die aktuelle Phase des 2 – Phasen Simplexalgorithmus, auf dem gegebenen Simplex – Tableau tableau (springt also direkt zum optimalen Tableau).
• linopt::Transparent::suggest(tableau)
Schlägt den nächsten Simplexschritt des Simplexalgorithmus für das gegebene Simplex –
Tableau tableau vor. Zurückgegeben werden die beiden Variablen, die ausgetauscht
werden sollen, oder OPTIMAL.
• linopt::Transparent::userstep(tableau,basvar,nonbasvar)
Führt einen benutzerdefinierten Simplexschritt im Tableau tableau um das durch basvar und nonbasvar spezifizierte Pivotelement aus.
21
Die Bibliothek enthält auch Befehle mit denen beispielsweise eine explizite erste Phase
des 2 – phasigen Simplexalgorithmus erzwungen, die Schlupfvariablen der ersten Phase aus
der Basis entfernt oder die dualen Lösungen zu einem gegebenen Tableau bestimmt werden
können. Dies führt allerdings weit über den zu behandelnden Schulstoff hinaus. Zur genaueren Beschreibung der Befehle siehe im Programm MuPAD „Hilfe -> Hilfe-Assistent -> Inhalt
-> Lineare Optimierung“.
Das Eingabefenster von MuPAD gestaltet sich folgendermaßen:
Abbildung 2.18: MuPAD Oberfläche
Nun möchte ich die beschriebenen Befehle auf die oben genannten Aufgaben anwenden:
Lösung zu Aufgabe 1
zu Aufgabe 1. b) Lösung mit Computeralgebrasystem MuPAD:
Eingabe des linearen Progamms:
• LP := [[1000 >= x + y, y <=
90*y, NonNegative]:
800, 2400 >=
3*x + 2*y ], 120*x +
Lösung des Problems:
• linopt::maximize(LP)
☯
OPTIMAL, x = 400, y = 600, 102000
Berechnung der Ecken:
• linopt::corners(LP,[x,y])
☯
☯
0, 0
,☯
0, 800
,☯
800, 0
,☯
200, 800
,☯
400, 600
, 102000, ☯
400, 600
Die letzte aufgeführte Ecke ist optimal mit dem Zielfunktionswert 102 000.
Zeichnung des zulässigen Bereichs (rote Fläche) und der Zielfunktion (gestrichelt):
• G:=linopt::plot_data(LP,[x,y]):plot(G):
22
Maximize 120*x + 90*y
y-axis
800
700
600
500
400
300
200
100
100
200
300
400
500
600
700
800
x-axis
zu Aufgabe 1. c)
Änderung des Preises auf 135 Euro:
• LP2 := [[1000 >= x + y, y <=
90*y, NonNegative]:
800, 2400 >=
3*x + 2*y ], 135*x +
Lösung:
• linopt::maximize(LP2)
☯
OPTIMAL, x = 800, y = 0, 108000
• linopt::corners(LP2,[x,y])
Error: Problem in Variables and List of these Variables expected
[linopt::corne\
rs]
Scheinbar liegen hier Probleme bei der Ausgabe der Ecken vor, da die Zielfunktion mit einer der
Begrenzungsgeraden übereinstimmt,
die Zeichnung liefert jedoch richtig:
• H:=linopt::plot_data(LP2,[x,y]):plot(H):
23
Maximize 135*x + 90*y
y-axis
800
700
600
500
400
300
200
100
100
200
300
400
500
600
700
800
x-axis
zu Aufgabe 1. d)
Änderung der Nebenbedingungen, z.B. Weglassen von Nebenbedingungen, Problem wird unbeschränkt
• LP3 := [[ y <= 800], 120*x + 90*y, NonNegative]:
• linopt::maximize(LP3)
☯
UNBOUNDED, x = PHI1, y = 0, 120 ⋅ PHI1
• G3:=linopt::plot_data(LP3,[x,y]):plot(G3):
Maximize 120*x + 90*y
y-axis
800
700
600
500
400
300
200
100
-80
-60
-40
-20
20
40
60
80
100
x-axis
oder: Hinzufügen einer Bedingung, Problem wird unlösbar, da zulässiger Bereich leer
• LP4 := [[1000 >= x + y, y <= 800, 2400 >= 3*x + 2*y , y + x
>= 1500], 120*x + 90*y, NonNegative]:
• linopt::maximize(LP4)
24
☯
EMPTY, ∅, − ∞
• G4:=linopt::plot_data(LP4,[x,y]):plot(G4):
Warning: Uninitialized variable 'bestcorner' used;
during evaluation of 'linopt::corners'
"
No
feasible
corners
found!
Feasible
Area
is
empty! "
y
1.0
0.8
0.6
0.4
0.2
-1.0
-0.8
-0.6
-0.4
-0.2
0.2
0.4
0.6
0.8
1.0
-0.2
x
-0.4
-0.6
-0.8
-1.0
• delete LP,LP2,LP3,LP4,G,H,G3,G4
Lösung zu Aufgabe 2
Formulierung des LP und Ausgabe der Lösung:
• LP:=[[x+y+z+w<=1800,y<=800,z<=400,w<=900,3*x+2*y+6*z+2*w<=2400],
120*x+90*y+150*z+70*w, NonNegative]:
• linopt::maximize(LP)
800
OPTIMAL, w = 0, y = 800, z = 0, x =
, 104000
3
Diese Lösung ist nicht ganzzahlig, also muss bei der Formulierung des LP die Option "All" gewählt werden, es ergibt sich:
• LP:=[[x+y+z+w<=1800,y<=800,z<=400,w<=900,3*x+2*y+6*z+2*w<=2400],
120*x+90*y+150*z+70*w, NonNegative, All]:
• linopt::maximize(LP)
25
☯
OPTIMAL, w = 1, x = 266, y = 800, z = 0, 103990
Zum Schluss soll noch gezeigt werden, wie das Programm bei der Einführung des Simplexalgorithmus eingesetzt werden kann. Dazu lösen wir Aufgabe 1 noch einmal in einzelnen Simplexschritten:
Bearbeitung der Aufgabe 1 mit dem Simplexverfahren
• LP := [[1000 >= x + y, y <=
90*y, NonNegative]:
800, 2400 >=
3*x + 2*y ], 120*x +
• linopt::maximize(LP)
☯
OPTIMAL, x = 400, y = 600, 102000
Änderung zum Minimierungsproblem:
• LP2 := [[1000 >= x + y, y <=
- 90*y, NonNegative]:
800, 2400 >=
3*x + 2*y ], -120*x
Anzeigen des ersten Simplextableaus
• T1:=linopt::Transparent(LP2)
"linopt" "restr" slk1 slk2 slk3 y
x
"obj"
0
0
0
0 − 90 − 120
slk1
1000 1
0
0
1
1
800
0
1
0
1
0
slk2
2400 0
0
1
2
3
slk3
Ausgabe der erreichten Ecke:
• linopt::Transparent::result(T1)
x = 0, y = 0
Vorschlag des Programms zum Basisaustausch (slk3 gegen x):
• linopt::Transparent::suggest(T1)
slk3, x
Automatische Durchführung des nächsten Schrittes (Austausch der vorgeschlagenen Variablen):
• T2:=linopt::Transparent::autostep(T1)
26
"linopt" "restr" slk1 slk2
"obj" 96000 0
0
slk1
200
1
0
800
0
1
slk2
x
800
0
0
slk3
40
1
−
3
0
1
3
y x
− 10 0
1
0
3
1 0
2
1
3
Diese Vorgehensweise wird wiederholt, bis das Tableau optimal ist:
• linopt::Transparent::result(T2)
x = 800, y = 0
• linopt::Transparent::suggest(T2)
slk1, y
• T3:=linopt::Transparent::autostep(T2)
"linopt" "restr" slk1 slk2 slk3 y x
"obj" 102000 30 0 30 0 0
y
600
3
0 −1 1 0
slk2
200 − 3 1
1 0 0
x
400 − 2 0
1 0 1
Wie man bereits sieht, ist das Tableau optimal:
• linopt::Transparent::result(T3)
x = 400, y = 600
• linopt::Transparent::suggest(T3)
OPTIMAL
• T4:=linopt::Transparent::autostep(T3)
x = 400, y = 600
Man kann das Programm auch zu einem selbst gewählten Schritt zwingen:
• T5 := linopt::Transparent::userstep(T1,slk[1],x)
27
"linopt" "restr" slk1 slk2 slk3 y
"obj" 120000 120 0
0 30
x
1000
1
0
0 1
slk2
800
0
1
0 1
slk3
− 600 − 3 0
1 −1
x
0
1
0
0
Wie man sieht, ist es mit Hilfe dieses Programms möglich die einzelnen Schritte des
Simplexalgorithmus sehr genau zu verfolgen. Man kann sich entweder nur die auszutauschenden Variablen anzeigen lassen und die Rechnung selbst durchführen oder die auszutauschenden Variablen angeben und dann vom Programm das nächste Tableau erzeugen lassen.
Natürlich ist es auch möglich sich jeden einzelnen Schritt nur anzusehen, ohne selbst zu rechen. Zusätzlich lässt sich durch den Befehl linopt::Transparent::result(T1) sehr
genau mitverfolgen, an welcher Ecke des zulässigen Bereichs sich der Simplex gerade befindet. Es sind also viele Möglichkeiten vorhanden, mit denen die Schüler experimentieren können und so die Arbeitsweise des Algorithmus kennen lernen.
Außerdem lassen sich die linearen Programme in einfacher und intuitiver Form eingeben und die graphische Darstellung des zulässigen Bereichs bei einem Problem mit zwei Variablen lässt sich hier, aufgrund der vorhandenen Befehle in der Bibliothek, ohne Probleme
durchführen. Damit unterscheidet sich das Programm wesentlich von allen anderen Programmen, die vorgestellt werden.
Das Programm ist nach Erlernen der wichtigsten Befehle sehr leicht und intuitiv zu bedienen, daher erscheint es mir äußerst geeignet für den Schulunterricht. Allerdings löst es nur
lineare Optimierungsprobleme, daher kann Aufgabe 3 nicht bearbeitet werden.
Im Gegensatz zu Excel muss zur Nutzung des Programms MuPAD im Unterricht eine
Schullizenz erworben werden. Deren Kosten belaufen sich für eine unbegrenzte Schullizenz
von MuPAD Pro auf Euro 398,-. Eine leicht eingeschränkte Lizenz (Funktionsumfang wie
MuPAD Pro, jedoch ohne Entwicklungsumgebung) ist für Euro 145,- zu haben. Die Preise
sind auf der Webseite www.additive-net.de/software/mupadpro/mupadpro.schule.shtml nachlesbar. Weiterhin findet sich dort eine kostenlose Demoversion zum Herunterladen, deren
Nutzung aber auf 30 Tage beschränkt ist.
28
2.2.3 XPRESS – MP
Xpress – MP ist ein Softwareprogramm, das ausschließlich der mathematischen Optimierung dient und sich daher von den bisher behandelten Programmen unterscheidet. Es soll
auf seine „Schultauglichkeit“ untersucht werden, hilfreich erwies sich dabei [8],[9] und [10].
Mit diesem Programm können lineare, gemischt – ganzzahlige oder quadratische Optimierungsaufgaben gelöst werden.
Wichtige Elemente von Xpress – MP sind Xpress – Mosel und der Xpress - Optimizer:
• Xpress – Mosel: in diesem Programm verwendete Programmiersprache
• Xpress – Optimizer: Optimierungsbibliothek
Zunächst muss den Schülern die Struktur eines LP im Mosel–Quellcode und die Vorgehensweise mit diesem Programm erläutert werden:
Model model_name
[ Directives ]
[ Parameters ]
[ Body ]
end – model
Vorgehensweise:
• Starte Xpress IVE
• Klick: File > new
• Save “Aufgabe1.mos”
• Schreibe den gewünschten Kode in das Hauptfenster in der Mitte
• Zum Kompilieren des Modells: Build > Compile, es wir die Datei model-name.bim
erzeugt
• Zum Ausführen und starten des Optimizers: Build > Run:
• Im rechten Fenster erscheint die Lösung
Die Xpress-MP Oberfläche gliedert sich in mehrere Fenster:
Abbildung 2.19: Xpress - MP
29
Das Hauptfenster in der Mitte dient der Eingabe des Quellcodes, Befehle gibt man im
Fenster links unten an (z.B. Fehler beim Kompilieren werden ebenfalls hier angezeigt). Das
Fenster am rechten Rand zeigt die gewünschte Ausgabe, dort können auch weitere Informationen wie z.B. die benötigte Anzahl an Simplexschritten abgelesen werden.
Der Quellcode zur ersten Aufgabe sollte mit den Schülern gemeinsam erarbeitet werden,
es ergibt sich (wobei Kommentare durch ein vorangestelltes ! gekennzeichnet werden):
Lösung zu Aufgabe 1
model Aufgabe1b
uses "mmxprs"
declarations
x: mpvar
y: mpvar
end-declarations
!importiert das Modul mmxprs,
!Angabe der Variablen
!Zielfunktion:
Profit := 120*x + 90*y
!1.Nebenbedingung
Bed1 := x + y <= 1000
!2.Nebenbedingung
Bed2 := y <= 800
!3.Nebenbedingung
Bed3 := 3*x + 2*y <= 2400
!Maximierung der Zielfunktion
maximize(Profit)
!Ausgabe des maximalen Profits und
!zugehöriger Mengen
writeln("Der maximale Profit beträgt ",getobjval)
writeln("Die Anzahl der Handytypen 1 beträgt ",getsol(x))
writeln("Die Anzahl der Handytypen 2 beträgt ",getsol(y))
end-model
An diesem Beispiel sieht man, dass das Modell in einem sogenannten „Modellblock“
eingeschlossen wird (model... > end–model). Mit dem Befehl “uses mmxprs” signalisiert man Mosel, dass der Xpress Optimizer zur Lösung des Problems herangezogen werden
soll. Die Variablen sind im “declarations”- Block zu deklarieren und sind vom Typ mpvar für
LP (lineare Programme), MIP (gemischt-ganzzahlige Programme) und QP (quadratische Programme) gleichermaßen. Mosel setzt voraus, dass alle Variablen nicht–negativ sind, daher
muss diese Bedingung im Block der Nebenbedingungen nicht mehr angegeben werden. Die
Zielfunktion Profit wird wie die Nebenbedingungen deklariert und anschließend durch den
Befehl maximize(Profit) maximiert. Die letzten writeln- Statements bewirken eine
Ausgabe des Zielfunktionswerts und der zugehörigen Variablenwerte. Nun ist das Programm
bereit zum Kompilieren und Ausführen.
Man erhält nach dem Kompilieren und Ausführen des Modells die erwartete Ausgabe:
Der maximale Profit beträgt 102000
Die Anzahl der Handytypen 1 beträgt 400
Die Anzahl der Handytypen 2 beträgt 600
30
Durch entsprechende Änderung des Quellcodes und erneutes Kompilieren und Ausführen ergeben sich schnell auch die Lösungen zu den Aufgaben 1. c) und 1. d).
Die Schüler sollten nach ausführlicher Behandlung der ersten Aufgabe auch in der Lage
sein, den folgenden Quellcode zur Aufgabe 2 zu entwerfen:
Lösung zu Aufgabe 2
model Aufgabe2
uses "mmxprs"
declarations
x, y, z, w : mpvar
end-declarations
!importiert das Modul mmxprs
!Angabe der Variablen
Profit:= 120*x + 90*y + 150*z + 70*w
Bed1:= x + y + z + w <= 1800
Bed2:= y <= 800
Bed3:= z <= 400
Bed4:= w <= 900
Bed5:= 3*x + 2*y + 6*z + 2*w <= 2400
x is_integer
y is_integer
z is_integer
w is_integer
maximize(Profit)
writeln("Der
writeln("Die
writeln("Die
writeln("Die
writeln("Die
!Maximierung der Zielfunktion
maximale Profit beträgt
Anzahl der Handytypen 1
Anzahl der Handytypen 2
Anzahl der Handytypen 3
Anzahl der Handytypen 4
",getobjval)
beträgt ",getsol(x))
beträgt ",getsol(y))
beträgt ",getsol(z))
beträgt ",getsol(w))
end-model
Somit erhält man folgende Ausgabe:
Der
Die
Die
Die
Die
maximale Profit beträgt
Anzahl der Handytypen 1
Anzahl der Handytypen 2
Anzahl der Handytypen 3
Anzahl der Handytypen 4
103990
beträgt
beträgt
beträgt
beträgt
266
800
0
1
Hier wurden die Bedingungen, dass die Variabeln nur ganzzahlige Werte annehmen dürfen, mit in den Quellcode aufgenommen. Lässt man diese Bedingungen weg (wie dies die
Schüler vermutlich zunächst tun werden), ergibt sich folgende Lösung:
Der
Die
Die
Die
Die
maximale Profit beträgt
Anzahl der Handytypen 1
Anzahl der Handytypen 2
Anzahl der Handytypen 3
Anzahl der Handytypen 4
104000
beträgt
beträgt
beträgt
beträgt
31
266.667
800
0
0
Dass diese Lösung in der Praxis keinen Sinn ergibt, ist offensichtlich.
Xpress kann auch quadratische Optimierungsprobleme lösen:
Lösung zu Aufgabe 3
model Aufgabe3
uses "mmxprs","mmquad"
declarations
x: mpvar
y: mpvar
end-declarations
F:= x*y
Bed:= 2* x+ y =3
maximize(F)
writeln("Die maximale Fläche beträgt ",getobjval)
end-model
Man erhält folgende Ausgabe:
Die maximale Fläche beträgt 1.125
Meiner Meinung nach ist dieses Programm zum Einsatz in der Schule nur bedingt geeignet. Die Schüler müssen zunächst den (teilweise für größere Probleme) komplizierten
Quelltext verstehen bzw. selbst schreiben. Dadurch besteht die Gefahr, dass weniger die Optimierung als die Programmierung im Vordergrund stehen. Zudem lässt sich das Programm
zur Veranschaulichung des Simplexalgorithmus (wie beispielsweise MuPAD) nicht einsetzen.
Ist der Quellcode allerdings erstellt (und ausreichend gut verstanden), lässt er sich schnell und
einfach nach Wunsch verändern.
Dieses Programm kann natürlich auch wesentlich größere Probleme aus der Praxis bearbeiten als das durch MuPAD oder Excel der Fall wäre. Dies könnte den Schülern durch ein
Beispiel
erläutert
werden.
Beispiele
finden
sich
unter
anderem
auf
www.dashoptimization.com.
32
2.2.4 Das Computeralgebrasystem DERIVE
Derive ist das wohl in den Schulen am häufigsten eingesetzte Computeralgebrasystem.
Es ermöglicht unter anderem das Aufstellen von Gleichungen und deren Lösungen mit beliebiger Genauigkeit. Umfangreiche algebraische Umformungen werden schnell ausgeführt und
es können Kurven gezeichnet werden.
Im Folgenden sollen Möglichkeiten gefunden werden, Derive im Mathematikunterricht zur Einführung der linearen Optimierung einzusetzen.
In diesem Programm werden die Ausdrücke in eine Kommandozeile eingetragen und
mit Return bestätigt. Sie erscheinen dann im Algebrafenster. Dann können durch „2-D Graphikfenster > Ausdruck zeichen“ die hier benötigten Geraden, die vorher im Algebrafenster
markiert wurden, in einem separaten Graphikfenster gezeichnet werden. Durch „Datei > Einbetten“ wir die Graphik aus dem Graphikfenster dann in das Algebrafenster übertragen. Zwei
weitere wichtige Befehle sind Solve([u(x,y),v(x,y),...],[x,y]), mit dem ein Gleichungssystem
gelöst, sowie „Vereinfachen > Variablensubstitution“, mit dem Werte in eine Gleichung eingesetzt werden können .
Ich beschreibe in diesem Abschnitt genau, wie die Aufgabe 1. b) schrittweise mit Derive sehr anschaulich gelöst werden kann. In Derive gibt es keine speziellen Befehle zur linearen Optimierung, wie das beispielsweise in MuPAD der Fall ist. Daher kann hier nur eine Art
„graphische Lösung am Rechner“ durchgeführt werden, bzw. eine Berechnung aller vorhandenen Eckpunkte mit anschließendem Vergleich der Zielfunktionswerte (siehe Lösung zur
Aufgabe 2). Dieses Vorgehen ist natürlich für größere Probleme nicht mehr sinnvoll.
In meinen Ausführungen orientiere ich mich an den beiden Artikeln [18] und [19].
Lösung zu Aufgabe 1
zu Aufgabe 1. b) :
1 : x + y = 1000
2 : y = 800
3 : 3·x + 2·y = 2400
4 : „ Berechnung der Schnittpunkte der Geraden zur Zeichnung des
Zulässigkeitsbereichs“
5 : SOLVE([x + y = 1000, y = 800], [x, y])
6 : [x = 200 , y = 800]
7 : SOLVE([x + y = 1000, 3·x + 2·y = 2400], [x, y])
33
8 : [x = 400 , y = 600]
9 : [800·CHI(0, x, 200), (1000 - x)·CHI(200, x, 400), (1200 –
3/2·x)·CHI(400, x, 800)]
10 : 120·x + 90·y = 20000
11 : “Zeichnen liefert:”
12 : 120·x + 90·y = 40000
13 : 120·x + 90·y = 60000
34
14 : 120·x + 90·y = 80000
15 : 120·x + 90·y = 100000
16 : 120·x + 90·y = 120000
17 : “Der Schnittpunkt der beiden Geraden 1 und 3 muss den optimalen Zielfunktionswert liefern:“
18 : SOLVE([x + y = 1000, 3·x + 2·y = 2400], [x, y])
19 : [x = 400 , y = 600]
20 : „Einsetzen von x = 400 und y = 600 in die Zielfunktion ergibt :“
21 : 120·x + 90·y
22 : 120·400 + 90·600
23 : 102000
zu Aufgabe 1. c)
24
25
26
27
:
:
:
:
„neue
135·x
135·x
135·x
Zielfunktion und Zeichnung:“
+ 90·y
+ 90·y = 90000
+ 90·y = 110000
35
26 : „Man sieht deutlich, dass nun keine eindeutige optimale Lösung mehr existiert.“
zu Aufgabe 1. d) (Beispiel)
27 : „Weglassen der ersten und dritten Nebenbedingung ergibt:“
28 : Der zulässige Bereich ist unbeschränkt.
Lösung zu Aufgabe 2:
Mit den Schülern sollte zuvor besprochen worden sein, dass die optimale Lösung am
Rand der zulässigen Menge zu finden ist. Daher ist es theoretisch möglich durch Berechnen
der Eckpunkte die optimale Lösung zu finden. Dies wäre ohne CAS viel zu aufwendig, ist
hier aber für kleinere Probleme noch durchführbar. Allerdings bereits bei diesem Beispiel mit
8
  = 70 möglichen Eckpunkten, die berechnet werden sollen, wird den Schülern klar wie
 4
aussichtslos dieses Verfahren bei noch größeren Problemen ist. Die Klasse sollte in zweier
Gruppen aufgeteilt werden, die jeweils verschiedene Ecken folgendermaßen bearbeiten:
1
2
3
4
5
:
:
:
:
:
„Eingabe der Nebenbedingungen in Gleichungsform :“
x + y + z + w = 1800
y = 800
z = 400
w = 900
36
6 : 3·x + 2·y + 6·z + 2·w = 2400
7 : x = 0
8 : y = 0
9 : z = 0
10 : w = 0
11 : „Berechnung eines beliebigen Eckpunktes:“
12 : SOLVE([x + y + z + w = 1800, y = 800, z = 400, w = 900],
[x, y, z, w])
13 : [x = -300 , y = 800 , z = 400 , w = 900]
14 : „Diese Lösung ist unzulässig !“
12 : „Berechnung eines weiteren Eckpunktes:“
13 : SOLVE([y = 0, w = 0, x + y + z + w = 1800, z = 0], [x, y,
z, w])
14 : [x = 1800, y = 0 , z = 0 , w = 0]
15 : „Die Zielfunktion lautet:“
16 : 120·x + 90·y + 150·z + 70·w
17 : „Damit ist der Zielfunktionswert:“
18 : 120·1800 + 90·0 + 150·0 + 70·0
19 : 216000
20 : Es muss überprüft werden ob alle Nebenbedingungen erfüllt
sind, z.B.:
21 : 3·x + 2·y + 6·z + 2·w = 2400
22 : 3·1800 + 2·0 + 6·0 + 2·0 = 2400
23 : 5400 = 2400
24 : Diese Nebenbedingung ist nicht erfüllt! Lösung ist unzulässig
...
Auf diese Art und Weise können alle Eckpunkte mit Derive untersucht werden und so
auch die optimale Lösung (die in diesem Fall nicht ganzzahlig sein wird) gefunden werden.
Diese Vorgehensweise kann natürlich auch mit den beiden anderen CAS MuPAD und MATHEMATICA verfolgt werden. Allerdings sehe ich mit diesem Programm keine Möglichkeit,
die optimale ganzzahlige Lösung zu ermitteln. Auch bietet sich keine Möglichkeit, den Simplexalgorithmus so einfach, wie beispielsweise mit MuPAD, einzuführen.
Mit diesem Programm erschließen sich also wenig Möglichkeiten zur Behandlung von
linearen Optimierungsaufgaben, ich würde daher, falls vorhanden, ein anderes Programm bevorzugen.
Die Kosten für eine Derive 5/6 Schullizenz (alle Computer einer Schule, sowie private
Computer der Lehrer zur Unterrichtsvorbereitung) liegen mit 399 Euro in ähnlicher Höhe wie
die des Programms MuPAD. Die Kosten sind beispielsweise nachlesbar auf der Homepage
www.shop.bk-teachware.com/k.asp?session=2397944&kat=8. Dort ist ebenfalls eine 30-Tage Demoversion erhältlich.
37
2.2.5 Das Computeralgebrasystem MATHEMATICA
Zuletzt möchte ich das Computeralgebrasystem Mathematica untersuchen. Es ist ein
sehr leistungsfähiges Werkzeug und kann unter anderem in den Bereichen Fourier – Transformation, lineare Algebra, Kurvenanpassung, numerische Integration und lineare Optimierung eingesetzt werden. Wie an diesen Themengebieten schon deutlich wird, kann es weit
über den normalen Mathematikunterricht hinaus auch im Studium und Beruf eingesetzt werden.
Die Eingabe erfolgt hier in Zellen, die am Rand angezeigt werden, in einem Notebook:
Abbildung 2.20: Mathematica Notebook
Die lineare Optimierungsbibliothek von Mathematica enthält allerdings wesentlich weniger Befehle als die vom vergleichbaren CAS MuPAD. Im Wesentlichen beschränkt sie sich
auf die folgenden Befehle:
•
Maximize[{f,cons},{x,y,...}]
Maximiert die Funktion f unter den Nebenbedingungen cons und den Variablen x,
y,... Der Befehl Minimize[{f,cons},{x,y,...}]arbeitet analog. Mit diesen
Befehlen können auch nichtlineare und ganzzahlige Optimierungsprobleme gelöst
werden.
Es gibt noch eine zweite Möglichkeit lineare Probleme zu lösen:
•
LinearProgramming[c, m, b]
Sucht einen Vektor x, der c minimiert (soll maximiert werden, muss die Zielfunktion
mit –1 multipliziert werden). Die Nebenbedingungen müssen in der Form m.x >= b
und x >= 0 vorliegen. Um auch Probleme mit Nebenbedingungen in einer anderen
Form lösen zu können, muss der Befehl variiert werden:
•
LinearProgramming[c, m, {{b1 , s1 }, {b2 , s2 }, … }]
38
Hier gilt: Falls si = 1 ist, liegt eine Nebenbedingung der Form mi.x >= bi vor, für si = 0
eine Nebenbedingung der Form mi.x = bi und für si = -1 eine Nebenbedingung der
Form mi.x <= bi .
Es gibt hier keinen Befehl, der speziell den zulässigen Bereich zeichnet, man kann jedoch folgendermaßen vorgehen (fett gedruckt ist jeweils die Eingabe, schmal die Ausgabe):
Lösung zu Aufgabe 1
Aufgabe 1. b)
Graphische Lösung:
Eingabe der Nebenbedingungen und Umformung in Geradenform:
Solve[x+y 1000,y]
{{y→1000-x}}
f[x_]:=1000-x
Solve[3 x + 2 y 2400,y]
: H L>
y® -
3
- 800 + x
2
g[x_]:=-3/2(-800+x)
h[x_]:=800
Plot[{{1000-x},800,{-3/2(-800+x)}},{x,0,1000}]
1200
1000
800
600
400
200
200
400
600
800
1000
-200
Graphics
Berechnung der Geradenschnittstellen zur Zeichnung des zulässigen Bereichs:
Simplify[h[x_]==f[x_]]
x_ 200
f[200]
800
Simplify[f[x_] g[x_]]
x_ 400
f[400]
600
Wir haben also (0/ 800), (200/ 800), (400/ 600), (800/ 0).
g=ListPlot[{{0,800},{200,800},{400,600},{800,0}},PlotJoined→
→Tru
e,PlotRange→
→{{0,1000}, {0,1000 }},AxesLabel→
→{x,y}]
39
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
Zeichnen der Zielfunktion:
Solve[120x+90 y Z,y]
: H L>
y®
1
- 120 x + Z
90
g1=Show[g, Plot[1/90(-120 x+60000),{x,0,1000}]]
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
g2=Show[g1, Plot[1/90(-120 x+80000),{x,0,1000}]]
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
g3=Show[%, Plot[1/90(-120 x+100000),{x,0,1000}]]
40
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
g4=Show[%, Plot[1/90(-120 x+120000),{x,0,1000}]]
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
Zusammenfassung
Show[GraphicsArray[{{g1,g2},{g3,g4}}]]
y
1000
800
600
400
200
y
1000
800
600
400
200
x
200 400 600 8001000
y
1000
800
600
400
200
x
200 400 6008001000
y
1000
800
600
400
200
x
200 400 600 8001000
x
200 400 6008001000
GraphicsArray
Man kann ablesen, dass der optimale Zielfunktionswert an der
Ecke (400/600), die oben berechnet wurde, angenommen wird.
Zielfunktionswert:
x=400;y=600;120 x+ 90 y
102000
Clear All
All Clear
Clear[x, y]
"Rechnerische" Lösung:
Maximize[{120 x+90 y,x+y≤
≤1000,y≤
≤800,3
41
x+2 y≤
≤2400},{x,y}]
{102000,{x→400,y→600}}
oder
LinearProgramming[{-120,-90},{{1, 1},{0, 1},{3, 2}},{{1000, 1},{800, -1},{2400, -1}}]
{400,600}
Aufgabe 1. c)
Änderung der Zielfunktion:
g=ListPlot[{{0,800},{200,800},{400,600},{800,0}},PlotJoined→
→Tru
e,PlotRange→
→{{0,1000}, {0,1000 }},AxesLabel→
→{x,y}]
Graphics
g1=Show[g, Plot[1/90(-135 x+90000),{x,0,1000}]]
y
1000
800
600
400
200
200
400
600
800
x
1000
Graphics
Maximize[{135 x+90 y,x+y≤
≤1000,y≤
≤800,3
{108000,{x→400,y→600}}
x+2 y≤
≤2400},{x,y}]
Aufgabe 1. d)
Änderung der Nebenbedingungen:
z.B. Weglassen von Bedingung 1 und 3
Plot[{{1/90(-120 x+90000)},800},{x,0,1000}]
1000
800
600
400
200
200
400
600
800
1000
-200
Graphics
Maximize[{120
x+90
y,x≤
≤800},{x,y}]
42
Maximize ::natt : The maximum is not attained at
any point satisfying the given constraints . More…
{∞,{x→Indeterminate,y→Indeterminate}}
Clear All
All Clear
Lösung zu Aufgabe 2
Aufgabe 2:
Maximize[{120
x+90
w,x+y+z+w≤
≤1800,y≤
≤800,z≤
≤400,w≤
≤900,3
w≤
≤2400},{x,y,z,w}]
y+150
x+2
y+6
z+70
z+2
Maximize ::natt : The maximum is not attained at
any point satisfying the given constraints . More…
{∞,{x→Indeterminate,y→Indeterminate,z→Indeterminate,w→Indeter
minate}}
LinearProgramming[{-120,-90,-150,-70},{{1, 1, 1, 1},{0, 1, 0,
0},{0, 0, 1, 0},{0,0,0,1},{3, 2, 6, 2}},{{1800, -1},{800, 1},{400,-1},{900,-1},{2400, -1}}]
:
>
800
, 800, 0, 0
3
Das Programm sollte eigentlich in der Lage sein, mit dem Befehl „Maximize“ Probleme
mit mehr als zwei Variablen zu lösen. Jedoch auch nach mehrmaliger Eingabe und Überprüfung erhielt ich immer das oben gezeigte Ergebnis
Maximize ::natt : The maximum is not attained at
any point satisfying the given constraints . More…
Daher gehe ich davon aus, dass hier Probleme im Programm vorliegen. Der Befehl
„Linear Programming“ löst zwar, wie oben gezeigt, Probleme mit mehr als zwei Variablen
mit der erwarteten Lösung, jedoch ist es hier nicht möglich, eine gewünschte ganzzahlige Lösung zu erhalten. Außerdem ist dieser Befehl aufgrund seiner Matrixschreibweise wesentlich
schwerer zu verstehen und anzuwenden. Auch findet sich kein Befehl zur Darstellung des
Simplextableaus.
Als Lösung für die nichtlineare Aufgabe ergibt sich leicht:
Lösung zu Aufgabe 3
::
>
Maximize[{x y, 2 x+y==3},{x,y}]
9
3
3
, x® , y ®
8
4
2
Dieses Programm ist sicherlich sehr leistungsstark und vielseitig einsetzbar, jedoch erscheint es mir teilweise etwas zu kompliziert für den Einsatz in der Schule. Dabei denke ich
vor allem an den Befehl LinearProgramming... . Es ist ein Vorteil dieses Programms, dass
hier Befehle zur linearen Optimierung integriert wurden, jedoch fällt beispielsweise die lineare Optimierungsbibliothek von MuPAD umfangreicher aus. Ein einschneidender Unterschied
43
sind die Befehle zur Zeichnung des zulässigen Bereichs und der Ausgabe des Simplextableaus. Dafür löst Mathematica im Gegensatz zu MuPAD auch nicht-lineare Programme.
Über die Kosten für eine Schullizenz für dieses Programm habe ich leider keine verlässlichen Angaben gefunden.
2. 3 Schlussbetrachtung
Im Abschnitt 2.2 wurden fünf teilweise sehr verschiedene Softwareprogramme untersucht, die in der Schule bei der Einführung des Themas „Lineare Optimierung“ zum Einsatz
kommen können. Dabei erhebe ich selbstverständlich keinen Anspruch auf Vollständigkeit.
Es gibt natürlich noch sehr viele Programme, die sich hierfür eignen würden. Ich habe lediglich eine Auswahl der zur Zeit am häufigsten erwähnten Programme auf ihre Fähigkeiten hin
untersucht und hoffe dabei deren Möglichkeiten gerecht geworden zu sein. Die Programme
unterscheiden sich teilweise sehr stark in der Handhabung und den vorhandenen Möglichkeiten.
Besonders hervorgetan hat sich meiner Meinung nach das Computeralgebrasystem
MuPAD, das durch seine umfangreiche Bibliothek besticht. Lineare Programme lassen sich
somit einfach eingeben und bearbeiten. Die gestellten Aufgaben konnten, bis auf die nichtlineare Aufgabe 3, leicht und anschaulich gelöst werden. Somit ergeben sich bei Verwendung
dieses Programms vermutlich keine technisch bedingten Probleme auf Seiten der Schüler
bzw. keine durch langwierige Rechungen verursachten Probleme mehr. Speziell die Möglichkeiten zur Darstellung des Simplextableaus verdienen Beachtung. Kein anderes Programm
weist hier auch nur ähnliche Möglichkeiten auf.
Auch das Tabellenkalkulationsprogramm Excel überrascht durch vielfältige Möglichkeiten. Besonders die Bildlaufleiste lässt sich hier sehr effektiv bei der Einführung des Themas einsetzen, die Parallelverschiebung der Zielfunktion über den zulässigen Bereich wird
mit keinem anderen Programm besser deutlich. Auch der SOLVER wird vermutlich, nach
kleineren Anfangsschwierigkeiten beim ersten Einsatz, später keine Probleme mehr bereiten.
Die Einführung von Xpress MP würde ich dagegen in der Schule, wie bereits erwähnt,
vermeiden. Dieses Programm ist zu spezialisiert auf den Einsatz in der linearen Optimierung
und auch nicht für die Anwendung in der Schule gedacht. Mathematica geht mit seinen Möglichkeiten, wie bereits besprochen, weit über die in der Schule benötigten Anwendungen hinaus und ist in der Handhabung schwieriger als MuPAD oder Derive. Daher würde ich die zuletzt genannten Programme vorziehen.
Es ist vermutlich am besten, ein Computeralgebrasystem im Mathematikunterricht
einzuführen, mit dem dann immer gearbeitet werden kann. Somit ergeben sich nicht in jeder
Stunde am Rechner wieder Einführungsschwierigkeiten in das jeweilige Programm. Wo finde
ich das Programm? Wie gebe ich eine einfache Gleichung ein? etc. Probleme dieser Art sollen
so vermieden werden. Hierfür empfiehlt sich nach meinen Erfahrungen bei dieser Arbeit eines
der Programme MuPAD oder Derive (oder Mathematica). Die Schüler lernen so die Möglichkeiten eines Programmes ausführlich kennen und können diese später auch schnell auf andere
Programme übertragen.
Insgesamt lässt sich wohl sagen, dass sich der Rechner in dieser Unterrichtsreihe sehr
sinnvoll einsetzen lässt. Die Schüler erfahren, wie viel Arbeit durch den PC eingespart werden
kann und erlernen gleichzeitig den Umgang mit Mathematiksoftware bzw. bekommen einen
Einblick in deren Einsatzgebiete. Diese Erfahrungen mit dem Rechner können dann auch in
anderen Gebieten des Mathematikunterrichts weiter vertieft werden.
44
3. Literaturverzeichnis
[1]
Lehrplan Mathematik, Klassen 7 – 9/10, Hauptschule, Realschule, Gymnasium,
Rheinland – Pfalz, Grünstadt 1984
[2]
Lehrplan Mathematik, Grund – und Leistungsfach, Jahrgangsstufen 11 bis 13 der
gymnasialen Oberstufe, Rheinland – Pfalz, 1998
[3]
Karl Schick, Lineares Optimieren, Einführung in die mathematische Behandlung moderner Probleme in den Wirtschaftswissenschaften, 3.Auflage, Verlag Moritz Diesterweg, Frankfurt am Main
[4]
Reichel, Müller, Lehrbuch der Mathematik 5, öbv&hpt, Wien 2002, S.228 – 249
[5]
Mathematik in der Praxis, Anwendungen in Wirtschaft, Wissenschaft und Politik,
Spektrum Verlag, Heidelberg
[6]
Markus Paul, Extremwertprobleme mit EXCEL, Teil 1: Lineare Optimierung und Extremwertaufgaben, www.minic.ac.at/ammu/15/15_2.htm
[7]
MuPAD Homepage, www.schule.mupad.de
[8]
Susanne Scholl, Introduction to Xpress – MP, december 2003
[9]
Xpress – Mosel: User Guide,
www.ingre.unimo.it/OR/corsi/MSS/MaterialeDidattico/mosel_userguide.pdf
[10]
Yves Colombani & Susanne Heipcke, Mosel: An Overview,
www.dashoptimization.com/pdf/Mosel1.pdf
[11]
Heute und Morgen, Sozialkunde Rheinland-Pfalz, Ernst Klett Schulbuchverlag,
1.Auflage, Stuttgart 1987
[12]
Mathematik heute, Differenzierte Ausgabe für Realschulen und Gymnasien,
9.Schuljahr, Schroedel Schulbuchverlag, Hannover 1982
[13]
Lambacher Schweizer 9, Ausgabe für Rheinland – Pfalz, Ernst Klett Schulbuchverlag,
1. Auflage, Stuttgart 1992
[14]
Handreichungen, V4 Lineare Optimierung, www.minthamburg.de/Handreichungen/Ma-gyO/Vorstufe/V4.pdf
[15]
Horst W.Hamacher, Kathrin Klamroth, Lineare und Netzwerk- Optimierung, Ein bilinguales Lehrbuch, Vieweg, 1. Auflage September 2000, Braunschweig/ Wiesbaden
[16]
Behnke, Bertram, Sauer, Grundzüge der Mathematik IV, Praktische Methoden und
Anwendungen der Mathematik für Lehrer an Gymnasien sowie für Mathematiker in
Industrie und Wirtschaft, Göttingen, Vandenhoeck & Ruprecht 1966
45
[17]
Modellieren mit Mathe: Werkzeug: Excel
www.schule.suedtirol.it/blikk/angebote/modellmathe/ma1905.htm
[18]
Anke Wieschendorf, Sabine Lassahn, Marianne Meyer, Lineare Optimierung unter
Verwendung von Derive, Der Mathematikunterricht. Beiträge zu seiner wissenschaftlichen und methodischen Gestaltung, Jan 1998
[19]
U. Keusen, H.J. Kayser, Lineare Optimierung. Stufe 8, Mathematik. Betrifft uns. 1994
46
4. Versicherung über die selbstständige Anfertigung der Projektstudie und
der verwendeten Hilfsmittel
Hiermit versichere ich, dass ich die vorliegende Projektstudie selbstständig verfasst und keine
anderen als die angegebenen Hilfsmittel verwendet habe.
Ort /Datum
Unterschrift
47