Gurobi+Python做运筹优化环境搭建

Gurobi+Python做运筹优化环境搭建

Python调用Gurobi需要注意下面几点:

  1. Gurobi的版本和Python的版本要一致,即都是64bit或者都是32bit,否则不能成功
  2. 如果用Pydev,则需要eclipsegurobipython三个的版本是一样的,都是64bit或者32bit

下面是配置Python+Gurobi的详细步骤

Gurobi+Python环境搭建

gurobi的安装目录中C:\Develop\Gurobi\win64\python27\lib中的文件夹gurobipy(注意是文件夹)拷贝到python的安装目录下:
C:\Develop\Python27_64\Lib
(注意:此目录是我自己的安装目录,小伙伴们需要到自己的gurobi安装目录下去找)

找到gurobipy文件夹
在这里插入图片描述

拷贝到python的安装目录下:
C:\Develop\Python27_64\Lib
在这里插入图片描述

然后就可以了。

其实是非常简单的,但是这个过程中总是出现一些意想不到的问题,如下:

报错 DLL load failed

如果出现下面的问题:
在这里插入图片描述

可能是:

  1. Gurobi的Lisence期限到了,需要重新申请。
  2. 环境变量或者版本的问题

因此我们可以进行排查,看看是上面连个问题中的哪个问题。

首先检查环境变量是否配置正确:
右击我的电脑–>属性–>高级系统设置–>环境变量,进入下面的页面

首先查看用户变量中的GUROBI_HOMEPath是否正确

在这里插入图片描述
然后检查系统变量是否如下图所示.
在这里插入图片描述
如果不是,那就是版本或者license的问题。

版本问题的话,需要卸载Gurobi或者Python,安装二者适配的版本。

不过,最常见的还是下面的原因:

一般原因

2019年4月30日,出现这样的问题,我的解决方法是这样的:

  1. Step1:卸载原来的Gurobi.8.1,
  2. Step2:重新安装gurobi.8.1
  3. Step3:将gurobi的安装目录中C:\Develop\Gurobi\win64\python27\lib中的文件夹gurobipy(注意是文件夹),拷贝到python的安装路径的Lib文件夹中
    C:\Develop\Python27_64\Lib
  4. Step4:然后重启eclipse,就可以了。
    这种一般是Gurobilicense出了问题,所以说需要重新安装一下,更新一下license.
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用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()` 方法求解模型。最后,我们输出了模型的解。 需要注意的是,双目标线性规划具有较高的计算复杂度和较多的局限性,需要根据具体问题进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值