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