Class LinearOptimizationEngine

LinearOptimizationEngine

Doğrusal bir programı modellemek ve çözmek için kullanılan motor. Aşağıdaki örnekte, aşağıdaki doğrusal program çözülmüştür:

İ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 en üst düzeye çıkarı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 modele toplu olarak ekler.
setMaximization()LinearOptimizationEngineDoğrusal hedef işlevini en üst düzeye çıkarmak için optimizasyon yönünü ayarlar.
setMinimization()LinearOptimizationEngineDoğrusal hedef işlevini en aza indirmek için optimizasyon yönünü ayarlar.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineDoğrusal hedef işlevindeki bir değişkenin katsayısını ayarlar.
solve()LinearOptimizationSolutionVarsayılan son tarih olan 30 saniyeyi kullanarak 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. Sınırlamanın üst ve alt sınırı, oluşturma zamanında tanımlanır. 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ıtlamanın alt sınırı
upperBoundNumberkısıtlamanın üst sınırı

Return

LinearOptimizationConstraint - oluşturulan kısıtlama


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ı ayarlanan değişkenlerin adları
coefficientsNumber[][]katsayılar ayarlanıyor

Return

LinearOptimizationEngine - bir doğrusal optimizasyon motoru


addVariable(name, lowerBound, upperBound)

Modele yeni bir sürekli değişken ekler. Değişkene, adı tarafından referansta bulunuluyor. 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 - bir doğrusal optimizasyon motoru


addVariable(name, lowerBound, upperBound, type)

Modele yeni bir değişken ekler. Değişkene, adı tarafından referansta bulunuluyor.

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şken türü, VariableType değerlerinden biri olabilir

Return

LinearOptimizationEngine - bir doğrusal optimizasyon motoru


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

Modele yeni bir değişken ekler. Değişkene, adı tarafından referansta bulunuluyor.

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şken türü, VariableType değerlerinden biri olabilir
objectiveCoefficientNumberdeğişkenin nesnel katsayısı

Return

LinearOptimizationEngine - bir doğrusal optimizasyon motoru


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

Değişkenleri modele toplu olarak 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şken türleri, VariableType değerlerinden biri olabilir
objectiveCoefficientsNumber[]değişkenlerin nesne katsayıları

Return

LinearOptimizationEngine - bir doğrusal optimizasyon motoru


setMaximization()

Doğrusal hedef işlevini en üst düzeye çıkarmak için optimizasyon yönünü 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 - bir doğrusal optimizasyon motoru


setMinimization()

Doğrusal hedef işlevini en aza indirmek için optimizasyon yönünü 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 - bir doğrusal optimizasyon motoru


setObjectiveCoefficient(variableName, coefficient)

Doğrusal hedef işlevindeki bir değişkenin katsayısını 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);

Parametreler

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

Return

LinearOptimizationEngine - bir doğrusal optimizasyon motoru


solve()

Varsayılan son tarih olan 30 saniyeyi kullanarak 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 — optimizasyon çözümü


solve(seconds)

Mevcut doğrusal programı çözer. Bulunan çözümü ve optimum çözüm olup olmadığını 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(300);
if (!solution.isValid()) {
  throw 'No solution ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

Parametreler

AdTürAçıklama
secondsNumbersaniye cinsinden sorunun çözülmesi için son tarih; maksimum süre 300 saniyedir

Return

LinearOptimizationSolution — optimizasyon çözümü