.minimize

Die Funktion LinearProgramming.minimize(c, A, b) erwartet folgende (verpflichtende) Argumente:

ArgumentDatentypHinweis
cDatenfeldVektor zur Definition der Kosten (Kostenvektor)
ADatenfeldMatrix zur Definition der Nebenbedingungen
bDatenfeldVektor 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:

VariableDatentypHinweis
xDatenfeldOptimallösung
valueZahlZielfunktionswert der Optimallösung
iterationsDatenfeldAnzahl 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.

Optionen der Funktion

Es können folgende Optionen verwendet werden:

VariableDatentypHinweisDefault-Wert
signsDatenfeldVektor(1,1,...,1)
constraintsDatenfeldVektor(0,0,...,0)
methodZeichenkette-steepest_edge
accuracyZahlpositiv0.000001

Der Vektor signs muss die gleiche Länge haben wie der Kostenvektor c. Definiert werden dadurch die Vorzeichen der Variablen mit folgender Bedeutung:

EintragWertBedeutung
j-ter Eintrag1j-te Variable ist stets größer oder gleich 0 (Standard)
j-ter Eintrag-1j-te Variable ist stets kleiner oder gleich 0
j-ter Eintrag0j-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:

EintragWertBedeutung
i-ter Eintrag0i-te Nebenbedingung ist eine Gleichung (Standard)
i-ter Eintrag1i-te Nebenbedingung ist eine Ungleichung mit Größer-Gleich
i-ter Eintrag-1i-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_edgeGrößtmögliche Verbesserung des Zielfunktionswertes in jedem Schritt (Standard)
first_indexEs werden jeweils die Indize mit den kleinsten Werten verwendet
smallest_valueEs werden jeweils die Indize gewählt, welche zu den kleinsten negativen Kosten gehören
randomAus der Menge aller möglichen Indize werden rein zufällige Indize gewählt
blandEs 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.

Beispiel
Das folgende Beispiel löst ein lineares Programm in Standardform und gibt die Optimallösung sowie den zugehörigen Zielfunktionswert aus.
Beispiel
Das folgende Beispiel löst ein Beispiel bestehend aus 32 Variablen und 27 Nebenbedingungen. Zu beachten ist, dass einige der Nebenbedingungen als Ungleichungen formuliert sind. Daher ist die Option constraints zwingend erforderlich.
.maximize