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, x
và y
:
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
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ên | Loại | Nội dung mô tả |
---|---|---|
lowerBound | Number | giới hạn dưới của ràng buộc |
upperBound | Number | giớ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ên | Loại | Nội dung mô tả |
---|---|---|
lowerBounds | Number[] | giới hạn dưới của các điều kiện ràng buộc |
upperBounds | Number[] | giới hạn trên của các điều kiện ràng buộc |
variableNames | String[][] | tên của biến mà hệ số đang được đặt |
coefficients | Number[][] | 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ên | Loại | Nội dung mô tả |
---|---|---|
name | String | tên duy nhất của biến |
lowerBound | Number | giới hạn dưới của biến |
upperBound | Number | giớ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ên | Loại | Nội dung mô tả |
---|---|---|
name | String | tên duy nhất của biến |
lowerBound | Number | giới hạn dưới của biến |
upperBound | Number | giới hạn trên của biến |
type | VariableType | loạ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ên | Loại | Nội dung mô tả |
---|---|---|
name | String | tên duy nhất của biến |
lowerBound | Number | giới hạn dưới của biến |
upperBound | Number | giới hạn trên của biến |
type | VariableType | loại của biến, có thể là một trong VariableType |
objectiveCoefficient | Number | hệ 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ên | Loại | Nội dung mô tả |
---|---|---|
names | String[] | tên duy nhất của các biến |
lowerBounds | Number[] | giới hạn dưới của các biến |
upperBounds | Number[] | giới hạn trên của các biến |
types | VariableType[] | loại biến, có thể là một trong VariableType |
objectiveCoefficients | Number[] | 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ên | Loại | Nội dung mô tả |
---|---|---|
variableName | String | tên của biến mà hệ số đang được đặt |
coefficient | Number | hệ 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ên | Loại | Nội dung mô tả |
---|---|---|
seconds | Number | thờ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á