Class LinearOptimizationEngine

LinearOptimizationEngine

يشير ذلك المصطلح إلى المحرّك المستخدَم لوضع نماذج لأي برنامج خطي وحله. يحل المثال أدناه ما يلي المساواة بين نقاط الاتصال:

متغيّران، 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);

المعلمات

الاسمالنوعالوصف
lowerBoundNumberالحد الأدنى للقيد
upperBoundNumberالحد الأعلى للقيد

الإرجاع

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

المعلمات

الاسمالنوعالوصف
lowerBoundsNumber[]الحدود الدنيا للقيود
upperBoundsNumber[]الحدود القصوى للقيود
variableNamesString[][]أسماء المتغيرات التي يتم تعيين المعاملات لها
coefficientsNumber[][]المعاملات التي يتم تعيينها

الإرجاع

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

المعلمات

الاسمالنوعالوصف
nameStringالاسم الفريد للمتغيّر
lowerBoundNumberالحد الأدنى للمتغيّر
upperBoundNumberالحد الأعلى للمتغيّر

الإرجاع

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

المعلمات

الاسمالنوعالوصف
nameStringالاسم الفريد للمتغيّر
lowerBoundNumberالحد الأدنى للمتغيّر
upperBoundNumberالحد الأعلى للمتغيّر
typeVariableTypeنوع المتغير، يمكن أن يكون واحدًا من 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.

المعلمات

الاسمالنوعالوصف
nameStringالاسم الفريد للمتغيّر
lowerBoundNumberالحد الأدنى للمتغيّر
upperBoundNumberالحد الأعلى للمتغيّر
typeVariableTypeنوع المتغير، يمكن أن يكون واحدًا من VariableType
objectiveCoefficientNumberالمُعامل الموضوعي للمتغيّر

الإرجاع

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

المعلمات

الاسمالنوعالوصف
namesString[]الأسماء الفريدة للمتغيرات
lowerBoundsNumber[]الحدود السفلية للمتغيرات
upperBoundsNumber[]الحدود العليا للمتغيرات
typesVariableType[]أنواع المتغيّرات، ويمكن أن يكون أحد أنواع VariableType
objectiveCoefficientsNumber[]المعاملات الموضوعية للمتغيرات

الإرجاع

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

المعلمات

الاسمالنوعالوصف
variableNameStringاسم المتغير الذي يتم تعيين المُعامل له
coefficientNumberمُعامل المتغيّر في الدالة الموضوعية

الإرجاع

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

المعلمات

الاسمالنوعالوصف
secondsNumberوالموعد النهائي لحل المشكلة في ثوانٍ؛ الحدّ الأقصى للموعد النهائي هو 300 ثانية.

الإرجاع

LinearOptimizationSolution — حل التحسين