mac中配置gurobi+python “not recognized as belonging to an academic domain”解决

最近在做一篇论文的复现工作,源码中作者使用了gurobi,查看了很多参考,但似乎没有一篇可以把我遇到的问题都解决,所以在这里总结一下!

第一步-下载

打开gurobi官网(https://www.gurobi.com/

  1. 注册一个账户 ,可以选择academic或者commercial;这里我选择的是学术型;
  2. 登陆注册好的账户 ;
  3. 进入下载界面,下载pkg格式对应的文件。

第二步-安装

下载好的文件如下图所示
在这里插入图片描述
开始安装:

  1. 打开安装包,直到安装完毕(并不会有图标产生);

  2. 找到安装后产生的文件夹,从bin文件夹中找到 grbgetkey并打开;
    在这里插入图片描述

  3. 此时,cmd中提示:Please enter the Key Code for the license,关于license的申请,见下节。

第三步-申请license

如果你是学术型user,请接着往下看;如果不是的话,告辞啦!

  1. 申请方式一,通过官网申请Academic license
  2. 方式一申请到的激活码对我并没用,我的cmd提示ERROR 303:not recognized as belonging to an academic domain在这里插入图片描述
  3. 如果学校的网关没有将本校的 IP 地址标注为学术机构,那么会出现 Error 303 错误,IP 验证不会成功,学术许可不会激活。是否识别为学术机构与 Gurobi 原厂无关,是学校网络的设置问题。 如果无法激活,那么可以选择第二种方式:
  4. help@gurobi.cn 发邮件,详见 http://www.gurobi.cn/NewsView1.Asp?id=4
  5. 提交两个文件即可获得一个免ip验证的学术许可;对方回复邮件的速度还蛮快的,1h之内就发我了一个激活码
  6. 收到激活码后,从第二步的第二点开始进行即可,运行成功如下图:
    在这里插入图片描述
  7. 将产生的license文件放到 /Library/gurobi 目录下;如果没有,自行创建即可。

第四步-决胜时刻 与python关联

  1. 从cmd中进入gurobi安装目录
  2. 执行 python setup.py install,即可安装进python
  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是使用GurobiPython求解双目标线性规划的示例代码: ```python import gurobipy as gp # 创建模型 model = gp.Model('bilevel_problem') # 创建变量 x1 = model.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='x1') x2 = model.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='x2') y1 = model.addVar(lb=0, ub=gp.GRB.INFINITY, vtype=gp.GRB.CONTINUOUS, name='y1') y2 = model.addVar(lb=0, ub=gp.GRB.INFINITY, vtype=gp.GRB.CONTINUOUS, name='y2') # 创建约束条件 constr1 = model.addConstr(2*x1 + x2 <= y1, name='constr1') constr2 = model.addConstr(x1 + 2*x2 <= y2, name='constr2') # 定义目标函数 model.setObjective(y1 + y2, gp.GRB.MINIMIZE) # 创建子问题 submodel1 = gp.Model('subproblem1') submodel2 = gp.Model('subproblem2') # 创建子问题变量 subx1 = submodel1.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='subx1') subx2 = submodel1.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='subx2') suby1 = submodel1.addVar(lb=0, ub=gp.GRB.INFINITY, vtype=gp.GRB.CONTINUOUS, name='suby1') submodel1.update() subx1 = submodel2.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='subx1') subx2 = submodel2.addVar(lb=0, ub=1, vtype=gp.GRB.CONTINUOUS, name='subx2') suby2 = submodel2.addVar(lb=0, ub=gp.GRB.INFINITY, vtype=gp.GRB.CONTINUOUS, name='suby2') submodel2.update() # 创建子问题约束条件 subconstr1 = submodel1.addConstr(2*subx1 + subx2 <= suby1, name='subconstr1') submodel1.setObjective(suby1, gp.GRB.MAXIMIZE) subconstr2 = submodel2.addConstr(subx1 + 2*subx2 <= suby2, name='subconstr2') submodel2.setObjective(suby2, gp.GRB.MAXIMIZE) # 添加双层问题约束条件 model.addConstr(suby1 <= y1, name='subconstr1') model.addConstr(suby2 <= y2, name='subconstr2') # 求解模型 model.optimize() # 输出结果 print('x1=', x1.x) print('x2=', x2.x) print('y1=', y1.x) print('y2=', y2.x) ``` 在上面的代码,我们定义了四个变量和两个约束条件,然后为目标函数设置了两个目标。接下来,我们创建了两个子问题,并分别定义了它们的变量和约束条件。然后,我们将子问题的解添加到双层问题的约束条件,并使用 `optimize()` 方法求解模型。最后,我们输出了模型的解。 需要注意的是,双目标线性规划具有较高的计算复杂度和较多的局限性,需要根据具体问题进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值