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 مشخص می‌کند که آیا راه‌حل، شدنی یا بهینه است یا خیر.

مستندات دقیق

getObjectiveValue()

مقدار تابع هدف را در راه‌حل فعلی برمی‌گرداند.

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 - مقدار تابع هدف


getStatus()

وضعیت راه‌حل را دریافت می‌کند. قبل از حل یک مسئله، وضعیت 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 — وضعیت حل‌کننده


getVariableValue(variableName)

مقدار یک متغیر در راه‌حل ایجاد شده توسط آخرین فراخوانی LinearOptimizationEngine.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 - مقدار متغیر در جواب


isValid()

مشخص می‌کند که آیا راه‌حل، شدنی یا بهینه است یا خیر.

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 - اگر راه حل معتبر باشد ( Status.FEASIBLE یا Status.OPTIMAL ) true ؛ در غیر این صورت false