Class LinearOptimizationSolution

SolusiPengoptimalanLinear

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

Metode

MetodeJenis hasil yang ditampilkanDeskripsi singkat
getObjectiveValue()NumberMendapatkan nilai fungsi tujuan dalam solusi saat ini.
getStatus()StatusMendapatkan status solusi.
getVariableValue(variableName)NumberMendapatkan nilai variabel dalam solusi yang dibuat oleh panggilan terakhir ke LinearOptimizationEngine.solve().
isValid()BooleanMenentukan apakah solusi tersebut dapat dilakukan atau optimal.

Dokumentasi mendetail

getObjectiveValue()

Mendapatkan nilai fungsi tujuan dalam solusi saat ini.

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();
Logger.log(`ObjectiveValue: ${solution.getObjectiveValue()}`);

Pulang pergi

Number — nilai fungsi tujuan


getStatus()

Mendapatkan status solusi. Sebelum menyelesaikan masalah, statusnya akan menjadi NOT_SOLVED.

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();
const status = solution.getStatus();

if (status !== LinearOptimizationService.Status.FEASIBLE &&
    status !== LinearOptimizationService.Status.OPTIMAL) {
  throw `No solution ${status}`;
}
Logger.log(`Status: ${status}`);

Pulang pergi

Status — status solver


getVariableValue(variableName)

Mendapatkan nilai variabel dalam solusi yang dibuat oleh panggilan terakhir ke LinearOptimizationEngine.solve().

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

Parameter

NamaJenisDeskripsi
variableNameStringnama variabel

Pulang pergi

Number — nilai variabel dalam solusi


isValid()

Menentukan apakah solusi tersebut dapat dilakukan atau 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();
if (!solution.isValid()) {
  throw `No solution ${solution.getStatus()}`;
}

Pulang pergi

Booleantrue jika solusi valid (Status.FEASIBLE atau Status.OPTIMAL); false jika tidak