# Example problem

• Each unit of A requires 1 unit of Milk and 3 units of Choco,
• Each unit of B requires 1 unit of Milk and 2 units of Choco.
• Rs. 6 per unit A sold,
• Rs. 5 per unit B sold.

# Mathematical formulation

## Decision variables:

• x be the total number of units produced by A,
• y be the total number of units produced by B.

# Installing Pyomo

`pip install pyomo`

# Pyomo model

## Import required packages

`from pyomo.environ import * from pyomo.opt import SolverFactory`

## Create a model

`model = ConcreteModel(name=”(My-Pyomo-Model)”)`

## Define decision variables of the model

`model.x = Var(domain = NonNegativeReals, name = ‘x’) model.y = Var(domain = NonNegativeReals, name = ‘y’)`

## Define the objective function of the model

`model.objective = Objective(expr = 6*model.x + 5*model.y, sense = maximize)`

## Add constraints to the model

`model.constraints = ConstraintList()model.constraints.add(model.x + model.y <= 5); # constraint-1 model.constraints.add(3*model.x + 2*model.y <= 12); # constraint-2 # to suppress unnecessary outputs, use a semicolon at the end`

## Create a solver

`solver = SolverFactory(“/opt/ibm/ILOG/CPLEX_Studio1271/cplex/bin/x86–64_linux/cplexamp”)`

## Solve the model

`sol = solver.solve(model)`

## Print the solution

`print(sol)`
`Problem: - Lower bound: -inf Upper bound: inf Number of objectives: 1 Number of constraints: 2 Number of variables: 2 Sense: unknownSolver: - Status: ok Message: CPLEX 12.7.1.0\x3a optimal solution; objective 27; 2 dual simplex iterations (1 in phase I) Termination condition: optimal Id: 0 Error rc: 0 Time: 0.2711672782897949Solution: - number of solutions: 0 number of solutions displayed: 0`

## Retrieving decision variables’ values

`print(‘x =’, model.x.value)print(‘y =’, model.y.value)`
`x = 2.0000000000000004y = 2.9999999999999996`

## Retrieve the objective value

`print(‘The objective value is =’,model.objective())`
`The objective value is = 27.0`

## Save the model in a file

`model.write();`
`\* Source Pyomo model name=‘(My-Pyomo-Model)’ *\max x3:+6 x1+5 x2s.t.c_u_x4_:+1 x1+1 x2<= 5c_u_x5_:+3 x1+2 x2<= 12c_e_ONE_VAR_CONSTANT: ONE_VAR_CONSTANT = 1.0bounds 0 <= x1 <= +inf 0 <= x2 <= +infend`

## Display model information

`model.display()`
`Model ‘(My-Pyomo-Model)’Variables: x : Size=1, Index=None Key : Lower : Value : Upper : Fixed : Stale : Domain None : 0 : 2.0000000000000004 : None : False : False : NonNegativeReals y : Size=1, Index=None Key : Lower : Value : Upper : Fixed : Stale : Domain None : 0 : 2.9999999999999996 : None : False : False : NonNegativeRealsObjectives: objective : Size=1, Index=None, Active=True Key : Active : Value None : True : 27.0Constraints: constraints : Size=2 Key : Lower : Body : Upper 1 : None : 5.0 : 5.0 2 : None : 12.0 : 12.0`

--

--