Class LinearOptimizationSolution

LineareOptimierungslösung

Die Lösung eines linearen Programms. Im folgenden Beispiel wird das folgende lineare Programm gelöst:

Zwei Variablen, x und y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

Einschränkungen:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Zielvorhaben:
Wert maximieren x + y

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc. Add two variables, 0 <= x <= 10 and 0 <= y <= 5
engine.addVariable('x', 0, 10);
engine.addVariable('y', 0, 5);

// Create the constraint: 0 <= 2 * x + 5 * y <= 10
let constraint = engine.addConstraint(0, 10);
constraint.setCoefficient('x', 2);
constraint.setCoefficient('y', 5);

// Create the constraint: 0 <= 10 * x + 3 * y <= 20
constraint = engine.addConstraint(0, 20);
constraint.setCoefficient('x', 10);
constraint.setCoefficient('y', 3);

// Set the objective to be x + y
engine.setObjectiveCoefficient('x', 1);
engine.setObjectiveCoefficient('y', 1);

// Engine should maximize the objective
engine.setMaximization();

// Solve the linear program
const solution = engine.solve();
if (!solution.isValid()) {
  Logger.log(`No solution ${solution.getStatus()}`);
} else {
  Logger.log(`Objective  value: ${solution.getObjectiveValue()}`);
  Logger.log(`Value of x: ${solution.getVariableValue('x')}`);
  Logger.log(`Value of y: ${solution.getVariableValue('y')}`);
}

Methoden

MethodeRückgabetypKurzbeschreibung
getObjectiveValue()NumberRuft den Wert der Zielfunktion in der aktuellen Lösung ab.
getStatus()StatusRuft den Status der Lösung ab.
getVariableValue(variableName)NumberRuft den Wert einer Variablen in der Lösung ab, die durch den letzten Aufruf von LinearOptimizationEngine.solve() erstellt wurde.
isValid()BooleanBestimmt, ob die Lösung realisierbar oder optimal ist.

Detaillierte Dokumentation

getObjectiveValue()

Ruft den Wert der Zielfunktion in der aktuellen Lösung ab.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`ObjectiveValue: ${solution.getObjectiveValue()}`);

Rückflug

Number – der Wert der Zielfunktion


getStatus()

Ruft den Status der Lösung ab. Bevor ein Problem behoben wird, hat es den Status NOT_SOLVED.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
const status = solution.getStatus();

if (status !== LinearOptimizationService.Status.FEASIBLE &&
    status !== LinearOptimizationService.Status.OPTIMAL) {
  throw `No solution ${status}`;
}
Logger.log(`Status: ${status}`);

Rückflug

Status – der Status des Solvers


getVariableValue(variableName)

Ruft den Wert einer Variablen in der Lösung ab, die durch den letzten Aufruf von LinearOptimizationEngine.solve() erstellt wurde.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`Value of x: ${solution.getVariableValue('x')}`);

Parameter

NameTypBeschreibung
variableNameStringName der Variablen

Rückflug

Number: Wert der Variablen in der Lösung


isValid()

Bestimmt, ob die Lösung realisierbar oder optimal ist.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
if (!solution.isValid()) {
  throw `No solution ${solution.getStatus()}`;
}

Rückflug

Boolean – true, wenn die Lösung gültig ist (Status.FEASIBLE oder Status.OPTIMAL); false, wenn nicht