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