Class LinearOptimizationEngine

LinearOptimizationEngine

Công cụ dùng để lập mô hình và giải chương trình tuyến tính. Ví dụ dưới đây giải quyết chương trình tuyến tính sau:

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

Giới hạn:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Mục tiêu:
Tối đa hoá 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'));
}

Phương thức

Phương thứcKiểu dữ liệu trả vềMô tả ngắn
addConstraint(lowerBound, upperBound)LinearOptimizationConstraintThêm một điều kiện ràng buộc mới về tuyến tính trong mô hình.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineThêm các quy tắc ràng buộc theo lô vào mô hình.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngineThêm một biến liên tục mới vào mô hình.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngineThêm một biến mới vào mô hình.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngineThêm một biến mới vào mô hình.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngineThêm các biến hàng loạt vào mô hình.
setMaximization()LinearOptimizationEngineThiết lập hướng tối ưu hoá để tối đa hoá hàm mục tiêu tuyến tính.
setMinimization()LinearOptimizationEngineĐặt hướng tối ưu hoá để giảm thiểu hàm mục tiêu tuyến tính.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineĐặt hệ số của một biến trong hàm mục tiêu tuyến tính.
solve()LinearOptimizationSolutionGiải chương trình tuyến tính hiện tại với thời hạn mặc định là 30 giây.
solve(seconds)LinearOptimizationSolutionGiải chương trình tuyến tính hiện tại.

Tài liệu chi tiết

addConstraint(lowerBound, upperBound)

Thêm một điều kiện ràng buộc mới về tuyến tính trong mô hình. Giới hạn trên và giới hạn dưới của ràng buộc được xác định tại thời điểm tạo. Hệ số của các biến được xác định thông qua lệnh gọi đến 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);

Các tham số

TênLoạiNội dung mô tả
lowerBoundNumbergiới hạn dưới của ràng buộc
upperBoundNumbergiới hạn trên của ràng buộc

Cầu thủ trả bóng

LinearOptimizationConstraint – điều kiện ràng buộc đã được tạo


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

Thêm các quy tắc ràng buộc theo lô vào mô hình.

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

Các tham số

TênLoạiNội dung mô tả
lowerBoundsNumber[]giới hạn dưới của các điều kiện ràng buộc
upperBoundsNumber[]giới hạn trên của các điều kiện ràng buộc
variableNamesString[][]tên của biến mà hệ số đang được đặt
coefficientsNumber[][]hệ số đang đặt

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


addVariable(name, lowerBound, upperBound)

Thêm một biến liên tục mới vào mô hình. Biến được tham chiếu theo tên. Kiểu này được đặt thành 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);

Các tham số

TênLoạiNội dung mô tả
nameStringtên duy nhất của biến
lowerBoundNumbergiới hạn dưới của biến
upperBoundNumbergiới hạn trên của biến

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


addVariable(name, lowerBound, upperBound, type)

Thêm một biến mới vào mô hình. Biến được tham chiếu theo tên.

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

Các tham số

TênLoạiNội dung mô tả
nameStringtên duy nhất của biến
lowerBoundNumbergiới hạn dưới của biến
upperBoundNumbergiới hạn trên của biến
typeVariableTypeloại của biến, có thể là một trong VariableType

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


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

Thêm một biến mới vào mô hình. Biến được tham chiếu theo tên.

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.

Các tham số

TênLoạiNội dung mô tả
nameStringtên duy nhất của biến
lowerBoundNumbergiới hạn dưới của biến
upperBoundNumbergiới hạn trên của biến
typeVariableTypeloại của biến, có thể là một trong VariableType
objectiveCoefficientNumberhệ số mục tiêu của biến

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


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

Thêm các biến hàng loạt vào mô hình. Các biến được tham chiếu theo tên.

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

Các tham số

TênLoạiNội dung mô tả
namesString[]tên duy nhất của các biến
lowerBoundsNumber[]giới hạn dưới của các biến
upperBoundsNumber[]giới hạn trên của các biến
typesVariableType[]loại biến, có thể là một trong VariableType
objectiveCoefficientsNumber[]hệ số mục tiêu của các biến

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


setMaximization()

Thiết lập hướng tối ưu hoá để tối đa hoá hàm mục tiêu tuyến tính.

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

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


setMinimization()

Đặt hướng tối ưu hoá để giảm thiểu hàm mục tiêu tuyến tính.

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

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


setObjectiveCoefficient(variableName, coefficient)

Đặt hệ số của một biến trong hàm mục tiêu tuyến tính.

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

Các tham số

TênLoạiNội dung mô tả
variableNameStringtên của biến mà hệ số đang được đặt
coefficientNumberhệ số của biến trong hàm mục tiêu

Cầu thủ trả bóng

LinearOptimizationEngine – một công cụ tối ưu hoá tuyến tính


solve()

Giải chương trình tuyến tính hiện tại với thời hạn mặc định là 30 giây. Trả về đáp án tìm được.

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

Cầu thủ trả bóng

LinearOptimizationSolution – giải pháp tối ưu hoá


solve(seconds)

Giải chương trình tuyến tính hiện tại. Trả về giải pháp tìm được và nếu đó là giải pháp tối ưu.

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

Các tham số

TênLoạiNội dung mô tả
secondsNumberthời hạn giải bài tập, tính bằng giây; thời hạn tối đa là 300 giây

Cầu thủ trả bóng

LinearOptimizationSolution – giải pháp tối ưu hoá