Class LinearOptimizationSolution

LinearOptimizationSolution

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

Ziel:
Maximieren Sie 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()BooleanErmittelt, ob die Lösung entweder zulässig 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ückgabe

Number – der Wert der Zielfunktion


getStatus()

Ruft den Status der Lösung ab. Vor dem Lösen eines Problems ist der 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ückgabe

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ückgabe

Number – der Wert der Variablen in der Lösung


isValid()

Ermittelt, ob die Lösung entweder zulässig 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ückgabe

Booleantrue, wenn die Lösung gültig ist (Status.FEASIBLE oder Status.OPTIMAL), andernfalls false