Programmiereinrichtung für eine Datenverarbeitungsvorrichtung Die Erfindung betrifft eine Programmiereinrichtung für eine Datenverarbeitungsvorrichtung, welche Spei cheranordnungen mit kürzerer und längerer Zugriffzeit und ein Rechenwerk umfasst, zur Steuerung der Daten verarbeitungsvorrichtung zur Lösung eines in Form von Gruppen von Datendarstellungen in der Speicher anordnung mit längerer Zugriffzeit gespeicherten Sy stems von simultanen linearen Funktionen.
Diese linearen Funktionen können simultane lineare Funktionen in Form von Gleichungen und/oder Un gleichungen sein, welche die funktionellen Beziehungen zwischen mehreren Variablen beschreiben, beispielsweise in einer Produktionseinrichtung, wie z. B. einer Raffine rie, die Beziehungen zwischen Grössen, die das Produk tionsergebnis beeinflussen.
Solche Funktionen werden im allgemeinen durch eine unbegrenzte Zahl von Lösungen befriedigt. Durch entsprechende lineare Programmierung eines Digital rechengerätes lässt sich eine spezielle Lösung dieser Funktionen mit speziellen Werten für ihre Variablen ermitteln, welche für ein gegebenes Kriterium eine optimale Lösung darstellt. Charakterisieren die Funk tionen die Beziehungen zwischen Grössen, welche das Produktionsergebnis einer Produktionseinrichtung be stimmen, so erhält man mit den speziellen Werten der optimalen Lösung ein im Sinne des vorgegebenen Krite riums optimales Produktionsergebnis.
Zur Lösung eines solchen Systems von linearen Funktionen wird üblicherweise das Digitalrechengerät nach dem Simplex -Programm programmiert. Dieses Simplex -Programm ist zusammen mit seinen Varian ten im Buch Introduction to Linear Programming von Garvin, herausgegeben von MeGraw Hill, New York 1960, beschrieben.
Bei der Simplex -ProgrammierungwirddieGruppe der simultanen linearen Funktionen in Form einer ersten Matrix oder Ausgangsmatrix zusammengefasst und in einem geeigneten Speicher der Recheneinrichtung ge speichert, wobei die Elemente der Matrix in Spalten und in Zeilen angeordnet sind und die einzelnen Spalten diejenigen Elemente enthalten, die den einzelnen Varia- beln des Systems der linearen Funktionen zugeordnet sind. Bei einer beispielsweisen Anwendung wird der Rechner durch das Simplex -Programm folgender massen gesteuert: 1. Der Rechner tastet oder liest nacheinander die Spalten und die Elemente in jeder Spalte der ersten Matrix ab, um ein Element festzustellen, welches eine vorher bestimmte Bedingung erfüllt.
Die Spalte, in welcher dieses Element festgestellt wird, wird als Leit- spalte gespeichert; die Zeile, welcher das festgestellte Element angehört, ist die Leitzeile. Leitzeile und Leit- spalte bestimmen einen Leitpunkt der Matrix.
2. Der Rechner führt die Rechenoperationen über die ganze erste Matrix durch, z. B. eine Wiederholung, welche Lesen und Verarbeiten der gesamten ersten Matrix umfasst, wobei die gespeicherte Leitspalte zur Erstellung einer zweiten Matrix benutzt wird, welche gespeichert wird. Die in Frage kommenden Rechen operationen umfassen im allgemeinen arithmetische Operationen, welche mit dem Leitpunkt-Wert und den Werten der anderen Elemente der Matrix auf Grund bestimmter Operationsbefehle durchgeführt werden.
3. Die resultierende zweite Matrix wird im Rechner auf gleiche Weise behandelt wie die erste; wird beim Lesen der zweiten Matrix eine Leitspalte gefunden, so wird diese gespeichert und eine zweite Wiederholung über die genannte zweite Matrix durchgeführt, um eine dritte Matrix zu erhalten usw. Dieses Vorgehen wird mit weiteren Wiederholungen fortgesetzt, bis eine Matrix erhalten wird, welche keine Leitspalten mehr enthält. Diese letzte Matrix ist die Lösungsmatrix, welche die Werte der verschiedenen Variablen für die gesuchte optimale Lösung enthält.
Das Simplex -Programm ist zwar relativ einfach, hat jedoch den Nachteil, dass der Rechner nicht voll aus genützt wird. Es entstehen beträchtliche Zeitverluste dadurch, dass schneller arbeitende Teile des Rechners erst nach Beendigung der Funktionsabläufe von lang samer arbeitenden Teilen mit ihrem Funktionsablauf beginnen können. Dieser Nachteil des Simplex -Pro- gramms ist besonders bedeutsam im Hinblick auf die Tatsache, dass die heutigen Optimalisierungsaufgaben derart umfangreich sind und so viele Variablen enthal ten, dass es mehrere Tage oder sogar Wochen dauern kann, bis mit einem Rechner die Lösung einer gestellten Aufgabe erhalten wird.
Da bei Rechenmaschinen, welche zur Lösung solcher Aufgaben brauchbar sind, die Miete bis 3500 Franken pro Betriebsstunde kostet, können bei der Lösung von umfangreichen Aufgaben die Mietkosten für die Rechenmaschine Hunderttausende von Franken betragen. Dabei ist allerdings zu berücksichtigen, dass eine Aufgabe, welche mit einer Rechenmaschine in beispielsweise vier Stunden gelöst werden kann, zu ihrer Lösung 130 Jahre erfordern würde, wenn sie von Hand ausgerechnet werden müsste, und somit ohne Rechen maschine praktisch nicht gelöst werden könnte.
Die vorliegende Erfindung ermöglicht eine wesent liche Reduzierung der Rechenzeit, die zur Lösung eines Systems von linearen Funktionen benötigt wird und beruht auf der Entdeckung, dass bei der Berechnung der Lösungsmatrix eines Systems von linearen Funktionen jedesmal dann eine Wiederholung vorzeitig beendet und eine neue Wiederholung begonnen werden kann, wenn im Verlauf der ersten Wiederholung eine neue Leitspalte festgestellt wird und dass durch die Durchführung dieser teilweise zusammenfallenden Wiederholungen die Lö sungsmatrix erhalten wird.
Nachfolgend wird ein Ausführungsbeispiel der Er findung an Hand der beiliegenden Zeichnungen beschrie ben. In den Zeichnungen zeigen: Fig. 1 ein vereinfachtes Blockschema einer Daten verarbeitungsvorrichtung, Fig. 2 ein ausführlicheres Blockschema der Daten verarbeitungsvorrichtung, Fig. 3 ein Programmflussdiagramm einer Program- miereinrichtung nach der vorliegenden Erfindung und Fig. 4 einen Teil eines Lochstreifens.
An zwei Beispielen von linearen Programmierungs aufgaben, von denen die eine die Lösung einer Gruppe von simultanen linearen Gleichungen mit einer einzigen Lösung und die andere die Maximalisierung der Lösung einer Gruppe von simultanen linearen Ungleichungen betrifft, soll im folgenden an Hand von manuell durch zuführenden Rechenschritten gezeigt werden, wie diese Aufgaben durch einen einfachen sich wiederholenden Rechenvorgang, durch das Simplex -Verfahren und durch eine Programmiereinrichtung nach der Erfindung gelöst werden, wobei im letzten Fall die Schritte an gegeben sind, nach welchen die Programmiereinrichtung der Erfindung die Datenverarbeitungsvorrichtung zur Lösung der genannten Aufgaben steuert.
<I>Beispiel 1</I> Das erste Beispiel betrifft die Lösung einer Gruppe von vier simultanen linearen Gleichungen mit vier Variablen. Dieses erste Beispiel hat keine praktische Bedeutung und soll lediglich das Verständnis für die Arbeitsweise der Programmiereinrichtung nach der Er findung erleichtern, bevor auf die zweite, ein praktisches Problem darstellende Aufgabe eingegangen wird.
Die Aufgabe ist, die Lösungen für w, x, y und z in den nachfolgenden Gleichungen zu finden:
EMI0002.0016
2w <SEP> + <SEP> x <SEP> - <SEP> 3y <SEP> + <SEP> 3z <SEP> - <SEP> 11
<tb> w <SEP> - <SEP> 3x <SEP> + <SEP> y <SEP> + <SEP> z <SEP> - <SEP> 6
<tb> w <SEP> - <SEP> 2x <SEP> + <SEP> 2y <SEP> + <SEP> 4z <SEP> - <SEP> 27
<tb> 2w- <SEP> x <SEP> + <SEP> 2y- <SEP> z <SEP> - <SEP> 7 Der erste Schritt zur Lösung dieser Aufgabe nach der einfachen Wiederholungsmethode ist die Aufstellung der Matrix dieser Gleichungen:
EMI0002.0017
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R1 <SEP> 2 <SEP> 1 <SEP> -3 <SEP> 3 <SEP> 11
<tb> Ri <SEP> 1 <SEP> -3 <SEP> 1 <SEP> 1 <SEP> 6
<tb> R3 <SEP> 1 <SEP> -2 <SEP> 2 <SEP> 4 <SEP> 27
<tb> R4 <SEP> 2 <SEP> -1 <SEP> 2 <SEP> -1 <SEP> 7 Wie ersichtlich, enthalten die ersten vier Spalten dieser Ausgangsmatrix nur die Koeffizienten der Varia blen, wobei die Anordnung so getroffen ist, dass die Koeffizienten aller Variablen jeder Gleichung in einer Zeile liegen und die Koeffizienten jeder der Variablen die ersten vier Spalten und die Werte der vier Gleichun gen die fünfte Spalte bilden. Diese Matrix ist nun in eine Einheitsmatrix umzuformen, in welcher jeder Wert in der fünften Spalte den Wert einer Variablen bedeutet.
Dies kann erreicht werden, indem jede Spalte der Reihe nach als Leitspalte benützt und auf alle Spalten der Matrix angewendet wird.
Mit der Spalte w als erste Leitspalte wird die Stelle R1 der Spalte w auf Eins reduziert, die Stellen R2, R3 und R4 auf Null zurückgeführt und alle anderen Spalten der Matrix umgerechnet, dies führt auf eine zweite Matrix von folgender Form:
EMI0002.0022
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R1 <SEP> 1 <SEP> 1/2 <SEP> -3/2 <SEP> 3/2 <SEP> 1 <SEP> 1/2
<tb> R#, <SEP> 0 <SEP> -7/2 <SEP> 5/2 <SEP> -1/2 <SEP> 1/2
<tb> R3 <SEP> 0 <SEP> -5/2 <SEP> 7/2 <SEP> 5/2 <SEP> 4 <SEP> 3/2
<tb> R4 <SEP> 0 <SEP> -2 <SEP> 5 <SEP> -4 <SEP> -4 Diese zweite Matrix wurde erhalten durch Division aller Werte in der Zeile R1 der Ausgangsmatrix mit dem Leitpunktwert. Alle übrigen Werte wurden durch die folgenden Regeln erhalten, welche für die Behand lung einer Matrix allgemeine Gültigkeit haben: Um den Wert eines bestimmten Punktes in der zweiten Matrix zu erhalten, bildet man in der Ausgangs matrix ein fiktives Rechteck mit dem Leitpunkt und dem korrespondierenden Punkt als diagonal gegenüber liegende Ecken.
Der Wert des bestimmten Punktes in der neuen Matrix ist dann gegeben durch den Wert des korrespondierenden Punktes in der Ausgangsmatrix ab züglich des Produktes der Werte der zwei diagonal gegenüberliegenden Ecken des Rechteckes, welche den Leitpunkt nicht enthalten, dividiert durch den Wert des Leitpunktes.
Um also den Wert des Punktes R@y in der zweiten Matrix zu finden, bildet man das fiktive Rechteck mit den Ecken Riw, Rly, R3y und R3w in der Ausgangs matrix.
In Anwendung der vorstehenden Regel ergibt sich der Wert für den Punkt R3y der zweiten Matrix zu:
EMI0002.0031
Durch Anwendung der genannten Regeln auf die zweite Matrix wird mit der Spalte x als Leitspalte und dem Punkt Rex als Leitpunkt ein zweiter Wieder holungsablauf durchgeführt und eine dritte Matrix von folgender Form erhalten:
EMI0003.0002
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R, <SEP> 1 <SEP> 0 <SEP> -8/7 <SEP> 10/7 <SEP> 39/7
<tb> R2 <SEP> 0 <SEP> 1 <SEP> -5/7 <SEP> 1/7 <SEP> -1/7
<tb> R3 <SEP> 0 <SEP> 0 <SEP> 12/7 <SEP> 20/7 <SEP> 148/7
<tb> R4 <SEP> 0 <SEP> 0 <SEP> 25/7 <SEP> -26/7 <SEP> -30/7 Durch Anwendung der gleichen Regeln wird mit der Spalte y als Leitspalte und dem Punkt R3y als Leit- punkt ein dritter Wiederholungsablauf durchgeführt und eine vierte Matrix erhalten:
EMI0003.0007
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 10/3 <SEP> 59/3
<tb> R2 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 4/3 <SEP> 26/3
<tb> R:
1 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 5/3 <SEP> 37/3
<tb> R4 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> -29/3 <SEP> -145/3 Schliesslich werden dieselben Regeln mit der Spalte w als Leitspalte und dem Punkt R4z als Leitpunkt bei einem vierten Wiederholungsablauf angewendet und die nachfolgende fünfte Matrix erhalten:
EMI0003.0009
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R1 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 3
<tb> R" <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 0 <SEP> 2
<tb> R3 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 0 <SEP> 4
<tb> R4 <SEP> 0 <SEP> 0 <SEP> 0 <SEP> 1 <SEP> 5 Diese fünfte Matrix ist die Einheitsmatrix und stellt die Lösungsmatrix dar. Da in der Zeile R, der Koeffi zient von w gleich Eins ist und diejenigen von x, y und z gleich Null sind, ist w = 3.
Aus den gleichen Gründen ist x=2,y=4undz=5.
Bei der eben beschriebenen Simplex-Methode müs sen somit vier Wiederholungsabläufe durchgeführt wer den, um die Einheitsmatrix zu erhalten, wobei die Spal ten der Reihe nach als Leitspalten benutzt werden und die Leitpunkte der Leitspalten jeweils in einer anderen Zeile liegen.
Die Methode, nach welcher die Programmiereinrich- tung nach der Erfindung eine Datenverarbeitungsvor richtung steuert, wird als Polyplex -Methode bezeich net. Diese Methode ist nicht für die manuelle Durch führung geeignet, aber zur Erläuterung wird sie nach stehend schrittweise erklärt.
Um das gleiche Problem wie vorstehend zu lösen, fängt man ebenfalls mit der Auf stellung der Ausgangsmatrix an:
EMI0003.0016
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R, <SEP> 2 <SEP> 1 <SEP> -3 <SEP> 3 <SEP> 11
<tb> R2 <SEP> 1 <SEP> -3 <SEP> 1 <SEP> 1 <SEP> 6
<tb> R:3 <SEP> 1 <SEP> -2 <SEP> 2 <SEP> 4 <SEP> 27
<tb> R <SEP> 2 <SEP> -1 <SEP> 2 <SEP> -1 <SEP> 7 Bei der Polyplex-Methode wird zur Lösung dieser Aufgabe nur ein Polyplex-Wiederholungsablauf benötigt.
Durch diesen einzigen Wiederholungsablauf wird aus der Ausgangsmatrix die nachstehende Matrix erhalten:
EMI0003.0019
w <SEP> x <SEP> y <SEP> z <SEP> Q
<tb> R1 <SEP> 2 <SEP> 1/2 <SEP> -8/7 <SEP> 10/3 <SEP> 3
<tb> R2 <SEP> 1 <SEP> -7/2 <SEP> -5/7 <SEP> 4/3 <SEP> 2
<tb> R3 <SEP> 1 <SEP> -5/2 <SEP> 12/7 <SEP> 5/3 <SEP> 4
<tb> R4 <SEP> 2 <SEP> -2 <SEP> 25/7 <SEP> -29/3 <SEP> 5 Die Spalte w dieser neuen Matrix wurde durch Wiederanschrift der Spalte w der Ausgangsmatrix er halten.
Die Spalte x der neuen Matrix wurde erhalten durch Anwendung der genannten Rechenregeln auf die Spalte x der Ausgangsmatrix mit der Spalte w als Leitspalte und dem Punkt Rlw als Leitpunkt.
Die Spalte y der neuen Matrix wurde erhalten durch Anwendung der Rechenregeln auf die Spalte y der Aus gangsmatrix mit der Spalte w als Leitspalte und dem Punkt Rlw als Leitpunkt und Anwendung der Rechen regeln auf das Ergebnis mit der Spalte x der neuen Matrix als Leitspalte und dem Punkt Rex als Leit- punkt.
Die Spalte z der neuen Matrix wurde erhalten durch Anwendung der Rechenregeln auf die Spalte z der Aus gangsmatrix mit der Spalte w als Leitkolonne und dem Punkt Rlw als Leitpunkt, Anwendung der Regeln, auf das Ergebnis mit der Spalte x der neuen Matrix als Leitspalte und dem Punkt Rex als Leitpunkt und Anwendung der Regeln auf dieses Ergebnis mit der Spalte y der neuen Matrix als Leitspalte und dem Punkt R3y als Leitpunkt.
Die Spalte Q der neuen Matrix wurde durch analoge Anwendung der Rechenregeln auf die Spalte Q der Ausgangsmatrix mit den Spalten w, x, y und z der neuen Matrix als Leitspalten erhalten. Wie ein Vergleich zeigt, werden für w, x, y und z dieselben Resultate erhalten wie bei Anwendung der früher beschriebenen Methode. Es ist jedoch ersichtlich, dass wenig gewonnen wird, wenn die Polyplex-Methode von Hand durch- geführt wird, da jeder Schritt schriftlich festgehalten werden müsste und nicht nur gestützt auf das Gedächtnis ausgeführt werden könnte.
Immerhin ist aber die Poly- plex-Methode bei Verwendung einer Rechenmaschine erheblich schneller als die vorher beschriebene Methode.
In Fig. 1 ist ein vereinfachtes Blockschema einer Datenverarbeitungsvorrichtung dargestellt, welche aus einem Rechenwerk 10 und einem Speicherwerk 11 be steht, die durch Leitungen 12 und 13 miteinander ver bunden sind. Bei der praktischen Durchführung eines Rechnungsablaufs zur Herstellung einer Lösungsmatrix für eine Gruppe von linearen Funktionen wird ein grosser Teil der Rechenzeit für die Übertragung der Daten vom Speicherwerk 11 auf das Rechenwerk 10, in welchem sie verarbeitet werden, und für die Rück übertragung der verarbeiteten Daten in das Speicher werk benötigt.
Nachstehend wird der Datenfluss in der Daten verarbeitungsvorrichtung zur Lösung des vorstehend behandelten Problems bei der bekannten Methode und bei der Polyplex-Methode betrachtet.
Bei Anwendung der bekannten Methode wird im Speicherwerk 11 der Datenverarbeitungsvorrichtung die Ausgangsmatrix gespeichert. Dann wird die Spalte w der Matrix vom Speicherwerk 11 über die Leitung 12 auf das Rechenwerk 10 übertragen und im Rechenwerk an einer ersten Stelle, welche der Leitspalte zugeordnet ist, und an einer zweiten Stelle, welche der Spalte, mit welcher gerechnet werden soll, zugeordnet ist, gespei- chert. Dann wird im Rechenwerk aus der Spalte w mit sich selbst als Leitspalte die Spalte w der zweiten Matrix berechnet und über die Leitung 13 in das Speicherwerk übertragen.
Dann wird die Spalte x der Ausgangsmatrix vom Speicherwerk 11 über die Leitung 12 in das Rechenwerk 10 übertragen, dort die Rechnung mit der Spalte w als Leitspalte durchgeführt und das Resultat über die Leitung 13 in das Speicherwerk zurückgegeben. Dieser Vorgang wird für jede Spalte wiederholt, bis die zweite Matrix im Speicherwerk 11 gespeichert ist.
Wenn im Speicherwerk die zweite Matrix gespei chert ist, wird die Spalte x dieser Matrix vom Speicher werk auf das Rechenwerk übertragen und an der Stelle, welche der Leitspalte zugeordnet ist, gespeichert. Der Reihe nach wird dann jede Spalte der zweiten Matrix in das Rechenwerk übertragen und die berechneten Spalten in das Speicherwerk zurückgegeben, bis in diesem die dritte Matrix gespeichert ist. Dieser Vorgang wird wiederholt, bis im Speicherwerk die fünfte Matrix gespeichert ist, welche die Lösungsmatrix ist. Die Auf gabe ist dann gelöst und die Resultate können an der Vorrichtung abgelesen werden.
Um die gestellte Aufgabe nach der Polyplex-Me- thode zu lösen, wird im Speicherwerk 11 ebenfalls die Ausgangsmatrix gespeichert. Die Spalte w wird dann über die Leitung 12 vom Speicherwerk auf das Rechen werk übertragen und an einer ersten Stelle, welche einer Leitspalte zugeordnat ist, gespeichert und gleich zeitig über die Leitung 13 in das Speicherwerk zurück gegeben.
Dann wird die Spalte x vom Speicherwerk 11 in das Rechenwerk 10 übertragen, mit der Spalte w als Leitspalte durchgerechnet und die neue Spalte x über die Leitung 13 in das Speicherwerk 11 übertragen und gleichzeitig im Rechenwerk 10 an einer zweiten Stelle, welche einer Leitspalte zugeordnet ist, gespeichert.
Dann wird die Spalte y vom Speicherwerk 11 in das Rechenwerk 10 übertragen, mit der Spalte w als Leitspalte durchgerechnet und die neue Spalte mit der Spalte x als Leitspalte durchgerechnet. Die so erhaltene neue Spalte wird in das Speicherwerk 11 übertragen und gleichzeitig an einer dritten Stelle im Rechenwerk 10, welche einer Leitspalte zugeordnet ist, gespeichert.
Die Spalten z und Q werden in gleicher Weise mit den Spalten w, x, y bzw. w, x, y, z als Leitspalten durch gerechnet und die Ergebnisse in das Speicherwerk 11 übertragen. Die neue Q-Spalte ist dann die Lösung der Aufgabe und wurde, wie ersichtlich, nach der übertra- gung einer, d. h. der Ausgangsmatrix vom Speicherwerk 11 in das Rechenwerk 10 und der Rückübertragung einer Matrix in das Speicherwerk 11 erhalten. Die zuerst beschriebene, bekannte Methode erfordert dagegen fünf solcher Übertragungen, um die Aufgabe zu lösen. In folgedessen wird bei der Polyplex-Methode die für die Übertragung benötigte Zeit auf ein Fünftel der von der bekannten Methode benötigten Zeit reduziert.
Bei den vorstehend beschriebenen Methoden geht die Ausgangsmatrix und damit die ursprüngliche Aufgaben stellung verloren, wenn die zweite Matrix gebildet wird. Da jedoch bei diesen Methoden eine Speicherung der Einheitsmatrix nicht erforderlich ist, kann zur Erhaltung der Aufgabenstellung und Vermeidung der Speicherung unnötiger Informationen während der Ausrechnung der Lösung die Kehrmatrix der Ausgangsmatrix gebildet werden, und zwar indem die entsprechenden Spalten der Einheitsmatrix mit Leitspalten durchgerechnet werden anstatt zur Bildung der Einheitsmatrix mit sich selbst. Dies ermöglicht die Überprüfung des Resultats auf seine Richtigkeit.
Um die Kehrmatrix der Ausgangsmatrix zu bilden, ist bei der bekannten Methode keine besondere Über tragung von Daten notwendig, aber bei der Polyplex- Methode ist eine weitere Übertragung der Matrix er forderlich. Deshalb wird bei der oben erwähnten Auf gabe die Übertragungszeit bei Anwendung der Poly- plex-Methode auf zwei Fünftel der bei Anwendung der bekannten Methode benötigten Übertragungszeit redu ziert.
In der Praxis sind aber die Aufgaben viel umfang reicher als das vorstehend behandelte Beispiel, und es können sich Matrizen mit hunderten von Kolonnen und Zeilen ergeben. Bei einer Aufgabe mit einer begrenzten Lösung und einer Matrix mit hundert Spalten müssten bei Anwendung der bekannten Methode einhundert komplette Matrizen in das Rechenwerk und zurück in das Speicherwerk übertragen werden, d. h. es wären einhundert Wiederholungsabläufe erforderlich, während bei Anwendung der Polyplex-Methode, sofern die Rechenmaschine genügend leistungsfähig ist, nur zwei komplette Matrizen in das Rechenwerk und zurück auf das Speicherwerk übertragen werden müssen, d. h. nur zwei Wiederholungsabläufe erforderlich sind.
Damit die Bedeutung der Reduktion der übertra- gungszeit bei Datenverarbeitungsvorrichtungen voll er kannt werden kann, ist in der Fig. 2 ein detailliertes Blockschema einer solchen Vorrichtung dargestellt.
Die Datenverarbeitungsvorrichtung, die in der Fig. 2 schematisch dargestellt ist, besitzt drei Haupteinheiten, nämlich einen Arbeitsspeicher 21, eine Programm steuereinrichtung 22 und mindestens ein Rechenwerk 23. Ferner ist mindestens ein Trommelspeicher 24 und mindestens ein Bandspeicher 26 vorgesehen, wovon jeder über eine übertragungssteuereinrichtung 27 mit dem Arbeitsspeicher 21 verbunden ist. Diese Einheiten sind untereinander durch Leitungen verbunden, welche in der Fig. 2 durch ausgezogene Linien für Leitungen für den Datenfluss und durch gestrichelte Linien für den Steuer- und Befehlsfluss dargestellt sind.
Die Pfeile auf den Linien geben die Richtung des Flusses an. Die Leitungen 28, welche den Arbeitsspeicher 21 mit der Programmsteuereinrichtung 22 verbinden, übermitteln nur die Befehlsworte des Programms zur und von der Programmsteuereinrichtung 22. Der Arbeitsspeicher 21 ist ein Speicher mit sehr kurzer Zugriffzeit, der z. B. eine Magnetkernanordnung enthält, so dass es möglich ist, ein in diesem Speicher gespeichertes Wort in etwa 6 Mikrosekunden abzulesen. Der Arbeitsspeicher kann z. B. eine Kapazität zwischen 1000 und 50 000 alpha numerischen Zeichen besitzen.
Der Trommelspeicher 24 hat eine mittlere Zugriffzeit und besteht aus einer Trommel aus magnetisierbarem Material, welche in einzelne ringförmige Speicherabschnitte abgeteilt ist, wobei jedem Abschnitt ein Lese/Schreibkopf zugeord net ist. Im Betrieb wird die Trommel gedreht, so dass die Abschnitte der Trommel an den zugeordneten Lese/ Schreibköpfen vorbeigehen, wodurch alphanumerische Zeichen auf bestimmte Stellen der Abschnitte geschrie ben oder von bestimmten Stellen der Abschnitte ab gelesen werden können.
Die Zugriffzeit, um ein Zeichen auf der Trommel abzulesen oder auf diese zu schreiben, beträgt im Mittel etwa 2,4 Millisekunden und die Kapazität des Trommelspeichers liegt zwischen 30 000 und 250 000 alphanumerischen Zeichen, je nachdem wie viele Trommeln verwendet werden. Der Bandspeicher 26 hat eine relativ lange Zugriffzeit und umfasst eine Stapelrolle mit einem Magnetband, welches im Speicher verbleibt und durch eine Antriebsrolle auf- und abgerollt wird. Zwischen den Rollen sind eine Anzahl Lese-/ Schreibköpfe vorgesehen, so dass alphanumerische Zei chen im Abstand voneinander auf das Band geschrieben oder vom Band abgelesen werden können, wenn es unter den Lese/Schreibköpfen von einer Rolle zur anderen läuft.
Die Kapazität solcher Bandspeicher kann zwischen 2 Millionen und 64 Millionen alphanumerische Zei chen liegen. Um ein Zeichen vom Band abzulesen oder auf dieses zu schreiben, werden 6,25 Millisekunden benötigt, wenn die betreffende Stelle unter den Lese-/ Schreibköpfen liegt, aber es kann bis zu zehn Minuten dauern, bis sich die verlangte Stelle des Bandes unter den Lese/Schreibköpfen befindet.
Zur Lösung eines durch lineare Funktionen gegebe nen Problems von der eingangs beschriebenen Art, aber von grösserem Umfang, wird das Programm zur Her stellung der Lösungsmatrix mit den Befehlsworten zur Steuerung der Rechnungsabläufe in einem Trommel speicher 24 gespeichert. Im Arbeitsspeicher 21 ist ein Block von Befehlsworten enthalten, der jeweils in die Programmsteuereinrichtung 22, welche die Rechnungs abläufe der anderen Einheiten steuert, eingegeben und von dieser wieder rückübertragen wird. Die Ausgangs matrix ist im Bandspeicher 26 gespeichert und wird, je eine Spalte auf einmal, in den Arbeitsspeicher ein gegeben.
Die Lösung der eingangs beschriebenen Aufgabe mit der in Fig. 2 dargestellten Datenverarbeitungsvor richtung unter Anwendung der bekannten Methode ver langt die Speicherung jeder Leitspalte der Reihe nach im Arbeitspeicher 21. Jede Spalte der Ausgangsmatrix wird dazu vom Bandspeicher 26 abgelesen und über die Übertragungssteuereinrichtung 27, welche durch die Programmsteuereinrichtung 22 gesteuert wird, in den Arbeitsspeicher eingegeben.
Ein Doppel der Leitspalte und die Spalte, welche mit der Leitspalte durchgerechnet werden soll, werden in das Rechenwerk 23 eingegeben, der Rechenvorgang ausgeführt und die berechnete Spalte auf einen zweiten Bandspeicher von der Art des Band speichers 26 übertragen. Es muss somit für jeden Rechenvorgang im Rechenwerk 23 eine Spalte vom ersten Bandspeicher 26 abgelesen werden. Da das Rechenwerk 23 mit viel höherer Geschwindigkeit als die Bandspeicher arbeitet, deren Arbeitsgeschwindigkeit durch die Geschwindigkeit bedingt ist, mit welcher das Band die Lese/Schreibköpfe passiert, kann jedoch das Rechenwerk 23 nicht ununterbrochen arbeiten, sondern muss nach jedem Rechengang warten, bis die nächste Spalte vom Bandspeicher 26 abgelesen ist.
Um die eingans beschriebene Aufgabe mit Hilfe der Polyplex-Methode zu lösen, wird die Spalte w vom ersten Bandspeicher 26, welcher die Ausgangsmatrix enthält, in den Arbeitsspeicher 21 eingegeben, auf eine erste Leitspaltenstelle im Trommelspeicher 24 übertra gen und an einen zweiten Bandspeicher (nicht dar gestellt) zurückgegeben.
Dann werden die Spalte x vom ersten Bandspeicher 26 und ein Doppel der Spalte w vom Trommelspeicher 24 über den Arbeitsspeicher 21 in das Rechenwerk 23 eingegeben, wo die Rechnung ausgeführt wird. Die berechnete neue Spalte x wird über den Arbeitsspeicher 21 auf den zweiten Bandspeicher und als Leitspalte auf eine zweite Leitspaltenstelle im Trommelspeicher 24 übertragen.
Dann werden die Spalte y vom ersten Bandspeicher 26 und ein Doppel der Spalte w vom Trommelspeicher 24 über den Arbeitsspeicher 21 in das Rechenwerk 23 eingegeben, wo die Rechnung mit der Spalte y durch geführt und die berechnete neue Spalte y auf den Arbeitsspeicher 21 übertragen wird. Nun wird ein Doppel der neuen Leitspalte x auf den Arbeitsspeicher 21 übertragen und zusammen mit der neuen Spalte y in das Rechenwerk eingegeben, welches die neue Spalte y mit der neuen Leitspalte x durchrechnet. Die berechnete weitere neue Spalte y wird über den Arbeitsspeicher 21 auf den zweiten Bandspeicher und auf eine dritte Leit- spaltenstelle im Trommelspeicher 24 übertragen.
Mit der vom ersten Bandspeicher 26 abgelesenen Spalte z sind in der vorstehend beschriebenen Weise drei Rechengänge durchzuführen, bevor das Resultat auf den zweiten Bandspeicher übertragen werden kann. In gleicher Weise sind vier Rechengänge mit der Spalte Q durchzuführen, um die Lösung zu erhalten. Da die Arbeitsgeschwindigkeit des Rechenwerkes 23 wesentlich grösser als diejenige des ersten Bandspeichers 26 ist, kann in der Zeit, in welcher eine Spalte im Bandspeicher gesucht und abgelesen wird, eine Mehrzahl von Rechen gängen mit einer Spalte im Rechenwerk durchgeführt werden.
Dadurch wird erreicht, dass die Arbeits geschwindigkeit der Datenverarbeitungsvorrichtung im wesentlichen durch die Arbeitsgeschwindigkeit des schnell arbeitenden Rechenwerkes 23 bestimmt ist und nicht durch die Arbeitsgeschwindigkeit des verhältnis mässig langsam arbeitenden Bandspeichers 26, so dass der Wirkungsgrad der Datenverarbeitungsvorrichtung wesentlich höher ist.
<I>Beispiel 2</I> Das zweite Beispiel ist eine praktische Aufgabe auf dem Gebiet der Holzverarbeitung. Ein Arbeiter arbeitet B Stunden im Tag und stellt z. B. Alpenstöcke, Bücher gestelle und Stühle her, welche z. B. für 3 bzw. 2 Werteinheiten verkauft werden. Er hat die Wahl zwi schen beispielsweise drei Arbeitsgängen P, Q und R.
Der Arbeitsgang P kostet 6 Werteinheiten pro Stunde, in welcher Zeit zwei Alpenstöcke und drei Stühle hergestellt werden.
Der Arbeitsgang Q kostet 5 Werteinheiten pro Stunde, in welcher Zeit ein Alpenstock und zwei Bücher gestelle hergestellt werden.
Der Arbeitsgang R kostet 7 Werteinheiten pro Stunde, in welcher Zeit ein Alpenstock, ein Büchergestell und zwei Stühle hergestellt werden.
Der Handel verlangt täglich neun Alpenstöcke, elf Büchergestelle und neun Stühle. Die Aufgabe ist nun, eine Arbeitseinteilung zu finden, welche den grössten Gewinn bringt.
Sind p, q und r die Anzahl Stunden, welche an den drei Arbeitsgängen gearbeitet wird, dann gilt: Anzahl der hergestellten Alpenstöcke 2p+q+r-9 Anzahl der hergestellten Büchergestelle 2q+r=11 Anzahl der hergestellten Stühle 3p +2r -9 Die Aufgabe, soweit sie bisher festgelegt ist, hat eine einzige Lösung, und zwar P = 1 Std. q = 4 Std. und r = 3 Std. Die Kosten- und Ertragsrechnung zeigt dann, dass ein Gewinn von 20 Werteinheiten pro Tag erzielt wird.
Die Aufgabe kann vollständiger in Form einer linearen Programmierungsaufgabe gestellt werden. Dies wird erreicht durch Umformung der Gleichungen in Ungleichungen und Hinzufügung einer weiteren Un gleichung. Es ergibt sich dann:
EMI0006.0001
2p <SEP> + <SEP> q <SEP> + <SEP> r <SEP> G <SEP> 9
<tb> 2q <SEP> + <SEP> r <SEP> G <SEP> 11
<tb> 3p <SEP> + <SEP> 2r <SEP> G <SEP> 9
<tb> p <SEP> + <SEP> q <SEP> + <SEP> r <SEP> G <SEP> 8 Die vierte Ungleichung bzw. Einschränkung ergibt sich daraus, dass die Produktion nur während 8 Stunden pro Tag läuft. Es gibt noch drei weitere Ungleichungen bzw.
Einschränkungen, weil die Arbeitsgänge nicht in einer negativen Zeit ausgeführt werden können: pGO, qGO, rG0 Mit dieser erweiterten Aufgabenstellung ergeben sich viele mögliche Lösungen und die Aufgabe ist nun, unter den möglichen Lösungen diejenige zu finden, die den grössten Gewinn abwirft.
Beim Arbeitsgang Q werden für den Alpenstock 3 Werteinheiten und für die beiden Büchergestelle 4 Werteinheiten pro Arbeitsstunde als Verkaufserlös er-
EMI0006.0006
Bezeichnung <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v <SEP> Quotient
<tb> R1 <SEP> s <SEP> 9 <SEP> 2 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 4,5
<tb> R2 <SEP> t <SEP> 11 <SEP> 2 <SEP> 1 <SEP> 1 <SEP> <B>00</B>
<tb> R3 <SEP> u <SEP> 9 <SEP> 3 <SEP> 2 <SEP> 1 <SEP> 3
<tb> R4 <SEP> v <SEP> 8 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 8
<tb> Kontrollzeile <SEP> 0 <SEP> -6 <SEP> -2 <SEP> -2 Die Ausgangsmatrix wurde wie im eingangs beschrie benen Beispiel gebildet, indem nur die Koeffizienten der Variablen angeschrieben wurden.
Die Kontrollzeile wurde durch Verschiebung der Koeffizienten der Varia blen auf die rechte Seite der Gleichung für die Kontroll funktion gebildet, so dass sie negativ wurden. Der Ge winn (Schnittpunkt Kontrollzeile, Konstantwertspalte) ist Null, weil in der Ausgangsmatrix die vier zusätzlichen Variablen die Werte s = 9, t = 11, u = 9 und v = 8 aufweisen.
Um die Aufgabe nach der bekannten Simplex- Methode zu lösen, wird die Spalte mit dem grössten nega tiven Wert in der Kontrollzeile als erste Leitspalte be nützt. In der vorstehenden Ausgangsmatrix ist dies die
EMI0006.0013
Bezeichnung <SEP> Konstantwert <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v <SEP> Quotient
<tb> R, <SEP> s <SEP> 3 <SEP> 1 <SEP> -1/3 <SEP> 1 <SEP> 2/3 <SEP> 3
<tb> R2 <SEP> t <SEP> 11 <SEP> 2 <SEP> 1 <SEP> 1 <SEP> 5 <SEP> 1/2
<tb> R3 <SEP> p <SEP> 3 <SEP> 1 <SEP> 2/3 <SEP> 1/3 <SEP> 00
<tb> R4 <SEP> v <SEP> 5 <SEP> 1 <SEP> 1/3 <SEP> -1/3 <SEP> 1 <SEP> 5
<tb> Kontrollzeile <SEP> 18 <SEP> -2 <SEP> 2 <SEP> 2 zielt, bei 5 Werteinheiten Kosten, d. h. es wird ein Ge winn von 2 Werteinheiten erzielt.
In ähnlicher Weise ergeben sich für die Arbeitsgänge P bzw. R Gewinne von 6 bzw. 2 Werteinheiten pro Stunde. Der gesamte Gewinn Z ist daher: Z=6p+2q+2r Diese Gleichung ist die Kontrollfunktion, und die Auf gabe besteht darin, den maximalen Wert dieser Kontroll funktion zu bestimmen.
Um die Aufgabe zu vervollständigen, werden die Ungleichungen durch Einführung der weiteren Variablen s, t, u und v in die nachstehenden Gleichungen um geformt:
EMI0006.0017
2p <SEP> + <SEP> q <SEP> + <SEP> r <SEP> + <SEP> s <SEP> = <SEP> 9
<tb> 2q <SEP> + <SEP> r <SEP> + <SEP> t <SEP> = <SEP> 11
<tb> 3p <SEP> + <SEP> 2r <SEP> + <SEP> u <SEP> = <SEP> 9
<tb> p <SEP> + <SEP> q <SEP> + <SEP> r <SEP> + <SEP> v <SEP> = <SEP> 8
<tb> 6p <SEP> + <SEP> 2q <SEP> + <SEP> 2r <SEP> = <SEP> Z Die oberen vier dieser simultanen Gleichungen enthalten sieben Unbekannte und haben somit eine unbegrenzte Zahl von Lösungen, und die Aufgabe besteht darin, die jenige Lösung zu suchen, für welche die Kontrollfunktion den maximalen Wert aufweist.
Aus diesen Gleichungen kann die folgende Aus gangsmatrix abgeleitet werden: Spalte p. Um den Leitpunkt in dieser Spalte zu finden, wird jeder Wert der Konstantwertspalte Q durch den entsprechenden Wert der Spalte p geteilt. Der gesuchte Leitpunkt ist derjenige, dessen Wert mit dem ent sprechenden Wert der Konstantwertspalte den kleinsten positiven Quotienten ergibt. Dies ist im vorliegenden Fall der Punkt R3p. Der kleinste positive Quotient wird deshalb als Kriterium verwendet, damit, ent sprechend den eingangs gemachten Einschränkungen, die Werte in der Konstantwertspalte positiv bleiben.
Durch Durchrechnung der ganzen Matrix mit der Spalte p als Leitspalte entsprechend den im ersten Bei spiel angegebenen Regeln wird die nachstehende zweite Matrix erhalten: Bei dieser Matrix ist der Gewinn nicht mehr Null, son dern hat auf achtzehn Werteinheiten zugenommen mit S = 3, t = 11, p = 3, v = 5 und q, r und u gleich Null. Aus der Kontrollzeile kann entnommen werden, dass der Gewinn weiter erhöht werden kann durch die Be nützung der Spalte q als Leitspalte.
Durch die Division
EMI0007.0002
Bezeichnung <SEP> Konstantwert <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v
<tb> R1 <SEP> q <SEP> 3 <SEP> 1 <SEP> -1/3 <SEP> 1 <SEP> -2/3
<tb> R2 <SEP> t <SEP> 5 <SEP> 5/3 <SEP> 2 <SEP> 1 <SEP> 4/3
<tb> R3 <SEP> p <SEP> 3 <SEP> 1 <SEP> 2/3 <SEP> ' <SEP> 1/3
<tb> R4 <SEP> v <SEP> 2 <SEP> 2/3 <SEP> -1 <SEP> 1/3 <SEP> 1
<tb> Kontrolle <SEP> 24 <SEP> 4/3 <SEP> 2 <SEP> 2/3 Bei dieser dritten Matrix hat der Gewinn auf vier undzwanzig Werteinheiten zugenommen, mit q = 3, t = 5, p = 3, v = 2 und r, s und u gleich Null. Es kann keine weitere Erhöhung des Gewinnes erzielt werden, weil die Kontrollzeile alles positive Werte enthält.
Der nach dieser Methode ermittelte maximale Ge winn von 24 Werteinheiten ist um 4 Werteinheiten grösser als der nach der Methode am Anfang dieses
EMI0007.0003
Bezeichnung <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v
<tb> R1 <SEP> s <SEP> 9 <SEP> 2 <SEP> 1 <SEP> 1 <SEP> 1
<tb> R2 <SEP> t <SEP> 11 <SEP> 2 <SEP> 1 <SEP> 1
<tb> R3 <SEP> u <SEP> 9 <SEP> 2 <SEP> 2 <SEP> 1
<tb> R4 <SEP> v <SEP> 8 <SEP> 1 <SEP> 1 <SEP> 1 <SEP> 1
<tb> Kontrollzeile <SEP> 0 <SEP> -6 <SEP> -2 <SEP> -2 Um den maximalen Wert der Kontrollfunktion nach der Polyplex-Methode zu erhalten, wird die erste linke Spalte p darauf geprüft, ob sie eine Leitspalte ist, d. h. ob sie in der Kontrollzeile einen negativen Wert hat. Da dies der Fall ist, ist die Spalte p die erste Leitspalte.
Dann wird der Leitpunkt der Spalte p durch Teilung der Werte der Konstantwertspalte durch die Werte der Spalte p und Bestimmung der Zeile mit dem kleinsten positiven Quotienten ermittelt. Dies ist im vorliegenden Fall die Zeile R3 und der Leitpunkt ist somit R3p. Die Konstantwertspalte wird nun unter Anwendung der im ersten Beispiel angegebenen Regeln mit der Spalte p als Leitspalte durchgerechnet und die berechnete neue Konstantwertspalte im Gedächtnis behalten.
Dann wird die nächste Spalte q mit der Spalte p als Leitspalte durchgerechnet und die berechnete neue Spalte q darauf
EMI0007.0012
Bezeichnung <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v
<tb> R1 <SEP> q <SEP> 3 <SEP> 2 <SEP> 1 <SEP> -1/3 <SEP> 1 <SEP> -2/3
<tb> R2 <SEP> t <SEP> 5 <SEP> 2 <SEP> 5/3 <SEP> -1 <SEP> 1 <SEP> 4/3
<tb> R3 <SEP> p <SEP> 3 <SEP> 3 <SEP> 2/3 <SEP> 1/3
<tb> R4 <SEP> v <SEP> 2 <SEP> 1 <SEP> 1 <SEP> 2/3 <SEP> -1 <SEP> 1/3 <SEP> 1
<tb> Kontrollzeile <SEP> 24 <SEP> -6 <SEP> -2 <SEP> . <SEP> 4/3 <SEP> 2 <SEP> 2/3 Diese Matrix wurde auf folgende Weise erhalten: Durchrechnung der Spalte q und der Konstantwert- von Q durch q, wie oben angegeben, ergibt sich, dass der Punkt Riq als Leitpunkt zu nehmen ist.
Durch die Durchrechnung der ganzen Matrix mit der Spalte q als Leitspalte, wiederum in Anwendung der im ersten Beispiel angegebenen Regeln, wird die nach stehende dritte Matrix erhalten: Beispiels ermittelte Gewinn. Dieser grössere Gewinn wird erzielt, wenn der Arbeitsgang P und der Arbeitsgang Q je drei Stunden im Tag durchgeführt werden.
Es sind somit nur sechs Stunden Arbeit pro Tag nötig anstatt acht, und dennoch wird ein höherer Gewinn erzielt, Um die Aufgabe nach der Polyplex-Methode zu lösen, wird die Ausgangsmatrix in gleicher Form wie bei der Simplex-Methode angesetzt: untersucht, ob sie einen negativen Wert in der Kontroll- zeile aufweist. Wenn dies der Fall ist, wird die neue Spalte q als Leitspalte verwendet und der Leitpunkt dieser Spalte auf die bereits beschriebene Weise durch Teilung der Werte der neuen Konstantwertspalte durch die Werte der neuen Spalte q bestimmt.
Dann wird die neue Konstanrowertspalte mit der neuen Spalte q als Leitspalte und die Spalte r mit der Spalte p als Leitspalte durchgerechnet. Die berechnete neue Spalte r wird dar auf geprüft, ob sie in der Kontrollzeile einen negativen Wert aufweist. Trifft dies zu, so ist sie die nächste Leit- spalte.
Dieser Vorgang wird auf die beschriebene Weise bis zur letzten rechten Spalte der Matrix fortgesetzt. Für die gestellte Aufgabe ergibt sich dadurch die fol gende zweite Matrix: spalte Q mit der Spalte p als Leitspalte, Feststellung der Spalte q als Leitspalte mit dem Punkt Riq als Leit- punkt, Durchrechnung der neuen Konstantwertspalte mit der Spalte q als Leitspalte, Durchrechnung der restlichen Spalten mit den beiden Spalten p und q als Leitspalten und Feststellung,
dass keine weiteren nega tiven Werte in der Kontrollzeile und damit keine weite ren Leitspalten vorhanden sind.
EMI0008.0007
Bezeichnung <SEP> Q <SEP> p <SEP> q <SEP> r <SEP> s <SEP> t <SEP> u <SEP> v
<tb> R1 <SEP> q <SEP> 3 <SEP> 1 <SEP> -1/3 <SEP> 1 <SEP> -2/3
<tb> R2 <SEP> t <SEP> 5 <SEP> 5/3 <SEP> -2 <SEP> 1 <SEP> 4/3
<tb> R3 <SEP> p <SEP> 3 <SEP> 1 <SEP> 2/3 <SEP> 1/3
<tb> 1Z4 <SEP> v <SEP> 2 <SEP> 2/3 <SEP> -1 <SEP> 1/3 <SEP> 1
<tb> Kontrollzeile <SEP> 24 <SEP> 4/3 <SEP> 2 <SEP> 2/3 Die Lösungsmatrix ist dieselbe wie bei der Simplex- Methode und wurde in 12/7 Wiederholungsabläufen erhalten, während bei der Simplex-Methode zwei Wie derholungsabläufe erforderlich waren.
Die Vorteile der Polyplex-Methode kommen bei solch einfachen Auf gaben nicht vollständig zum Ausdruck, treten aber er heblich mehr in Erscheinung, wenn ausgedehntere Auf gaben zu lösen sind. Zur Vereinfachung der Beschrei bung wurden einfache Aufgaben gewählt an Stelle von komplizierten, wie sie in der Praxis auftreten.
In Verbindung mit der Datenverarbeitungsvorrich tung nach der Fig. 2 wird die zweite Aufgabe bei An wendung der Simplex-Methode in nahezu derselbe, Art gelöst wie die erste Aufgabe. Die Ausgangsmatrix wird in einen ersten Bandspeicher 26 eingegeben und die Konstantwertspalte im Arbeitsspeicher 21 gespeichert.
Die Ausgangsmatrix wird abgetastet und die Spalte mit dem grössten negativen Wert in der Kontrollzeile wird als Leitspalte auf den Arbeitsspeicher 21 über tragen. Der Leitpunkt in der Leitspalte wird im Rechen werk 23 bestimmt, wie vorstehend beschrieben. Jede Spalte der Ausgangsmatrix wird der Reihe nach auf den Arbeitsspeicher 21 übertragen und im Rechenwerk 23 mit der Leitspalte durchgerechnet. Die berechneten Spalten werden in einem zweiten Bandspeicher 26 ge speichert.
Wenn ein vollständiger Wiederholungsablauf durchgeführt ist, wird die zweite Matrix im zweiten Bandspeicher 26 abgetastet und die Spalte mit dem grössten negativen Wert in der Kontrollzeile als Leit- spalte auf den Arbeitsspeicher 21 übertragen. Der Vor gang wird weitergeführt, bis keine negativen Werte mehr in der Kontrollzeile auftreten; damit ist die Lösungs matrix gefunden und der Vorgang beendigt.
Um diese Aufgabe nach der Polyplex-Methode zu lösen, wird sie in der gleichen Weise angesetzt wie bei der Simplex-Methode. Anstatt die Ausgangsmatrix ab zutasten, wird die erste Spalte vom ersten Bandspeicher 26 abgelesen und an den Arbeitsspeicher gegeben.
Wenn die Spalte einen negativen Wert in der Kontrollzeile aufweist und somit eine Leitspalte ist, wird ihr Leitpunkt bestimmt und die Konstantwertspalte umgeschrieben, indem sie mit der Leitspalte im Rechenwerk 23 durch gerechnet wird. Die Leitspalte wird an einer Leitspalten- stelle im Trommelspeicher 24 gespeichert und auf einen zweiten Bandspeicher 26 übertragen.
Mit der im Trommelspeicher 24 gespeicherten Leit- spalte ist auch ein Befehl gespeichert, welcher angibt, wie viele Male die Leitspalte zur Durchrechnung der Spalten der Matrix benützt werden soll. Jede Leitspalte Um die Lösung der Aufgabe zu Ende zu führen, ist noch die Spalte p mit den Spalten p und q als Leit- spalten und die Spalte q mit der Spalte q als Leitspalte durchzurechnen. Dies ergibt nachstehende Lösungs matrix: muss mit jeder Spalte der Matrix durchgerechnet werden, und deshalb hat der Befehl einen Wert, der der Anzahl der Spalten der Matrix entspricht.
Jedesmal wenn eine Leitspalte zur Durchrechnung einer Spalte benützt wird, wird der Wert des Befehls vermindert, so dass, wenn die Leitspalte mit allen Spalten der Matrix durch gerechnet ist, der Befehl im Trommelspeicher 24 ge löscht ist.
Der Vorgang wird in gleicher Weise durchgeführt, wie sie beim ersten Beispiel beschrieben ist, mit dem Unterschied, dass die Konstantwertspalte im Arbeits speicher 21 gespeichert wird und jedes Mal umgeschrie ben wird, wenn ein neuer Leitpunkt erhalten wird. Der Vorgang geht weiter, bis keine Leitspalten mehr im Trommelspeicher sind; damit ist die Aufgabe gelöst. Die Lösungsmatrix kann teilweise im ersten Bandspeicher 26 und teilweise im zweiten Bandspeicher 26 gespeichert sein, und es muss deshalb der in einem Bandspeicher gespeicherte Teil in den anderen Bandspeicher über tragen werden, um die Lösungsmatrix als Ganzes auf einem Band zu haben.
In der Praxis ist die ursprüngliche Matrix auf mehr als einer Bandrolle gespeichert, damit der Rechnungs ablauf nicht unterbrochen werden muss, während die Bänder aufgewickelt werden müssen. Die Bandspeicher können zum Ablesen oder Aufzeichnen benützt werden, wenn das Band von der Stapelrolle zur Maschinenrolle läuft. Die Anzahl der Bandrollen und damit die not wendige Anzahl von Bandspeichern ist aus Sicherheits gründen um zwei grösser, als es für die Aufnahme der Matrix erforderlich wäre.
Obwohl vorstehend angegeben wurde, dass bei der Lösung der Aufgabe mit einer grossen Anzahl von linearen Funktionen nach der Polyplex-Methode alle Leitspalten automatisch im Trommelspeicher 24 ge speichert werden, ist dies nicht immer möglich. Die Anzahl der Leitspalten, die im Trommelspeicher 24 gespeichert werden können, ist durch zwei Kriterien bestimmt, nämlich einerseits durch den verfügbaren Speicherraum zur Speicherung der Leitspalten auf der Trommel, und anderseits die Anzahl der Rechengänge, welche das Rechenwerk in der Zeit verarbeiten kann, die notwendig ist, um eine Spalte vom Bandspeicher 26 abzulesen.
Um eine bestmögliche Ausnützung der Daten verarbeitungsvorrichtung zu erzielen, wird das Pro gramm so aufgesetzt, dass sichergestellt ist, dass die Anzahl der im Trommelspeicher 24 gespeicherten Leit- spalten so ist, dass Spalten fortwährend von den Band speichern 26 abgelesen oder auf diese aufgeschrieben werden können. Es wird dadurch erreicht, dass keine Zeit aufgewendet werden muss, um die Bänder anlaufen zu lassen oder stillzusetzen, wenn von ihnen abgelesen oder auf sie aufgezeichnet wird; die Geschwindigkeit des Arbeitsvorganges der Bandspeicher ist somit mit der Arbeitsgeschwindigkeit des schneller arbeitenden Rechenwerks koordiniert.
Bei beiden vorstehenden Beispielen wurde die Lö sungsmatrix durch Benützung von Spalten der Matrix erzeugt. Es ist klar, dass die Aufgaben auch gelöst werden könnten unter Benützung der Zeilen der Matrix. Wenn mit der Zeile, welche den Leitpunkt enthält, gearbeitet wird und einer anderen Zeile, können die vorstehend angegebenen allgemeinen Regeln in gleicher Weise zur Lösung einer Aufgabe angewendet werden, wie es beim Vorgehen unter Benützung der Spalten der Fall ist.
In der Fig. 3 ist ein Programmablaufdiagramm dar gestellt, wie es dem wirklichen linearen Programm ent spricht. Mit der gestellten Aufgabe und der auf dem Band gespeicherten Ausgangsmatrix beginnt der Arbeits ablauf mit dem Pfeil 31.
Der erste Befehl im Block 32 veranlasst, dass die erste Spalte vom Band abgelesen wird. Der nächste Befehl im Block 33 veranlasst, dass eine gespeicherte Leitspalte in einem Leitspaltenspeicher zur Durchrech- nung der Spalte, welche eben in das Rechenwerk ein gegeben wurde, benützt wird. Ein Doppel der berechne ten Spalte wird dann durch den nächsten Befehl im Block 34 auf das Band übertragen.
Der nächste Befehl im Block 35 veranlasst eine erste Zweigumschaltung, und zwar, wenn der Leitspaltenspei- cher leer ist und dadurch das Ende des Rechenablaufes anzeigt, auf dem Block 36, dessen Befehl bewirkt, dass die berechnete vollständige Matrix auf ein Band über tragen und das Ergebnis ausgedruckt wird, oder, wenn der Leitspaltenspeicher nicht leer ist, auf den Block 37, dessen Befehl eine weitere Zweigumschaltung veranlasst. Ist in diesem Zeitpunkt der Leitspaltenspeicher voll, so veranlasst der Befehl im Block 37 die Rückführung des Rechenablaufes auf den Block 32, wodurch mit der Ablesung der nächsten Spalte begonnen wird.
Ist jedoch in diesem Zeitpunkt im Leitspaltenspeicher Platzvor handen, so bewirkt der Befehl im Block 37 die Ein schaltung des Blockes 37, durch dessen Befehl die be rechnete Spalte darauf überprüft wird, ob sie als Leit- spalte verwendet werden kann. Ist dies nicht der Fall, wird der Rechenablauf auf den Block 32 zurückgeführt. Ist die berechnete Spalte als Leitspalte brauchbar, wird der andere Zweig des Diagramms verfolgt und der Be fehl im Block 39 ausgeführt. Dieser Befehl veranlasst, dass die berechnete Spalte auf die erste freie Stelle im Leitspaltenspeicher übertragen wird.
Der nächste Befehl im Block 40 veranlasst, dass die Konstantwertspalte, welche im Arbeitsspeicher gespeichert ist, mit der neuen Leitspalte umgerechnet wird. Der Zyklus der Rechen abläufe fängt dann wieder mit dem Befehl 32 an und wird fortgesetzt, bis, wie vorstehend erläutert, der Leit- spaltenspeicher leer ist, womit die Aufgabe gelöst ist.
Um eine Gruppe von simultanen Gleichungen, wie im vorstehend erwähnten ersten Beispiel gezeigt, zu lösen, wäre der Abzweigbefehl nicht notwendig, da jede Spalte als Leitspalte benützt wird; ebenso wäre der Befehl 40 nicht notwendig.
Der Zweigbefehl 38 kann erweitert werden, um eine laufende überwachung über den Leitspaltenspeicher auszuüben zwecks Feststellung, in welchem Masse er gefüllt und in welchem Mass Leitspalten im Verlauf des Rechenvorganges gefunden werden. Durch diese über wachung wird ein nomineller Anstieg festgelegt und nur Spalten, welche einen stärkeren Anstieg bewirken, als der für die Maximalisierung der Kontrollzeile fest gelegte Wert angibt, werden als Leitspalten benützt.
Es gibt zwei Extremfälle; wird nur eine kleine Zahl von möglichen Leitspalten gefunden, ist der Anstieg gering und alle möglichen Leitspalten werden in den Leit- spaltenspeicher gegeben und benützt, wird eine ausser ordentlich grosse Zahl von möglichen Leitspalten gefun den, ist der Anstieg hoch, und es werden nur diejenigen Leitspalten in den Leitspaltenspeicher gegeben und be nützt, die einen grösseren Anstieg als den festgesetzten bewirken. Diese Massnahme ergibt eine weitere Ver besserung des Wirkungsgrades der Datenverarbeitungs vorrichtung.
Im dargestellten Programmablaufdiagramm wurden die wichtigen Schritte des Ablaufs gezeigt; in der Praxis ist jedoch ein sehr viel komplizierteres Programmab- laufdiagramm erforderlich.
Vom Ablaufdiagramm wird ein detaillierteres Pro gramm abgeleitet, welches dann auf einem Programm träger, z. B. auf einem Lochstreifen, festgelegt wird. Jeder Typ von Datenverarbeitungsvorrichtungen hat seinen eigenen Befehlscode, der die Rechenabläufe der Datenverarbeitungsvorrichtung steuert.
Zum Beispiel umfasst der Befehlscode der Datenverarbeitungsvorrich tung vom Typ Ferranti Mercury folgende codierte Befehle: 42 - Addition 50 - Multiplikation 68 - Ablesung von der Trommel 69 - Aufschreiben auf die Trommel 82 - Druck einer Linie 86 - Ablesung vom Band Diese Datenverarbeitungsvorrichtung arbeitet mit Befehlsworten, die zwanzig Ziffern lang sind; die ersten sieben Ziffern enthalten den Rechencode, die nächsten drei Ziffern enthalten einen Modifikationscode und die letzten zehn Ziffern enthalten eine Adresse. Der Modi fikationscode wird benützt, wenn der Adressenteil zu ändern ist.
Der Adressenteil des Befehlswortes enthält die Adresse einer Stelle in einem Speicher, von welchem oder an welchen die Daten entsprechend dem Rechen code übertragen werden sollen. Wenn der Rechencode Multiplizieren angibt, gibt der Adressenteil die Adres sen der Daten an, die miteinander multipliziert werden sollen. Wenn der Rechencode Band ablesen angibt, bezeichnet der Adressenteil die Adresse der Stelle in einem Speicher, auf welche die vom Band abgelesenen Daten zu übertragen sind.
Die Fig. 4 zeigt einen Teil eines Lochstreifens 41 zum Gebrauch in einer Mercury Datenverarbeitungs vorrichtung. Im Streifen 41 sind eine Reihe von Leit- löchern 42 und eine Mehrzahl von Befehlslochungen 43 enthalten. Jede Kolonne des Streifens 41 umfasst ein Leitloch 42 und bis zu fünf Befehlslochungen 43, zwei oberhalb eines Leitloches 42 und drei darunter. Jede mit mindestens einer Befehlslochung versehene Kolonne des Streifens 41 stellt ein alphanumerisches Zeichen dar. Wenn den Befehlslochungen eine Kolonne ohne Befehls lochung vorangeht, stellen die nachfolgenden Kolonnen Ziffern dar.
Die Befehlslochungen 43 in der Fig. 4 zei- gen die Lage der Lochungen, welche die Zahlen neun bis null darstellen, wie am Rande des Streifens über den Kolonnen angegeben ist.
Wenn den Befehlslochungen 43 eine Kolonne vor ausgeht, die Lochungen 44 (Fig. 4) aufweist, stellen die nachfolgenden Kolonnen alphabetische Zeichen dar. In der Fig. 4 sind die alphabetischen Zeichen, welche durch die Lochungen 43 dargestellt werden, wenn ihnen eine Kolonne mit der Lochung 44 vorangeht, am unteren Rand des Streifens 41 angegeben.
Das Programm für den Lochstreifen wird erhalten, indem man diejenigen Befehlsworte aufschreibt, die die Datenverarbeitungsvorrichtung veranlassen, nach dem Ablaufdiagramm zu arbeiten, und dann die Befehlsworte in codierter Form in den Papierstreifen locht. Das Pro- gramm auf dem Lochstreifen wird mittels einer Eingabe vorrichtung in die Datenverarbeitungsvorrichtung ein gegeben und in dieser zur Durchführung der Rechnung gespeichert.
Das Programm wird dem Ablaufdiagramm entnom men und gemäss dem Befehlscode der Datenverarbei- tungsvorrichtung, für das es bestimmt ist, codiert. Als Programmträger muss nicht unbedingt ein Lochstreifen verwendet werden, sondern es kann dazu jeder geeignete Träger verwendet werden, der durch die Eingabe vorrichtung der Datenverarbeitungsvorrichtung abgele sen werden kann, z. B. eine Lochkarte oder ein Magnet band.