Class LinearOptimizationEngine

LinearOptimizationEngine

המנוע שמשמש למודל ולפתרון של תוכנית לינארית. הדוגמה הבאה פותרת את הבעיות הבאות תוכנית לינארית:

שני משתנים, 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('Value of x: ' + solution.getVariableValue('x'));
  Logger.log('Value of y: ' + solution.getVariableValue('y'));
}

שיטות

שיטהסוג הערך המוחזרתיאור קצר
addConstraint(lowerBound, upperBound)LinearOptimizationConstraintהפונקציה מוסיפה אילוץ לינארי חדש במודל.
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)LinearOptimizationEngineהוספת אילוצים באצווה למודל.
addVariable(name, lowerBound, upperBound)LinearOptimizationEngineהפונקציה מוסיפה משתנה רציף חדש למודל.
addVariable(name, lowerBound, upperBound, type)LinearOptimizationEngineהפונקציה מוסיפה משתנה חדש למודל.
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)LinearOptimizationEngineהפונקציה מוסיפה משתנה חדש למודל.
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)LinearOptimizationEngineהפונקציה מוסיפה למודל משתנים באצווה.
setMaximization()LinearOptimizationEngineמגדיר את כיוון האופטימיזציה למיקסום פונקציית היעד הלינארית.
setMinimization()LinearOptimizationEngineמגדיר את כיוון האופטימיזציה לצמצום פונקציית היעד הלינארית.
setObjectiveCoefficient(variableName, coefficient)LinearOptimizationEngineמגדירה את המקדם של משתנה בפונקציית היעד הלינארית.
solve()LinearOptimizationSolutionהפונקציה פותרת את התוכנית הלינארית הנוכחית עם תאריך היעד שמוגדר כברירת מחדל, שהוא 30 שניות.
solve(seconds)LinearOptimizationSolutionפותר את התוכנית הלינארית הנוכחית.

מסמכי תיעוד מפורטים

addConstraint(lowerBound, upperBound)

הפונקציה מוסיפה אילוץ לינארי חדש במודל. הגבול העליון והגבול התחתון של האילוץ הם מוגדר בזמן היצירה. מקדמים של המשתנים מוגדרים באמצעות קריאות ל-LinearOptimizationConstraint.setCoefficient(variableName, coefficient).

var engine = LinearOptimizationService.createEngine();

// Create a linear constraint with the bounds 0 and 10
var constraint = engine.addConstraint(0, 10);

// Create a variable so we can add it to the constraint
engine.addVariable('x', 0, 5);

// Set the coefficient of the variable in the constraint. The constraint is now:
// 0 <= 2 * x <= 5
constraint.setCoefficient('x', 2);

פרמטרים

שםסוגתיאור
lowerBoundNumberהגבול התחתון של האילוץ
upperBoundNumberהגבול העליון של האילוץ

חזרה

LinearOptimizationConstraint – האילוץ נוצר


addConstraints(lowerBounds, upperBounds, variableNames, coefficients)

הוספת אילוצים באצווה למודל.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >= 0 and <= 100)
variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

// Adds two constraints:
//   0 <= x + y <= 3
//   1 <= 10 * x - y <= 5
engine.addConstraints([0.0, 1.0], [3.0, 5.0], [['x', 'y'], ['x', 'y']], [[1, 1], [10, -1]]);

פרמטרים

שםסוגתיאור
lowerBoundsNumber[]הגבול התחתון של המגבלות
upperBoundsNumber[]הגבול העליון של המגבלות
variableNamesString[][]שמות המשתנים שעבורם הוגדרו מקדמים
coefficientsNumber[][]מגדירים מקדמים

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


addVariable(name, lowerBound, upperBound)

הפונקציה מוסיפה משתנה רציף חדש למודל. יש הפניה למשתנה באמצעות השם שלו. הסוג מוגדר ל-VariableType.CONTINUOUS.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

פרמטרים

שםסוגתיאור
nameStringהשם הייחודי של המשתנה
lowerBoundNumberהגבול התחתון של המשתנה
upperBoundNumberהגבול העליון של המשתנה

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


addVariable(name, lowerBound, upperBound, type)

הפונקציה מוסיפה משתנה חדש למודל. יש הפניה למשתנה באמצעות השם שלו.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER);

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS);

פרמטרים

שםסוגתיאור
nameStringהשם הייחודי של המשתנה
lowerBoundNumberהגבול התחתון של המשתנה
upperBoundNumberהגבול העליון של המשתנה
typeVariableTypeסוג המשתנה, יכול להיות אחד מ-VariableType

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)

הפונקציה מוסיפה משתנה חדש למודל. יש הפניה למשתנה באמצעות השם שלו.

var engine = LinearOptimizationService.createEngine();
var constraint = engine.addConstraint(0, 10);

// Add a boolean variable (integer >= 0 and <= 1)
engine.addVariable('x', 0, 1, LinearOptimizationService.VariableType.INTEGER, 2);
// The objective is now 2 * x.

// Add a real (continuous) variable
engine.addVariable('y', 0, 100, LinearOptimizationService.VariableType.CONTINUOUS, -5);
// The objective is now 2 * x - 5 * y.

פרמטרים

שםסוגתיאור
nameStringהשם הייחודי של המשתנה
lowerBoundNumberהגבול התחתון של המשתנה
upperBoundNumberהגבול העליון של המשתנה
typeVariableTypeסוג המשתנה, יכול להיות אחד מ-VariableType
objectiveCoefficientNumberמקדם היעד של המשתנה

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)

הפונקציה מוסיפה למודל משתנים באצווה. השמות מפנים למשתנים.

var engine = LinearOptimizationService.createEngine();

// Add a boolean variable 'x' (integer >= 0 and <= 1) and a real (continuous >=0 and <= 100)
// variable 'y'.
engine.addVariables(['x', 'y'], [0, 0], [1, 100],
    [LinearOptimizationService.VariableType.INTEGER,
        LinearOptimizationService.VariableType.CONTINUOUS]);

פרמטרים

שםסוגתיאור
namesString[]שמות ייחודיים של המשתנים
lowerBoundsNumber[]גבול תחתון של המשתנים
upperBoundsNumber[]הגבולות העליונים של המשתנים
typesVariableType[]סוגי המשתנים, יכולים להיות אחד מ-VariableType
objectiveCoefficientsNumber[]מקדמים אובייקטיביים של המשתנים

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


setMaximization()

מגדיר את כיוון האופטימיזציה למיקסום פונקציית היעד הלינארית.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to maximize.
engine.setMaximization();

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


setMinimization()

מגדיר את כיוון האופטימיזציה לצמצום פונקציית היעד הלינארית.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

// We want to minimize
engine.setMinimization();

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


setObjectiveCoefficient(variableName, coefficient)

מגדירה את המקדם של משתנה בפונקציית היעד הלינארית.

var engine = LinearOptimizationService.createEngine();

// Add a real (continuous) variable. Notice the lack of type specification.
engine.addVariable('y', 0, 100);

// Set the coefficient of 'y' in the objective.
// The objective is now 5 * y
engine.setObjectiveCoefficient('y', 5);

פרמטרים

שםסוגתיאור
variableNameStringשם המשתנה שעבורו מגדירים את המקדם
coefficientNumberהמקדם של המשתנה בפונקציית היעד

חזרה

LinearOptimizationEngine – מנוע אופטימיזציה לינארי


solve()

הפונקציה פותרת את התוכנית הלינארית הנוכחית עם תאריך היעד שמוגדר כברירת מחדל, שהוא 30 שניות. מחזירה את הפתרון שנמצא.

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 ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

חזרה

LinearOptimizationSolution – פתרון האופטימיזציה


solve(seconds)

פותר את התוכנית הלינארית הנוכחית. מחזירה את הפתרון שנמצא. ואם זו שיטה אופטימלית לפתרון הבעיה.

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(300);
if (!solution.isValid()) {
  throw 'No solution ' + solution.getStatus();
}
Logger.log('Value of x: ' + solution.getVariableValue('x'));

פרמטרים

שםסוגתיאור
secondsNumberמועד אחרון לפתרון הבעיה, בשניות; המועד האחרון המקסימלי הוא 300 שניות

חזרה

LinearOptimizationSolution – פתרון האופטימיזציה