Class LinearOptimizationEngine

MesinPengoptimalanLinear

Mesin yang digunakan untuk membuat model dan memecahkan program linear. Contoh di bawah ini menyelesaikan 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:
Maksimalkan 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 hasil 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 kontinu 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 tujuan linear.
setMinimization()LinearOptimizationEngineMenetapkan arah pengoptimalan untuk meminimalkan fungsi tujuan linear.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineMenetapkan koefisien variabel dalam fungsi tujuan linear.
solve()LinearOptimizationSolutionMenyelesaikan program linear 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 ditetapkan
coefficientsNumber[][]koefisien yang ditetapkan

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


addVariable(name, lowerBound, upperBound)

Menambahkan variabel kontinu baru ke model. Variabel direferensikan dengan 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 dengan 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 dengan 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 tujuan 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 tujuan 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 tujuan 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 ditetapkan
coefficientNumberkoefisien variabel dalam fungsi tujuan

Pulang pergi

LinearOptimizationEngine — mesin pengoptimalan linear


solve()

Menyelesaikan program linear 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 solusi tersebut 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