Class LinearOptimizationSolution

LinearOptimizationSolution

Solution d'un programme linéaire. L'exemple ci-dessous résout le programme linéaire suivant:

Deux variables, x et y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

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

Objectif:
Maximiser 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'));
}

Méthodes

MéthodeType renvoyéBrève description
getObjectiveValue()NumberRécupère la valeur de la fonction objectif dans la solution actuelle.
getStatus()StatusRécupère l'état de la solution.
getVariableValue(variableName)NumberRécupère la valeur d'une variable dans la solution créée par le dernier appel à LinearOptimizationEngine.solve().
isValid()BooleanDétermine si la solution est réalisable ou optimale.

Documentation détaillée

getObjectiveValue()

Récupère la valeur de la fonction objectif dans la solution actuelle.

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

Renvois

Number : valeur de la fonction d'objectif


getStatus()

Récupère l'état de la solution. Avant de résoudre un problème, l'état est 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());

Renvois

Status : état du résolveur


getVariableValue(variableName)

Récupère la valeur d'une variable dans la solution créée par le dernier appel à 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'));

Paramètres

NomTypeDescription
variableNameStringle nom de la variable

Renvois

Number : valeur de la variable dans la solution


isValid()

Détermine si la solution est réalisable ou optimale.

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

Renvois

Boolean : true si la solution est valide (Status.FEASIBLE ou Status.OPTIMAL) ; false dans le cas contraire