Gurobi求解目标函数最优值
""" 求解目标函数最大值 x+y+2*z 约束条件 x+2*y+3*z<=4 x+y>=1 """ from gurobipy import * try: m = Model("mip1") x = m.addVar(vtype=GRB.BINARY,name="x") y = m.addVar(vtype=GRB.BINARY,name="y") z = m.addVar(vtype=GRB.BINARY,name="z") m.setObjective(x+y+2*z,GRB.MAXIMIZE) m.addConstr(x+2*y+3*z<=4,"c0") m.addConstr(x+y>=1,"c1") m.optimize() #打印变量名称和变量值 for v in m.getVars(): print(v.varName,v.x) print( m.objVal) #捕捉程序运行中的错误 except GurobiError as e: print("Erroe code" + str(e.errno) + ":" + str(e)) except AttributeError: print("Encountered an attribute erroe")
from gurobipy import * #所需营养 categories,minNutrition,maxNutrition = multidict({ "calories":[1800,2200], "protein":[91,GRB.INFINITY], "fat":[0,65], "sodium":[0,1779] }) #食物已经对应的cost foods,cost = multidict({ "hamburger":2.49, "chicken":2.89, "hot dog":1.50, "fries":1.89, "macaroni":2.09, "pizza":1.99, "salad":2.49, "milk":0.89, "ice cream":1.59 }) #每种食物所对应的营养价值 nutritionValues = { ("hamburger","calories"):410, ("hamburger","protein"):24, ("hamburger","fat"):26, ("hamburger","sodium"):420, ("chicken","calories"):420, ("chicken","protein"):32, ("chicken","fat"):10, ("chicken","sodium"):1190, ("hot dog","calories"):380, ("hot dog","protein"):4, ("hot dog","fat"):19, ("hot dog","sodium"):1800, ("fries", "calories"):380, ("fries", "protein"):4, ("fries", "fat"):19, ("fries", "sodium"):270, ("macaroni", "calories"):320, ("macaroni", "protein"):12, ("macaroni", "fat"):10, ("macaroni", "sodium"):930, ("pizza", "calories"):320, ("pizza", "protein"):15, ("pizza", "fat"):12, ("pizza", "sodium"):820, ("salad", "calories"):320, ("salad", "protein"):31, ("salad", "fat"):12, ("salad", "sodium"):1230, ("milk", "calories"):100, ("milk", "protein"):8, ("milk", "fat"):2.5, ("milk", "sodium"):125, ("ice cream", "calories"):330, ("ice cream", "protein"):8, ("ice cream", "fat"):10, ("ice cream", "sodium"):180, } #创建模型 m = Model("diet") #添加变量 buy = m.addVars(foods,name="buy") #构建目标函数 m.setObjective(buy.prod(cost),GRB.MINIMIZE) #添加约束条件 m.addConstrs( (quicksum(nutritionValues[f,c]*buy[f] for f in foods) ==[minNutrition[c],maxNutrition[c]] for c in categories),"_" ) def printSolution(): if m.status == GRB.Status.OPTIMAL: print(" Cost: %g" % m.objVal) print(" Buy:") buyx = m.getAttr("x",buy) for f in foods: if buy[f].x > 0.0001: print("%s %g" % (f, buyx[f])) else: print("No solution") m.optimize() printSolution()
上一篇:
JS实现多线程数据分片下载
下一篇:
大数据入门-大数据是什么