Gurobi Python API设置MemLimit内存参数报错解决方法
报错原因
MemLimit是Gurobi的环境级参数,直接调用gp.Model()创建模型时,Gurobi会自动启动默认全局环境,环境启动后这类参数就不允许修改,因此会抛出Unable to modify parameter MemLimit after environment started的错误。
正确配置流程
需要先创建未启动的空环境,在环境启动前完成参数配置,再将配置好的环境和模型关联,具体操作步骤如下:
- 调用
gp.Env(empty=True)创建未启动的空Gurobi环境 - 在未启动的空环境上设置
MemLimit等需要的环境级参数 - 调用环境的
start()方法启动配置完成的环境 - 创建模型时将自定义环境作为入参传入,完成环境和模型的绑定
可直接运行的参考代码:
import gurobipy as gp from gurobipy import GRB # 初始化空环境(未启动状态) custom_env = gp.Env(empty=True) # 启动前设置内存上限,参数单位为字节,1e+11对应100GB内存限制 custom_env.setParam('MemLimit', 1e+11) # 启动配置完成的环境 custom_env.start() # 创建模型时关联自定义环境 my_model = gp.Model('myModel', env=custom_env)
注意:除
MemLimit外,所有环境级参数(如许可证配置、全局日志路径、并发计算核心数上限等)都需要按照上述流程在空环境启动前设置,模型创建完成后仅支持修改模型级参数。设置MemLimit时请不要超过设备实际可用物理内存,避免触发系统内存溢出。
内容的提问来源于stack exchange,提问作者sergey_208
相关产品推荐
相关产品推荐

