Class LinearOptimizationEngine

Linear Optimization Engine

موتوری که برای مدلسازی و حل یک برنامه خطی استفاده می شود. مثال زیر برنامه خطی زیر را حل می کند:

دو متغیر x و y :
0 ≤ x ≤ 10
0 ≤ y ≤ 5

محدودیت ها:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

هدف، واقعگرایانه:
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'));
}

مواد و روش ها

روش نوع برگشت توضیح مختصر
addConstraint(lowerBound, upperBound) LinearOptimizationConstraint یک محدودیت خطی جدید در مدل اضافه می کند.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients) LinearOptimizationEngine محدودیت هایی را به صورت دسته ای به مدل اضافه می کند.
addVariable(name, lowerBound, upperBound) LinearOptimizationEngine یک متغیر پیوسته جدید به مدل اضافه می کند.
addVariable(name, lowerBound, upperBound, type) LinearOptimizationEngine یک متغیر جدید به مدل اضافه می کند.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient) LinearOptimizationEngine یک متغیر جدید به مدل اضافه می کند.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients) LinearOptimizationEngine متغیرهایی را به صورت دسته ای به مدل اضافه می کند.
setMaximization() LinearOptimizationEngine جهت بهینه سازی را برای به حداکثر رساندن تابع هدف خطی تنظیم می کند.
setMinimization() LinearOptimizationEngine جهت بهینه سازی را برای به حداقل رساندن تابع هدف خطی تنظیم می کند.
setObjectiveCoefficient(variableName, coefficient) LinearOptimizationEngine ضریب یک متغیر را در تابع هدف خطی تنظیم می کند.
solve() LinearOptimizationSolution برنامه خطی فعلی را با مهلت پیش فرض 30 ثانیه حل می کند.
solve(seconds) LinearOptimizationSolution برنامه خطی فعلی را حل می کند.

مستندات دقیق

addConstraint(lowerBound, upperBound)

یک محدودیت خطی جدید در مدل اضافه می کند. کران بالا و پایین محدودیت در زمان ایجاد تعریف می شود. ضرایب برای متغیرها از طریق فراخوانی 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);

مولفه های

نام تایپ کنید شرح
lowerBound Number کران پایینی محدودیت
upperBound Number کران بالای محدودیت

برگشت

LinearOptimizationConstraint - محدودیت ایجاد شده


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

محدودیت هایی را به صورت دسته ای به مدل اضافه می کند.

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

مولفه های

نام تایپ کنید شرح
lowerBounds Number[] مرزهای پایین محدودیت ها
upperBounds Number[] مرزهای بالای محدودیت ها
variableNames String[][] نام متغیرهایی که ضرایب برای آنها تنظیم می شود
coefficients Number[][] ضرایب در حال تعیین

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


addVariable(name, lowerBound, upperBound)

یک متغیر پیوسته جدید به مدل اضافه می کند. متغیر با نام خود ارجاع داده می شود. نوع روی 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);

مولفه های

نام تایپ کنید شرح
name String نام منحصر به فرد متغیر
lowerBound Number کران پایینی متغیر
upperBound Number کران بالای متغیر

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


addVariable(name, lowerBound, upperBound, type)

یک متغیر جدید به مدل اضافه می کند. متغیر با نام خود ارجاع داده می شود.

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

مولفه های

نام تایپ کنید شرح
name String نام منحصر به فرد متغیر
lowerBound Number کران پایینی متغیر
upperBound Number کران بالای متغیر
type VariableType نوع متغیر، می تواند یکی از VariableType باشد

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


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

یک متغیر جدید به مدل اضافه می کند. متغیر با نام خود ارجاع داده می شود.

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.

مولفه های

نام تایپ کنید شرح
name String نام منحصر به فرد متغیر
lowerBound Number کران پایینی متغیر
upperBound Number کران بالای متغیر
type VariableType نوع متغیر، می تواند یکی از VariableType باشد
objectiveCoefficient Number ضریب هدف متغیر

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


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

متغیرها را به صورت دسته ای به مدل اضافه می کند. متغیرها با نامشان ارجاع داده می شوند.

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

مولفه های

نام تایپ کنید شرح
names String[] نام منحصر به فرد متغیرها
lowerBounds Number[] مرزهای پایینی متغیرها
upperBounds Number[] کران های بالایی متغیرها
types VariableType[] انواع متغیرها، می تواند یکی از VariableType باشد
objectiveCoefficients Number[] ضرایب عینی متغیرها

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


setMaximization()

جهت بهینه سازی را برای به حداکثر رساندن تابع هدف خطی تنظیم می کند.

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

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


setMinimization()

جهت بهینه سازی را برای به حداقل رساندن تابع هدف خطی تنظیم می کند.

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

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


setObjectiveCoefficient(variableName, coefficient)

ضریب یک متغیر را در تابع هدف خطی تنظیم می کند.

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

مولفه های

نام تایپ کنید شرح
variableName String نام متغیری که ضریب برای آن تنظیم می شود
coefficient Number ضریب متغیر در تابع هدف

برگشت

LinearOptimizationEngine - یک موتور بهینه سازی خطی


solve()

برنامه خطی فعلی را با مهلت پیش فرض 30 ثانیه حل می کند. راه حل پیدا شده را برمی گرداند.

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

برگشت

LinearOptimizationSolution - راه حل بهینه سازی


solve(seconds)

برنامه خطی فعلی را حل می کند. راه حل پیدا شده را برمی گرداند. و اگر راه حل بهینه باشد.

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

مولفه های

نام تایپ کنید شرح
seconds Number مهلت حل مشکل، در چند ثانیه؛ حداکثر مهلت 300 ثانیه است

برگشت

LinearOptimizationSolution - راه حل بهینه سازی