In previous posts I showed how to conduct optimization in R (linear optimization with lpSolve, quadratic optimization with quadprog and non-linear gradient descent optimization with nloptr). In this post I show how to model and solve the linear optimization problem below – using SciPy in Python:
In the SciPy-package in Python I can use the linprog function to model and solve this simple linear optimization problem. For that I will state it in vector matrix notation form – and transform it into a minimzation problem:
In Python I can solve this problem as follows:
# set up cost list with cost function coefficient values c = [-2,-3] # set up constraint coefficient matrix A A_ub = [[1,1], [2,1]] # constraint list for upper bounds (less than or equal constraints) b_ub =[10,15] # in addition, i need to prepare a bounds tuple for each optimization variable and summarize them a list x1_bounds = (0,None) x2_bounds = (0,None) # now I use SciPy.optimize.linprog to model and solve the problem at hand from scipy.optimize import linprog model_linear = linprog(c=c, A_ub=A_ub, b_ub = b_ub, bounds = [x1_bounds,x2_bounds]) # output model solution print(str(model_linear))
fun: -30.0 message: 'Optimization terminated successfully.' nit: 1 slack: array([ 0., 5.]) status: 0 success: True x: array([ 0., 10.])
Be aware, since for using linprog we transformed the problem into the form of a minimization problem the optimal objective function value is not -30.0 but 30.0
Data scientist focusing on simulation, optimization and modeling in R, SQL, VBA and Python
Leave a Reply