Class LinearOptimizationEngine

LinearOptimizationEngine

Doğrusal bir programı modellemek ve çözmek için kullanılan motor. Aşağıdaki örnek, doğrusal program:

İki değişken, x ve y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

Kısıtlamalar:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Hedef:
x + y artırın

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'));
}

Yöntemler

YöntemDönüş türüKısa açıklama
addConstraint(lowerBound, upperBound)LinearOptimizationConstraintModele yeni bir doğrusal sınırlama ekler.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineModele toplu olarak kısıtlamalar ekler.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngineModele yeni bir sürekli değişken ekler.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngineModele yeni bir değişken ekler.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngineModele yeni bir değişken ekler.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngineDeğişkenleri toplu olarak modele ekler.
setMaximization()LinearOptimizationEngineOptimizasyon yönünü, doğrusal hedef fonksiyonunu en üst düzeye çıkaracak şekilde ayarlar.
setMinimization()LinearOptimizationEngineOptimizasyon yönünü, doğrusal hedef fonksiyonunu en aza indirecek şekilde ayarlar.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineDoğrusal hedef işlevinde bir değişkenin katsayısını belirler.
solve()LinearOptimizationSolutionVarsayılan son tarih olan 30 saniye ile mevcut doğrusal programı çözer.
solve(seconds)LinearOptimizationSolutionMevcut doğrusal programı çözer.

Ayrıntılı belgeler

addConstraint(lowerBound, upperBound)

Modele yeni bir doğrusal sınırlama ekler. Kısıtın üst ve alt sınırı sırasında tanımlar. Değişkenlerin katsayıları, LinearOptimizationConstraint.setCoefficient(variableName, coefficient) çağrılarıyla tanımlanır.

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);

Parametreler

AdTürAçıklama
lowerBoundNumberkısıt alt sınırı
upperBoundNumberkısıtın üst sınırı

Return

LinearOptimizationConstraint - Kısıtlama oluşturuldu


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

Modele toplu olarak kısıtlamalar ekler.

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]]);

Parametreler

AdTürAçıklama
lowerBoundsNumber[]kısıtlamaların alt sınırları
upperBoundsNumber[]kısıtlamaların üst sınırları
variableNamesString[][]katsayıların ayarlandığı değişkenlerin adları
coefficientsNumber[][]katsayılar ayarlanıyor

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


addVariable(name, lowerBound, upperBound)

Modele yeni bir sürekli değişken ekler. Değişkene adı tarafından referans veriliyor. Tür VariableType.CONTINUOUS olarak ayarlandı.

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);

Parametreler

AdTürAçıklama
nameStringdeğişkenin benzersiz adı
lowerBoundNumberdeğişkenin alt sınırı
upperBoundNumberdeğişkenin üst sınırı

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


addVariable(name, lowerBound, upperBound, type)

Modele yeni bir değişken ekler. Değişkene adı tarafından referans veriliyor.

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);

Parametreler

AdTürAçıklama
nameStringdeğişkenin benzersiz adı
lowerBoundNumberdeğişkenin alt sınırı
upperBoundNumberdeğişkenin üst sınırı
typeVariableTypedeğişkenin türü, VariableType olabilir

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


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

Modele yeni bir değişken ekler. Değişkene adı tarafından referans veriliyor.

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.

Parametreler

AdTürAçıklama
nameStringdeğişkenin benzersiz adı
lowerBoundNumberdeğişkenin alt sınırı
upperBoundNumberdeğişkenin üst sınırı
typeVariableTypedeğişkenin türü, VariableType olabilir
objectiveCoefficientNumberdeğişkenin hedef katsayısı

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


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

Değişkenleri toplu olarak modele ekler. Değişkenlere adlarıyla referans verilir.

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]);

Parametreler

AdTürAçıklama
namesString[]değişkenlerin benzersiz adları
lowerBoundsNumber[]değişkenlerin alt sınırları
upperBoundsNumber[]değişkenlerin üst sınırları
typesVariableType[]değişkenlerin türü şunlardan biri olabilir: VariableType
objectiveCoefficientsNumber[]değişkenlerin hedef katsayılarını

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


setMaximization()

Optimizasyon yönünü, doğrusal hedef fonksiyonunu en üst düzeye çıkaracak şekilde ayarlar.

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: Doğrusal optimizasyon motoru


setMinimization()

Optimizasyon yönünü, doğrusal hedef fonksiyonunu en aza indirecek şekilde ayarlar.

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: Doğrusal optimizasyon motoru


setObjectiveCoefficient(variableName, coefficient)

Doğrusal hedef işlevinde bir değişkenin katsayısını belirler.

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);

Parametreler

AdTürAçıklama
variableNameStringkatsayının ayarlandığı değişkenin adı
coefficientNumberhedef fonksiyondaki değişkenin katsayısı

Return

LinearOptimizationEngine: Doğrusal optimizasyon motoru


solve()

Varsayılan son tarih olan 30 saniye ile mevcut doğrusal programı çözer. Bulunan çözümü döndürür.

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 - optimizasyonun çözümü


solve(seconds)

Mevcut doğrusal programı çözer. Bulunan çözümü döndürür. ve ideal bir çözümse çözümüne geçelim.

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'));

Parametreler

AdTürAçıklama
secondsNumbersorunu çözmek için saniyeler içinde teslim tarihi maksimum son tarih 300 saniyedir

Return

LinearOptimizationSolution - optimizasyonun çözümü