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

مولفه های

نام تایپ کنید شرح
variableName String نام متغیر

برگشت

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 اگر نه