当前位置:   article > 正文

gurobi最新下载安装教程 2023.11_gurobi安装教程

gurobi安装教程

gurobi下载

https://www.gurobi.com/

在这里插入图片描述

  • 点击下载中心 download center
    可以直接选择 Gurobi Optimizer下载
    在这里插入图片描述
gurobi安装

gurobi可以通过python进行调用,但是需要先获得gurobilincese

gurobi lincese获取
  1. 官网申请 academic
    在这里插入图片描述
    在这里插入图片描述

但这个激活码需要进行IP地址的验证。如果学校的网关没有将本校的 IP 地址标注为学术机构,那么会出现 Error 303/305 错误,IP 验证不会成功,学术许可不会激活。是否识别为学术机构与 Gurobi 原厂无关,是学校网络的设置问题。
2. gurobi中文网
http://www.gurobi.cn/NewsView1.Asp?id=4

在线PDF中填写自己的基本信息并手写签字,之后发邮件到help@gurobi.cn,实测不到一小时即可审核完毕,获得对应的许可。
在这里插入图片描述
在这里插入图片描述

添加系统环境变量

grbgetkey这个序号与计算机硬件捆绑,一旦激活就会失效。运行激活码之后,产生的 gurobi.lic 许可文件保存在以下目录:

  • Windows 操作系统:把 gurobi.lic 文件放在 c:\gurobi 目录下;
  • Linux 操作系统: 把 gurobi.lic 文件放在 opt/gurobi 目录下;
  • Mac 操作系统: 把 gurobi.lic 放在 /Library/gurobi 目录下;
    如果没有这些目录,请创建一个。这是Gurobi 默认搜索位置。

如果保存到其他位置,需要创建 GRB_LICENSE_FILE 系统环境变量(不是用户环境变量),指向保存的目录和文件名(例如 GRB_LICENSE_FILE = C:\myfolder\gurobi.lic)。需要重启电脑使之生效。如果既放置在了上面的默认搜索目录,又设置了 GRB_LICENSE_FILE 系统环境变量指向不同的目录和文件,Gurobi 会以 GRB_LICENSE_FILE 的设置为准。
每台机器上只需要保存一个gurobi.lic 文件。请删除多余只保留一个。高版本产生的许可文件兼容低版本。

我这里放在E盘
在这里插入图片描述
之后cmd进入命令行,cd进入gurobi所在的 E:\gurdoi\bin进行激活。

在这里插入图片描述

gurobi和python

我下载的最新版gurobi支持python3.7-python3.11

将对应pythonlib/gurobipy复制到对应python安装包的site-packages文件夹。
在这里插入图片描述

python中调用gurobi

在这里插入图片描述

from gurobipy import *
# 8部电影
# 7个影厅
# 8个时段
I = list(range(8))  # 时段
J = list(range(7))  # 影厅
K = list(range(8))  # 电影

seat_j = [118, 86, 116, 85, 156, 142, 156]
# 一行为一个影厅,一列为一部电影
price_jk = [[60, 60, 65, 60, 65, 90, 60, 65],
            [65, 65, 85, 75, 60, 75, 85, 80],
            [60, 70, 75, 80, 75, 80, 80, 75],
            [65, 65, 80, 75, 80, 75, 75, 80],
            [60, 65, 65, 60, 75, 80, 80, 75],
            [60, 65, 65, 80, 75, 75, 80, 75],
            [60, 60, 75, 80, 75, 70, 60, 75]]
# 一行为一个时段,一列为一部电影
rate_ik = [[0.50, 0.55, 0.45, 0.50, 0.60, 0.46, 0.55, 0.45],
           [0.42, 0.43, 0.41, 0.43, 0.45, 0.30, 0.53, 0.36],
           [0.58, 0.63, 0.67, 0.64, 0.70, 0.64, 0.54, 0.57],
           [0.62, 0.67, 0.70, 0.65, 0.75, 0.64, 0.53, 0.66],
           [0.65, 0.65, 0.73, 0.68, 0.75, 0.74, 0.67, 0.72],
           [0.66, 0.69, 0.78, 0.78, 0.78, 0.75, 0.74, 0.70],
           [0.67, 0.92, 0.87, 0.87, 0.75, 0.59, 0.68, 0.68],
           [0.67, 0.92, 0.87, 0.87, 0.75, 0.59, 0.68, 0.68]]
# 计算满座的票房二维列表,lt_all
all_jk = [[0 for col in K] for row in J]
for j in J:
    for k in K:
        all_jk[j][k] = price_jk[j][k] * seat_j[j]
# 创建模型
m = Model("ass_mov")
# 创建变量.第i个时段在第j个影厅放映第k部电影
x = m.addVars(I, J, K, vtype=GRB.BINARY)
# 更新变量环境
m.update()
# 创建目标函数
m.setObjective(sum(x[i, j, k] * rate_ik[i][k] * all_jk[j][k]
                   for i in I for j in J for k in K),
                   GRB.MAXIMIZE)
# 创建约束条件约束条件
# 每部电影至少放映一次
m.addConstrs(sum(x[i,j,k] for i in I for j in J) >= 1 for k in K) 
# 每个时段每个影厅只能放映一部电影
m.addConstrs(sum(x[i,j,k] for k in K) == 1 for i in I for j in J)
# 求解规划模型
m.optimize()

# 输出结果
result = [[0 for col in J] for row in I]
solution = m.getAttr('x',x)
# 得到排片矩阵
for k,v in solution.items():
    if v == 1:
        result[k[0]][k[1]] = k[2] + 1
# 得到最大收益值
max_get = sum(
    x[i, j, k].x * rate_ik[i][k] * all_jk[j][k] 
    for i in I for j in J for k in K
)
# 打印最大收益值,和排片矩阵
print('最大收益为:',max_get)
print('最佳排片方法:')
print('\n影厅j|', J)
print('-'*28)
for idx,l in enumerate(result) :
    print(f'时段{idx}|',l)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

在这里插入图片描述
调用成功!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1015601
推荐阅读
相关标签
  

闽ICP备14008679号