Class LinearOptimizationEngine Stay organized with collections Save and categorize content based on your preferences.
Page Summary
LinearOptimizationEngine is used to model and solve linear programs by defining variables, constraints, and objectives.
You can add variables with specified bounds and types using methods like
addVariableandaddVariables.Constraints with defined bounds can be added using
addConstraintoraddConstraints, and variable coefficients within these constraints are set separately.The objective function is defined by setting the coefficient for each variable using
setObjectiveCoefficient.The optimization direction can be set to maximization or minimization using
setMaximizationorsetMinimization.The
solve()method is used to find the solution to the defined linear program.
The engine used to model and solve a linear program. The example below solves the followinglinear program:
Two variables,x andy:0 ≤ x ≤ 100 ≤ y ≤ 5
Constraints:0 ≤ 2 * x + 5 * y ≤ 100 ≤ 10 * x + 3 * y ≤ 20
Objective:
Maximizex + 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(`Value of x:${solution.getVariableValue('x')}`);Logger.log(`Value of y:${solution.getVariableValue('y')}`);}
Methods
Detailed documentation
addConstraint(lowerBound, upperBound)
Adds a new linear constraint in the model. The upper and lower bound of the constraint aredefined at creation time. Coefficients for the variables are defined via calls toLinear.
constengine=LinearOptimizationService.createEngine();// Create a linear constraint with the bounds 0 and 10constconstraint=engine.addConstraint(0,10);// Create a variable so we can add it to the constraintengine.addVariable('x',0,5);// Set the coefficient of the variable in the constraint. The constraint is now:// 0 <= 2 * x <= 5constraint.setCoefficient('x',2);
Parameters
| Name | Type | Description |
|---|---|---|
lower | Number | lower bound of the constraint |
upper | Number | upper bound of the constraint |
Return
Linear — the constraint created
addConstraints(lowerBounds, upperBounds, variableNames, coefficients)
Adds constraints in batch to the model.
constengine=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 <= 5engine.addConstraints([0.0,1.0],[3.0,5.0],[['x','y'],['x','y'],],[[1,1],[10,-1],],);
Parameters
| Name | Type | Description |
|---|---|---|
lower | Number[] | lower bounds of the constraints |
upper | Number[] | upper bounds of the constraints |
variable | String[][] | the names of variables for which the coefficients are being set |
coefficients | Number[][] | coefficients being set |
Return
Linear — a linear optimization engine
addVariable(name, lowerBound, upperBound)
Adds a new continuous variable to the model. The variable is referenced by its name. The typeis set toVariable.
constengine=LinearOptimizationService.createEngine();constconstraint=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);
Parameters
| Name | Type | Description |
|---|---|---|
name | String | unique name of the variable |
lower | Number | lower bound of the variable |
upper | Number | upper bound of the variable |
Return
Linear — a linear optimization engine
addVariable(name, lowerBound, upperBound, type)
Adds a new variable to the model. The variable is referenced by its name.
constengine=LinearOptimizationService.createEngine();constconstraint=engine.addConstraint(0,10);// Add a boolean variable (integer >= 0 and <= 1)engine.addVariable('x',0,1,LinearOptimizationService.VariableType.INTEGER);// Add a real (continuous) variableengine.addVariable('y',0,100,LinearOptimizationService.VariableType.CONTINUOUS,);
Parameters
| Name | Type | Description |
|---|---|---|
name | String | unique name of the variable |
lower | Number | lower bound of the variable |
upper | Number | upper bound of the variable |
type | Variable | type of the variable, can be one ofVariable |
Return
Linear — a linear optimization engine
addVariable(name, lowerBound, upperBound, type, objectiveCoefficient)
Adds a new variable to the model. The variable is referenced by its name.
constengine=LinearOptimizationService.createEngine();constconstraint=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) variableengine.addVariable('y',0,100,LinearOptimizationService.VariableType.CONTINUOUS,-5,);// The objective is now 2 * x - 5 * y.
Parameters
| Name | Type | Description |
|---|---|---|
name | String | unique name of the variable |
lower | Number | lower bound of the variable |
upper | Number | upper bound of the variable |
type | Variable | type of the variable, can be one ofVariable |
objective | Number | objective coefficient of the variable |
Return
Linear — a linear optimization engine
addVariables(names, lowerBounds, upperBounds, types, objectiveCoefficients)
Adds variables in batch to the model. The variables are referenced by their names.
constengine=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,],);
Parameters
| Name | Type | Description |
|---|---|---|
names | String[] | unique names of the variables |
lower | Number[] | lower bounds of the variables |
upper | Number[] | upper bounds of the variables |
types | Variable | types of the variables, can be one ofVariable |
objective | Number[] | objective coefficients of the variables |
Return
Linear — a linear optimization engine
setMaximization()
Sets the optimization direction to maximizing the linear objective function.
constengine=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 * yengine.setObjectiveCoefficient('y',5);// We want to maximize.engine.setMaximization();
Return
Linear — a linear optimization engine
setMinimization()
Sets the optimization direction to minimizing the linear objective function.
constengine=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 * yengine.setObjectiveCoefficient('y',5);// We want to minimizeengine.setMinimization();
Return
Linear — a linear optimization engine
setObjectiveCoefficient(variableName, coefficient)
Sets the coefficient of a variable in the linear objective function.
constengine=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 * yengine.setObjectiveCoefficient('y',5);
Parameters
| Name | Type | Description |
|---|---|---|
variable | String | name of variable for which the coefficient is being set |
coefficient | Number | coefficient of the variable in the objective function |
Return
Linear — a linear optimization engine
solve()
Solves the current linear program with the default deadline of 30 seconds. Returns the solution found.
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()}`;}Logger.log(`Value of x:${solution.getVariableValue('x')}`);
Return
Linear — solution of the optimization
solve(seconds)
Solves the current linear program. Returns the solution found. and if it is an optimalsolution.
constengine=LinearOptimizationService.createEngine();// Add variables, constraints and define the objective with addVariable(),// addConstraint(), etcengine.addVariable('x',0,10);// ...// Solve the linear programconstsolution=engine.solve(300);if(!solution.isValid()){throw`No solution${solution.getStatus()}`;}Logger.log(`Value of x:${solution.getVariableValue('x')}`);
Parameters
| Name | Type | Description |
|---|---|---|
seconds | Number | deadline for solving the problem, in seconds; the maximum deadline is 300 seconds |
Return
Linear — solution of the optimization
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-11 UTC.