Class LinearOptimizationSolution

LinearOptimizationSolution

La soluzione di un programma lineare. L'esempio riportato di seguito risolve il seguente programma lineare:

Due variabili, x e y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

Vincoli:
0 ≤ 2 * x + 5 * y ≤ 10
0 ≤ 10 * x + 3 * y ≤ 20

Obiettivo:
Massimizzare il 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'));
}

Metodi

MetodoTipo restituitoBreve descrizione
getObjectiveValue()NumberRestituisce il valore della funzione obiettivo nella soluzione corrente.
getStatus()StatusConsente di acquisire lo stato della soluzione.
getVariableValue(variableName)NumberRestituisce il valore di una variabile nella soluzione creata dall'ultima chiamata a LinearOptimizationEngine.solve().
isValid()BooleanDetermina se la soluzione è fattibile o ottimale.

Documentazione dettagliata

getObjectiveValue()

Restituisce il valore della funzione obiettivo nella soluzione corrente.

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

Ritorni

Number: il valore della funzione obiettivo


getStatus()

Consente di acquisire lo stato della soluzione. Prima di risolvere un problema, lo stato sarà 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());

Ritorni

Status: lo stato del risolutore


getVariableValue(variableName)

Restituisce il valore di una variabile nella soluzione creata dall'ultima chiamata a 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'));

Parametri

NomeTipoDescrizione
variableNameStringnome della variabile

Ritorni

Number: il valore della variabile nella soluzione


isValid()

Determina se la soluzione è fattibile o ottimale.

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;
}

Ritorni

Boolean: true se la soluzione è valida (Status.FEASIBLE o Status.OPTIMAL); false in caso contrario