Class LinearOptimizationEngine

DoğrusalOptimizasyonMotoru

Doğrusal programları modellemek ve çözmek için kullanılan motor. Aşağıdaki örnekte aşağıdaki doğrusal program çözülmektedir:

x ve y adlı iki değişken:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

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

Hedef:
x + y değerini artırma

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(`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 kısıtlama ekler.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineModele toplu olarak kısıtlama 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()LinearOptimizationEngineOptimizasyon yönünü, doğrusal hedef işlevini en üst düzeye çıkaracak şekilde ayarlar.
setMinimization()LinearOptimizationEngineOptimizasyon yönünü, doğrusal hedef işlevini en aza indirecek şekilde ayarlar.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineDoğrusal hedef fonksiyondaki bir değişkenin katsayısını ayarlar.
solve()LinearOptimizationSolutionMevcut doğrusal programı varsayılan son tarih olan 30 saniyede çözer.
solve(seconds)LinearOptimizationSolutionMevcut doğrusal programı çözer.

Ayrıntılı dokümanlar

addConstraint(lowerBound, upperBound)

Modele yeni bir doğrusal kısıtlama ekler. Kısıtlamanın üst ve alt sınırları, oluşturulma sırasında tanımlanır. Değişkenlerin katsayıları, LinearOptimizationConstraint.setCoefficient(variableName, coefficient) çağrıları aracılığıyla tanımlanır.

const engine = LinearOptimizationService.createEngine();

// Create a linear constraint with the bounds 0 and 10
const 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ıtlama ekler.

const 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[][]ayarlanan katsayılar

Return

LinearOptimizationEngine: doğrusal optimizasyon motoru


addVariable(name, lowerBound, upperBound)

Modele yeni bir sürekli değişken ekler. Değişken, adıyla referans verilir. Tür VariableType.CONTINUOUS olarak ayarlanmıştır.

const engine = LinearOptimizationService.createEngine();
const 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şken, adıyla referans verilir.

const engine = LinearOptimizationService.createEngine();
const 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 değerlerinden biri olabilir

Return

LinearOptimizationEngine: doğrusal optimizasyon motoru


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

Modele yeni bir değişken ekler. Değişken, adıyla referans verilir.

const engine = LinearOptimizationService.createEngine();
const 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 değerlerinden biri olabilir
objectiveCoefficientNumberDeğişkenin hedef katsayısı

Return

LinearOptimizationEngine: doğrusal optimizasyon motoru


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

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

const 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 türlerinden biri olabilir
objectiveCoefficientsNumber[]değişkenlerin hedef katsayıları

Return

LinearOptimizationEngine: doğrusal optimizasyon motoru


setMaximization()

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

const 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 işlevini en aza indirecek şekilde ayarlar.

const 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 fonksiyondaki bir değişkenin katsayısını ayarlar.

const 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 işlevdeki değişkenin katsayısı

Return

LinearOptimizationEngine: doğrusal optimizasyon motoru


solve()

Mevcut doğrusal programı varsayılan son tarih olan 30 saniyede çözer. Bulunan çözümü döndürür.

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

Return

LinearOptimizationSolution: optimizasyon çözümü


solve(seconds)

Mevcut doğrusal programı çözer. Bulunan çözümü ve en iyi çözüm olup olmadığını döndürür.

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(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 son tarih 300 saniyedir

Return

LinearOptimizationSolution: optimizasyon çözümü