Class LinearOptimizationEngine

LinearOptimizationEngine

Mesin yang digunakan untuk memodelkan dan memecahkan program linear. Contoh di bawah ini memecahkan program linear berikut:

Dua variabel, x dan y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

Batasan:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Tujuan:
Memaksimalkan x + y

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

Metode

MetodeJenis nilai yang ditampilkanDeskripsi singkat
addConstraint(lowerBound, upperBound)LinearOptimizationConstraintMenambahkan batasan linear baru dalam model.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineMenambahkan batasan dalam batch ke model.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngineMenambahkan variabel berkelanjutan baru ke model.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngineMenambahkan variabel baru ke model.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngineMenambahkan variabel baru ke model.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngineMenambahkan variabel dalam batch ke model.
setMaximization()LinearOptimizationEngineMenetapkan arah pengoptimalan untuk memaksimalkan fungsi objektif linear.
setMinimization()LinearOptimizationEngineMenetapkan arah pengoptimalan untuk meminimalkan fungsi objektif linear.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineMenetapkan koefisien variabel dalam fungsi objektif linear.
solve()LinearOptimizationSolutionMenyelesaikan program linier saat ini dengan batas waktu default 30 detik.
solve(seconds)LinearOptimizationSolutionMenyelesaikan program linear saat ini.

Dokumentasi mendetail

addConstraint(lowerBound, upperBound)

Menambahkan batasan linear baru dalam model. Batas atas dan bawah batasan ditentukan pada waktu pembuatan. Koefisien untuk variabel ditentukan melalui panggilan ke LinearOptimizationConstraint.setCoefficient(variableName, coefficient).

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

Parameter

NamaJenisDeskripsi
lowerBoundNumberbatas bawah batasan
upperBoundNumberbatas atas batasan

Pulang pergi

LinearOptimizationConstraint — batasan yang dibuat


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

Menambahkan batasan dalam batch ke model.

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

Parameter

NamaJenisDeskripsi
lowerBoundsNumber[]batas bawah batasan
upperBoundsNumber[]batas atas batasan
variableNamesString[][]nama variabel yang koefisiennya sedang ditetapkan
coefficientsNumber[][]koefisien yang ditetapkan

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


addVariable(name, lowerBound, upperBound)

Menambahkan variabel berkelanjutan baru ke model. Variabel direferensikan berdasarkan namanya. Jenisnya ditetapkan ke VariableType.CONTINUOUS.

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

Parameter

NamaJenisDeskripsi
nameStringnama unik variabel
lowerBoundNumberbatas bawah variabel
upperBoundNumberbatas atas variabel

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


addVariable(name, lowerBound, upperBound, type)

Menambahkan variabel baru ke model. Variabel direferensikan berdasarkan namanya.

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

Parameter

NamaJenisDeskripsi
nameStringnama unik variabel
lowerBoundNumberbatas bawah variabel
upperBoundNumberbatas atas variabel
typeVariableTypejenis variabel, dapat berupa salah satu dari VariableType

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


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

Menambahkan variabel baru ke model. Variabel direferensikan berdasarkan namanya.

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.

Parameter

NamaJenisDeskripsi
nameStringnama unik variabel
lowerBoundNumberbatas bawah variabel
upperBoundNumberbatas atas variabel
typeVariableTypejenis variabel, dapat berupa salah satu dari VariableType
objectiveCoefficientNumberkoefisien objektif variabel

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


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

Menambahkan variabel dalam batch ke model. Variabel dirujuk berdasarkan namanya.

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

Parameter

NamaJenisDeskripsi
namesString[]nama unik variabel
lowerBoundsNumber[]batas bawah variabel
upperBoundsNumber[]batas atas variabel
typesVariableType[]jenis variabel, dapat berupa salah satu dari VariableType
objectiveCoefficientsNumber[]koefisien objektif variabel

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


setMaximization()

Menetapkan arah pengoptimalan untuk memaksimalkan fungsi objektif linear.

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

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


setMinimization()

Menetapkan arah pengoptimalan untuk meminimalkan fungsi objektif linear.

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

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


setObjectiveCoefficient(variableName, coefficient)

Menetapkan koefisien variabel dalam fungsi objektif linear.

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

Parameter

NamaJenisDeskripsi
variableNameStringnama variabel yang koefisiennya sedang ditetapkan
coefficientNumberkoefisien variabel dalam fungsi objektif

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


solve()

Menyelesaikan program linier saat ini dengan batas waktu default 30 detik. Menampilkan solusi yang ditemukan.

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

Pulang pergi

LinearOptimizationSolution — solusi pengoptimalan


solve(seconds)

Menyelesaikan program linear saat ini. Menampilkan solusi yang ditemukan dan apakah itu solusi optimal.

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

Parameter

NamaJenisDeskripsi
secondsNumberbatas waktu untuk menyelesaikan masalah, dalam detik; batas waktu maksimum adalah 300 detik

Pulang pergi

LinearOptimizationSolution — solusi pengoptimalan