Class LinearOptimizationSolution

LinearOptimizationSolution

The solution of a linear program. The example below solves the following linear program:

Two variables, x and y:
0 ≤ x ≤ 10
0 ≤ y ≤ 5

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

Objective:
Maximize x + y

constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etc. Add two variables, 0 <= x <= 10 and 0 <= y <= 5engine.addVariable('x',0,10);engine.addVariable('y',0,5);// Create the constraint: 0 <= 2 * x + 5 * y <= 10letconstraint=engine.addConstraint(0,10);constraint.setCoefficient('x',2);constraint.setCoefficient('y',5);// Create the constraint: 0 <= 10 * x + 3 * y <= 20constraint=engine.addConstraint(0,20);constraint.setCoefficient('x',10);constraint.setCoefficient('y',3);// Set the objective to be x + yengine.setObjectiveCoefficient('x',1);engine.setObjectiveCoefficient('y',1);// Engine should maximize the objectiveengine.setMaximization();// Solve the linear programconstsolution=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

MethodReturn typeBrief description
getObjectiveValue()NumberGets the value of the objective function in the current solution.
getStatus()StatusGets the status of the solution.
getVariableValue(variableName)NumberGets the value of a variable in the solution created by the last call to LinearOptimizationEngine.solve().
isValid()BooleanDetermines whether the solution is either feasible or optimal.

Detailed documentation

getObjectiveValue()

Gets the value of the objective function in the current solution.

constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etcengine.addVariable('x',0,10);// ...// Solve the linear programconstsolution=engine.solve();Logger.log(`ObjectiveValue: ${solution.getObjectiveValue()}`);

Return

Number — the value of the objective function


getStatus()

Gets the status of the solution. Before solving a problem, the status will be NOT_SOLVED.

constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etcengine.addVariable('x',0,10);// ...// Solve the linear programconstsolution=engine.solve();conststatus=solution.getStatus();if(status!==LinearOptimizationService.Status.FEASIBLE&& status!==LinearOptimizationService.Status.OPTIMAL){throw`No solution ${status}`;}Logger.log(`Status: ${status}`);

Return

Status — the status of the solver


getVariableValue(variableName)

Gets the value of a variable in the solution created by the last call to LinearOptimizationEngine.solve().

constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etcengine.addVariable('x',0,10);// ...// Solve the linear programconstsolution=engine.solve();Logger.log(`Value of x: ${solution.getVariableValue('x')}`);

Parameters

NameTypeDescription
variableNameStringname of the variable

Return

Number — the value of the variable in the solution


isValid()

Determines whether the solution is either feasible or optimal.

constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etcengine.addVariable('x',0,10);// ...// Solve the linear programconstsolution=engine.solve();if(!solution.isValid()){throw`No solution ${solution.getStatus()}`;}

Return

Booleantrue if the solution is valid (Status.FEASIBLE or Status.OPTIMAL); false if not