Class LinearOptimizationSolution

راه حل بهینه سازی خطی

حل یک برنامه خطی مثال زیر برنامه خطی زیر را حل می کند:

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

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

هدف:
x + y را به حداکثر برسانید

const 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
let constraint = engine.addConstraint(0, 10);
constraint.setCoefficient('x', 2);
constraint.setCoefficient('y', 5);

// Create the constraint: 0 <= 10 * x + 3 * y <= 20
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
const 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')}`);
}

روش ها

روش نوع برگشت شرح مختصر
get Objective Value() Number مقدار تابع هدف را در راه حل فعلی بدست می آورد.
get Status() Status وضعیت راه حل را می گیرد.
get Variable Value(variableName) Number مقدار یک متغیر را در راه حل ایجاد شده توسط آخرین فراخوانی Linear Optimization Engine.solve() دریافت می کند.
is Valid() Boolean تعیین می کند که آیا راه حل ممکن است یا بهینه است.

مستندات دقیق

get Objective Value()

مقدار تابع هدف را در راه حل فعلی بدست می آورد.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`ObjectiveValue: ${solution.getObjectiveValue()}`);

بازگشت

Number - مقدار تابع هدف


get Status()

وضعیت راه حل را می گیرد. قبل از حل یک مشکل، وضعیت NOT_SOLVED خواهد بود.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
const status = solution.getStatus();

if (status !== LinearOptimizationService.Status.FEASIBLE &&
    status !== LinearOptimizationService.Status.OPTIMAL) {
  throw `No solution ${status}`;
}
Logger.log(`Status: ${status}`);

بازگشت

Status - وضعیت حل کننده


get Variable Value(variableName)

مقدار یک متغیر را در راه حل ایجاد شده توسط آخرین فراخوانی Linear Optimization Engine.solve() دریافت می کند.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
Logger.log(`Value of x: ${solution.getVariableValue('x')}`);

پارامترها

نام تایپ کنید توضیحات
variable Name String نام متغیر

بازگشت

Number - مقدار متغیر در راه حل


is Valid()

تعیین می کند که آیا راه حل ممکن است یا بهینه است.

const engine = LinearOptimizationService.createEngine();

// Add variables, constraints and define the objective with addVariable(),
// addConstraint(), etc
engine.addVariable('x', 0, 10);

// ...

// Solve the linear program
const solution = engine.solve();
if (!solution.isValid()) {
  throw `No solution ${solution.getStatus()}`;
}

بازگشت

Boolean - true اگر راه حل معتبر باشد ( Status.FEASIBLE یا Status.OPTIMAL ). false اگر نه