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

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')}`);
}

Methods

שיטהסוג הערך שמוחזרתיאור קצר
getObjectiveValue()Numberהפונקציה מחזירה את הערך של פונקציית המטרה בפתרון הנוכחי.
getStatus()Statusהפונקציה מחזירה את הסטטוס של הפתרון.
getVariableValue(variableName)Numberמחזירה את הערך של משתנה בפתרון שנוצר על ידי הקריאה האחרונה אל LinearOptimizationEngine.solve().
isValid()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')}`);

פרמטרים

שםסוגתיאור
variableNameStringשם המשתנה

חזרה

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()}`;
}

חזרה

Booleantrue אם הפתרון תקף (Status.FEASIBLE או Status.OPTIMAL); false אם לא