Purpose is to know how it looks solving linear programs using libraries and solvers.
Reference : https://pythonhosted.org/PuLP/CaseStudies/a_blending_problem.html
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| \* Minimize food cost *\ | |
| Minimize | |
| Total_Cost: 0.008 Beef_percentage + 0.013 chicken_percentag | |
| Subject To | |
| Fat_Constraint: 0.1 Beef_percentage + 0.08 chicken_percentag >= 6 | |
| Fiber_Constrint: 0.005 Beef_percentage + 0.001 chicken_percentag <= 2 | |
| Protine_Constraint: 0.2 Beef_percentage + 0.1 chicken_percentag >= 8 | |
| Salt_constraint: 0.005 Beef_percentage + 0.002 chicken_percentag <= 0.4 | |
| Total_Sum: Beef_percentage + chicken_percentag = 100 | |
| End |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| """ | |
| THis is taken from https://pythonhosted.org/PuLP/CaseStudies/a_blending_problem.html | |
| """ | |
| from pulp import * | |
| problem = LpProblem("Minimize food cost", LpMinimize) | |
| x1 = LpVariable("chicken_percentag", lowBound=0) | |
| x2 = LpVariable("Beef_percentage", lowBound=0, upBound=None) | |
| problem += 0.013*x1 + 0.008*x2, "Total Cost" | |
| problem += x1 + x2 == 100, "Total Sum" | |
| problem += 0.1*x1 + 0.2*x2 >=8, "Protine Constraint" | |
| problem += 0.08*x1 + 0.1*x2 >=6, "Fat Constraint" | |
| problem += 0.001*x1 + 0.005*x2 <=2, "Fiber Constrint" | |
| problem += 0.002*x1 + 0.005*x2 <=0.4, "Salt constraint" | |
| problem.writeLP("minimize_food_cost.lp") | |
| problem.solve() | |
| print "Solution found was :", LpStatus[problem.status] | |
| print "Here is the proportional of chick and beef that should be used" | |
| for v in problem.variables(): | |
| print "\t",v.name, " : ", v.varValue | |
| print "Cost will be : ", value(problem.objective) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Solution found was : Optimal | |
| Here is the proportional of chick and beef that should be used | |
| Beef_percentage : 66.666667 | |
| chicken_percentag : 33.333333 | |
| Cost will be : 0.966666665 |
