Die Funktion LinearProgramming.minimize(c, A, b) erwartet folgende (verpflichtende) Argumente:
Argument | Datentyp | Hinweis |
c | Datenfeld | Vektor zur Definition der Kosten (Kostenvektor) |
A | Datenfeld | Matrix zur Definition der Nebenbedingungen |
b | Datenfeld | Vektor zur Definition der Nebenbedingungen |
Es wird das lineare Programm
mit dem Simplex-Verfahren gelöst. Falls das lineare Programm keine (beschränkte) Optimallösung besitzt, wird eine entsprechende Zeichenkette zurückgegeben. Anderenfalls wird ein Objekt bestehend aus folgenden Variablen zurückgegeben:
Variable | Datentyp | Hinweis |
x | Datenfeld | Optimallösung |
value | Zahl | Zielfunktionswert der Optimallösung |
iterations | Datenfeld | Anzahl der Iterationen |
Die Anzahl der Iterationen wird als Vektor mit zwei Einträgen zurückgegeben, nämlich die Anzahl der benötigten Iterationen für Phase 1 sowie die Anzahl der benötigten Iterationen für Phase 2 des Simplex-Verfahrens.
Es können folgende Optionen verwendet werden:
Variable | Datentyp | Hinweis | Default-Wert |
signs | Datenfeld | Vektor | (1,1,...,1) |
constraints | Datenfeld | Vektor | (0,0,...,0) |
method | Zeichenkette | - | steepest_edge |
accuracy | Zahl | positiv | 0.000001 |
Der Vektor signs muss die gleiche Länge haben wie der Kostenvektor c. Definiert werden dadurch die Vorzeichen der Variablen mit folgender Bedeutung:
Eintrag | Wert | Bedeutung |
j-ter Eintrag | 1 | j-te Variable ist stets größer oder gleich 0 (Standard) |
j-ter Eintrag | -1 | j-te Variable ist stets kleiner oder gleich 0 |
j-ter Eintrag | 0 | j-te Variable ist im Vorzeichen unbeschränkt |
Der Vektor constraints muss die gleiche Länge haben wie der Vektor b. Definiert wird dadurch, ob es sich bei den Nebenbedingungen jeweils um eine Gleichung oder eine Ungleichung handelt:
Eintrag | Wert | Bedeutung |
i-ter Eintrag | 0 | i-te Nebenbedingung ist eine Gleichung (Standard) |
i-ter Eintrag | 1 | i-te Nebenbedingung ist eine Ungleichung mit Größer-Gleich |
i-ter Eintrag | -1 | i-te Nebenbedingung ist eine Ungleichung mit Kleiner-Gleich |
Mittels method kann definiert werden, welche Pivotregel beim Simplex-Verfahren zum Einsatz kommt. Dabei stehen folgende Möglichkeiten zur Auswahl:
steepest_edge | Größtmögliche Verbesserung des Zielfunktionswertes in jedem Schritt (Standard) |
first_index | Es werden jeweils die Indize mit den kleinsten Werten verwendet |
smallest_value | Es werden jeweils die Indize gewählt, welche zu den kleinsten negativen Kosten gehören |
random | Aus der Menge aller möglichen Indize werden rein zufällige Indize gewählt |
bland | Es wird Blands Pivotregel verwendet |
Bei der Anwendung numerischer Verfahren zur Lösung von linearen Programmen sind numerische Ungenauigkeiten zu erwarten, sodass jedes lineare Programm nur bis zu einer gewissen Genauigkeit gelöst werden kann. Die Option accuracy definiert daher die gewünschte Genauigkeit, die bei sämtlichen Vergleichen während des Simplex-Verfahrens verwendet wird.