Class LinearOptimizationSolution

LinearOptimizationSolution

حل برنامج خطي. يحل المثال التالي البرنامج الخطي التالي:

متغيّران، 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('Objective  value: ' + solution.getObjectiveValue());
  Logger.log('Value of x: ' + solution.getVariableValue('x'));
  Logger.log('Value of y: ' + solution.getVariableValue('y'));
}

الطُرق

الطريقةنوع القيمة التي يتم إرجاعهاوصف قصير
getObjectiveValue()Numberللحصول على قيمة الدالة الهدف في الحل الحالي.
getStatus()Statusللاطّلاع على حالة الحلّ
getVariableValue(variableName)Numberللحصول على قيمة المتغيّر في الحل الذي تم إنشاؤه من خلال آخر استدعاء إلى LinearOptimizationEngine.solve().
isValid()Booleanتحدد ما إذا كان الحل ممكنًا أو الأمثل.

الوثائق التفصيلية

getObjectiveValue()

للحصول على قيمة الدالة الهدف في الحل الحالي.

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();
Logger.log('ObjectiveValue: ' + solution.getObjectiveValue());

استرجاع الكرة

Number - قيمة الدالة الهدف


getStatus()

للاطّلاع على حالة الحلّ قبل حلّ مشكلة، ستكون الحالة NOT_SOLVED.

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.getStatus() != LinearOptimizationService.Status.FEASIBLE &&
    solution.getStatus() != LinearOptimizationService.Status.OPTIMAL) {
  throw 'No solution ' + status;
}
Logger.log('Status: ' + solution.getStatus());

استرجاع الكرة

Status: حالة أداة الحلّ


getVariableValue(variableName)

للحصول على قيمة المتغيّر في الحل الذي تم إنشاؤه من خلال آخر استدعاء إلى LinearOptimizationEngine.solve().

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();
Logger.log('Value of x: ' + solution.getVariableValue('x'));

المَعلمات

الاسمTypeالوصف
variableNameStringاسم المتغيّر

استرجاع الكرة

Number - قيمة المتغير في الحل


isValid()

تحدد ما إذا كان الحل ممكنًا أو الأمثل.

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 ' + status;
}

استرجاع الكرة

Boolean: true إذا كان الحل صالحًا (Status.FEASIBLE أو Status.OPTIMAL)، وfalse إذا لم يكن كذلك