Class LinearOptimizationEngine

LinearOptimizationEngine

Mesin yang digunakan untuk membuat model dan menyelesaikan 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:
Memaksimalkan x + y

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

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 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 tujuan linear.
setMinimization()LinearOptimizationEngineMenetapkan arah pengoptimalan untuk meminimalkan fungsi tujuan linear.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineMenetapkan koefisien variabel dalam fungsi tujuan linear.
solve()LinearOptimizationSolutionSelesaikan program linear saat ini dengan batas waktu default 30 detik.
solve(seconds)LinearOptimizationSolutionSelesaikan 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).

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

Parameter

NamaJenisDeskripsi
lowerBoundNumberbatas bawah batasan
upperBoundNumberbatas atas batasan

Return

LinearOptimizationConstraint — batasan dibuat


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

Menambahkan batasan dalam batch ke model.

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

Parameter

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

Return

LinearOptimizationEngine — mesin pengoptimalan linear


addVariable(name, lowerBound, upperBound)

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

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

Parameter

NamaJenisDeskripsi
nameStringnama unik variabel
lowerBoundNumberbatas bawah variabel
upperBoundNumberbatas atas variabel

Return

LinearOptimizationEngine — mesin pengoptimalan linear


addVariable(name, lowerBound, upperBound, type)

Menambahkan variabel baru ke model. Variabel direferensikan dengan namanya.

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

Parameter

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

Return

LinearOptimizationEngine — mesin pengoptimalan linear


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

Menambahkan variabel baru ke model. Variabel direferensikan dengan namanya.

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.

Parameter

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

Return

LinearOptimizationEngine — mesin pengoptimalan linear


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

Menambahkan variabel dalam batch ke model. Variabel-variabel dirujuk oleh namanya.

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

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 dari variabel

Return

LinearOptimizationEngine — mesin pengoptimalan linear


setMaximization()

Menetapkan arah pengoptimalan untuk memaksimalkan fungsi tujuan linear.

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 — mesin pengoptimalan linear


setMinimization()

Menetapkan arah pengoptimalan untuk meminimalkan fungsi tujuan linear.

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 — mesin pengoptimalan linear


setObjectiveCoefficient(variableName, coefficient)

Menetapkan koefisien variabel dalam fungsi tujuan linear.

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

Parameter

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

Return

LinearOptimizationEngine — mesin pengoptimalan linear


solve()

Selesaikan program linear saat ini dengan batas waktu default 30 detik. Menampilkan solusi yang ditemukan.

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 — solusi pengoptimalan


solve(seconds)

Selesaikan program linear saat ini. Menampilkan solusi yang ditemukan, dan apakah solusi tersebut merupakan solusi optimal.

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

Parameter

NamaJenisDeskripsi
secondsNumberbatas waktu untuk memecahkan masalah, dalam hitungan detik; tenggat waktu maksimum adalah 300 detik

Return

LinearOptimizationSolution — solusi pengoptimalan