【Gurobi】学习笔记 | (一)全局函数 适用于Python


在这里插入图片描述

本文章参考Gurobi官方手册,内容上为更适合入门者学习,有所删减。

下载和调用gurobipy库

进入Python环境,下载名为“gurobi”的软件包,并且在每次使用Gurobi求解时,需要引入这个软件包。


from gurobipy import *

与Gurobi-Python中其他接口相比,全局函数不需要Gurobi对象来调用。

multidict() 函数

  • 功能:将一个字典分割成多个字典
  • 输入:Python字典
  • 输出:一个列表,其中第一个列表包含字典中的共享“键”,其余列表包含从输入字典中按列拆分形成的新字典
# 示例

keys, dict1, dict2 = multidict({
     'key1': [1, 2],
     'key2': [1, 3],
     'key3': [1, 4]})

print(keys)     # ['key1', 'key2', 'key3']
print(dict1)    # {'key1': 1, 'key2': 1, 'key3': 1}
print(dict2)    # {'key1': 2, 'key2': 3, 'key3': 4}

paramHelp() 函数

  • 功能:获取Gurobi参数的相关信息
  • 输入:参数名
  • 输出:参数信息
  • 说明:除准确输入参数名,还可以使用“*”或者“?”通配符。如果有多个参数匹配,将列出所哟匹配的参数信息
# 示例

paramHelp("Cuts")
paramHelp("Heu*")
paramHelp("*cuts")

quicksum() 函数

  • 功能:求和函数,在计算大型Gurobi表达式时,效率高于Python自带的sum() 函数
  • 输入:需要求和的各项列表
  • 输出:求和值
  • 说明:示例中的代码暂时跑不了,因为需要定义Model对象和相关变量
# 示例

expr = quicksum([2*x, 3*y+1, 4*z*z])
expr = quicksum(model.getVars())

read() 函数

  • 功能:从文件中阅读模型
  • 输入:文件名。支持包含如下后缀的文件:.mps, .rew, .lp, .rlp, .dua, .dlp, .ilp, or .opb。支持压缩文件:.gz, .bz2, .zip, or .7z。同时也支持通配符查询,若同时匹配到许多个文件,仅读取第一个文件
  • 输出:从文件中读取的模型
  • 说明:该函数还包含另一个与环境有关的输入env,其默认值是defaultEnv,作为初学者可以不做了解,后续使用时再讲述
# 示例

m = read("afiro.mps") # 读取名为afiro的文件中的模型,并定义为m
m.optimize() # 对模型m进行优化

readParams() 函数

  • 功能:从文件中阅读一组参数设置
  • 输入:文件名。文件必须为PRM格式
  • 输出:无,仅读取
# 示例

readParams("params.prm")

resetParams() 函数

  • 功能:将所有参数重置为默认参数值
  • 输入:无
  • 输出:无
  • 说明:现有模型中,存储在Python数据结构内(列表、字典等)或内部用户类中的参数均不受影响
# 示例

resetParams()

setParam() 函数

  • 功能:给一个参数设置一个新的参数值
  • 输入:参数名,新的参数值
  • 输出:无
  • 说明:现有模型中,存储在Python数据结构内(列表、字典等)或内部用户类中的参数均不受影响。参数名可以使用通配符对参数进行批量设置,参数值也可以使用“default”将其设置为默认参数值
# 示例

setParam("Cuts", 2)
setParam("Heu*", 0.5)
setParam("*Interval", 10)

writeParams() 函数

  • 功能:将模型参数值写入一个文件内,该文件是PRM格式
  • 输入:写入文件名
  • 输出:模型参数文件
# 示例

writeParams("params.prm") # 将模型参数写入名为params的参数文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值