Gurobi求解目标函数最优值

2023-10-22 23:50

本文主要是介绍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("\nCost: %g" % m.objVal)print("\nBuy:")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()

 

这篇关于Gurobi求解目标函数最优值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/264367

相关文章

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.