Class LinearOptimizationSolution

Giải phápTối ưu hoá tuyến tính

Giải pháp của một chương trình tuyến tính. Ví dụ bên dưới giải quyết chương trình tuyến tính sau:

Hai biến, xy:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

Quy tắc ràng buộc:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Mục tiêu:
maximized 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')}`);
}

Phương thức

Phương thứcLoại dữ liệu trả vềMô tả ngắn
getObjectiveValue()NumberLấy giá trị của hàm mục tiêu trong giải pháp hiện tại.
getStatus()StatusLấy trạng thái của giải pháp.
getVariableValue(variableName)NumberLấy giá trị của một biến trong giải pháp do lệnh gọi gần đây nhất đến LinearOptimizationEngine.solve() tạo ra.
isValid()BooleanXác định xem giải pháp có khả thi hay tối ưu hay không.

Tài liệu chi tiết

getObjectiveValue()

Lấy giá trị của hàm mục tiêu trong giải pháp hiện tại.

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

Cầu thủ trả bóng

Number – giá trị của hàm mục tiêu


getStatus()

Lấy trạng thái của giải pháp. Trước khi giải quyết vấn đề, trạng thái sẽ là 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}`);

Cầu thủ trả bóng

Status – trạng thái của trình giải


getVariableValue(variableName)

Lấy giá trị của một biến trong giải pháp do lệnh gọi gần đây nhất đến LinearOptimizationEngine.solve() tạo ra.

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

Tham số

TênLoạiMô tả
variableNameStringtên của biến

Cầu thủ trả bóng

Number – giá trị của biến trong giải pháp


isValid()

Xác định xem giải pháp có khả thi hay tối ưu hay không.

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

Cầu thủ trả bóng

Booleantrue nếu giải pháp hợp lệ (Status.FEASIBLE hoặc Status.OPTIMAL); false nếu không hợp lệ