Class LinearOptimizationSolution

LinearOptimizationSolution

Die Lösung eines linearen Programms. Das folgende Beispiel löst das folgende lineare Programm:

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:
x + y maximieren

var 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
var constraint = engine.addConstraint(0, 10);
constraint.setCoefficient('x', 2);
constraint.setCoefficient('y', 5);

// Create the constraint: 0 <= 10 * x + 3 * y <= 20
var 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
var 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 entweder durchführbar oder optimal ist.

Detaillierte Dokumentation

getObjectiveValue()

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

var engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
var solution = engine.solve();
Logger.log('ObjectiveValue: ' + solution.getObjectiveValue());

Return

Number – der Wert der Zielfunktion


getStatus()

Ruft den Status der Lösung ab. Bevor ein Problem gelöst wird, lautet der Status NOT_SOLVED.

var engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
var solution = engine.solve();
if (solution.getStatus() != LinearOptimizationService.Status.FEASIBLE &&
    solution.getStatus() != LinearOptimizationService.Status.OPTIMAL) {
  throw 'No solution ' + status;
}
Logger.log('Status: ' + solution.getStatus());

Return

Status – Der Status des Matherechners.


getVariableValue(variableName)

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

var engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
var solution = engine.solve();
Logger.log('Value of x: ' + solution.getVariableValue('x'));

Parameter

NameTypBeschreibung
variableNameStringName der Variablen

Return

Number – der Wert der Variablen in der Lösung


isValid()

Bestimmt, ob die Lösung entweder durchführbar oder optimal ist.

var engine = LinearOptimizationService.createEngine();

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

// ...

// Solve the linear program
var solution = engine.solve();
if (!solution.isValid()) {
  throw 'No solution ' + status;
}

Return

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