Class LinearOptimizationSolution

LinearOptimizationSolution

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

Metode

MetodeJenis nilai yang ditampilkanDeskripsi singkat
getObjectiveValue()NumberMendapatkan nilai fungsi objektif 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 layak atau optimal.

Dokumentasi mendetail

getObjectiveValue()

Mendapatkan nilai fungsi objektif 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 objektif


getStatus()

Mendapatkan status solusi. Sebelum masalah diselesaikan, statusnya adalah 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 pemecah masalah


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 layak 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