Class LinearOptimizationEngine

LinearOptimizationEngine

Die Engine, die zum Modellieren und Lösen eines linearen Programms verwendet wird. 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('Value of x: ' + solution.getVariableValue('x'));
  Logger.log('Value of y: ' + solution.getVariableValue('y'));
}

Methoden

MethodeRückgabetypKurzbeschreibung
addConstraint(lowerBound, upperBound)LinearOptimizationConstraintFügt dem Modell eine neue lineare Einschränkung hinzu.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineFügt dem Modell im Batch Einschränkungen hinzu.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngineFügt dem Modell eine neue kontinuierliche Variable hinzu.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngineFügt dem Modell eine neue Variable hinzu.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngineFügt dem Modell eine neue Variable hinzu.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngineFügt dem Modell Variablen im Batch hinzu.
setMaximization()LinearOptimizationEngineLegt die Optimierungsrichtung für die Maximierung der linearen Zielfunktion fest.
setMinimization()LinearOptimizationEngineLegt die Optimierungsrichtung für die Minimierung der linearen Zielfunktion fest.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineLegt den Koeffizienten einer Variablen in der linearen Zielfunktion fest.
solve()LinearOptimizationSolutionLöst das aktuelle lineare Programm mit der Standardfrist von 30 Sekunden.
solve(seconds)LinearOptimizationSolutionLöst das aktuelle lineare Programm.

Detaillierte Dokumentation

addConstraint(lowerBound, upperBound)

Fügt dem Modell eine neue lineare Einschränkung hinzu. Die Ober- und Untergrenze der Einschränkung werden beim Erstellen festgelegt. Die Koeffizienten für die Variablen werden über Aufrufe von LinearOptimizationConstraint.setCoefficient(variableName, coefficient) definiert.

var engine = LinearOptimizationService.createEngine();

// Create a linear constraint with the bounds 0 and 10
var constraint = engine.addConstraint(0, 10);

// Create a variable so we can add it to the constraint
engine.addVariable('x', 0, 5);

// Set the coefficient of the variable in the constraint. The constraint is now:
// 0 <= 2 * x <= 5
constraint.setCoefficient('x', 2);

Parameter

NameTypBeschreibung
lowerBoundNumberUntergrenze der Einschränkung
upperBoundNumberObergrenze der Einschränkung

Return

LinearOptimizationConstraint – Die erstellte Einschränkung


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

Fügt dem Modell im Batch Einschränkungen hinzu.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >= 0 and <= 100)
variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

// Adds two constraints:
//   0 <= x + y <= 3
//   1 <= 10 * x - y <= 5
engine.addConstraints([0.0, 1.0], [3.0, 5.0], [['x', 'y'], ['x', 'y']], [[1, 1], [10, -1]]);

Parameter

NameTypBeschreibung
lowerBoundsNumber[]Untergrenzen der Einschränkungen
upperBoundsNumber[]Obergrenzen der Einschränkungen
variableNamesString[][]die Namen der Variablen, für die die Koeffizienten eingestellt werden
coefficientsNumber[][]eingestellte Koeffizienten

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


addVariable(name, lowerBound, upperBound)

Fügt dem Modell eine neue kontinuierliche Variable hinzu. Auf die Variable wird durch ihren Namen verwiesen. Der Typ ist auf VariableType.CONTINUOUS festgelegt.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

Parameter

NameTypBeschreibung
nameStringder eindeutige Name der Variablen
lowerBoundNumberUntergrenze der Variablen
upperBoundNumberObergrenze der Variablen

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


addVariable(name, lowerBound, upperBound, type)

Fügt dem Modell eine neue Variable hinzu. Auf die Variable wird durch ihren Namen verwiesen.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS);

Parameter

NameTypBeschreibung
nameStringder eindeutige Name der Variablen
lowerBoundNumberUntergrenze der Variablen
upperBoundNumberObergrenze der Variablen
typeVariableTypeTyp der Variablen; kann einer der folgenden sein: VariableType

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)

Fügt dem Modell eine neue Variable hinzu. Auf die Variable wird durch ihren Namen verwiesen.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER, 2);
// The objective is now 2 * x.

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS, -5);
// The objective is now 2 * x - 5 * y.

Parameter

NameTypBeschreibung
nameStringder eindeutige Name der Variablen
lowerBoundNumberUntergrenze der Variablen
upperBoundNumberObergrenze der Variablen
typeVariableTypeTyp der Variablen; kann einer der folgenden sein: VariableType
objectiveCoefficientNumberobjektiver Koeffizient der Variablen

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)

Fügt dem Modell Variablen im Batch hinzu. Die Variablen werden mit ihren Namen referenziert.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >=0 and <= 100)
// variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

Parameter

NameTypBeschreibung
namesString[]eindeutige Namen der Variablen
lowerBoundsNumber[]Untergrenzen der Variablen
upperBoundsNumber[]Obergrenzen der Variablen
typesVariableType[]Variablentypen; kann einer der folgenden sein: VariableType
objectiveCoefficientsNumber[]Zielkoeffizienten der Variablen

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


setMaximization()

Legt die Optimierungsrichtung für die Maximierung der linearen Zielfunktion fest.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to maximize.
engine.setMaximization();

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


setMinimization()

Legt die Optimierungsrichtung für die Minimierung der linearen Zielfunktion fest.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to minimize
engine.setMinimization();

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


setObjectiveCoefficient(variableName, coefficient)

Legt den Koeffizienten einer Variablen in der linearen Zielfunktion fest.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

Parameter

NameTypBeschreibung
variableNameStringName der Variablen, für die der Koeffizient eingestellt wird
coefficientNumberKoeffizient der Variablen in der Zielfunktion

Return

LinearOptimizationEngine – eine Engine zur linearen Optimierung


solve()

Löst das aktuelle lineare Programm mit der Standardfrist von 30 Sekunden. Gibt die gefundene Lösung zurück.

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 ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

Return

LinearOptimizationSolution – Lösung der Optimierung


solve(seconds)

Löst das aktuelle lineare Programm. Gibt die gefundene Lösung zurück und ob es sich um eine optimale Lösung handelt.

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(300);
if (!solution.isValid()) {
  throw 'No solution ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

Parameter

NameTypBeschreibung
secondsNumberFrist zur Lösung des Problems in Sekunden; die maximale Frist beträgt 300 Sekunden.

Return

LinearOptimizationSolution – Lösung der Optimierung