快速上手:在 Python 环境中安装与配置 Gurobi

快速上手:在 Python 环境中安装与配置 Gurobi

快速上手:在 Python 环境中安装与配置 Gurobi

一、Gurobi简介

Gurobi 是由美国 Gurobi Optimization 公司开发的一款高性能商业数学优化求解器,广泛应用于学术研究与工业领域。它能够高效求解以下类型的优化问题:

  • 线性规划(LP)
  • 整数规划(IP)
  • 混合整数规划(MIP)
  • 二次规划(QP)
  • 二次约束规划(QCP)
  • 非线性规划(部分支持,如含对数、指数、三角函数、分段函数等)

主要特点:

  • 求解速度快、精度高:在多项第三方评测中性能领先,曾于2010年超越 CPLEX 成为行业标杆。
  • 多语言支持:提供 Python、C/C++、Java、.NET、MATLAB、R 等接口,其中 Python 接口(gurobipy)最为常用
  • 跨平台兼容:支持 Windows、Linux 和 macOS。
  • 学术免费:高校师生可申请免费学术许可证。
  • 广泛应用:涵盖物流调度、生产计划、金融投资组合、能源系统、机器学习等多个领域。

简言之,Gurobi 是当前最先进、最高效的数学优化工具之一,特别适合求解大规模复杂决策优化问题。

二、前置工作

  1. 要在内网的服务器上配置Gurobi环境,需要两台电脑先配置好远程连接:Windows RDP远程桌面连接(超详细)
  2. 配置好Python环境(Python或者Anaconda):Anaconda下载安装及老版本选择(超详细)
  3. 安装编辑器PyCharm(其他的编辑器VSCode):Pycharm安装教程

注意:PyCharm使用Anaconda与Python类似。

三、Gurobi下载安装

3.1 Gurobi下载

进入Gurobi软件页面(需要注册登录):gurobi-software

根据自己的需要选择对应的版本,这里我们使用的是Gurobi-12.0.0版本(当然下载最新版本也可以,不过需要注意Gurobi的版本一致),属于历史版本。
历史版本下载可以参考:【实践】如何下载Gurobi的历史版本
在这里插入图片描述

3.2 Gurobi安装

双击下载好的软件:

在这里插入图片描述


等待一会,点击Next:

在这里插入图片描述


接受协议,点击Next:

在这里插入图片描述


根据自己的情况修改安装路径(C盘比较大的话就不用动了):

在这里插入图片描述


点击Install进行安装:

在这里插入图片描述


安装完成,点击Finsh:

在这里插入图片描述


安装完成后,会有一个弹窗,点击YES后会重启电脑:

在这里插入图片描述

四、Gurobi许可证申请激活

4.1 在连接校园网的情况下申请许可证!

4.1.1 Named-User Academic(推荐使用)

登录后点击My account或者Your gurobi licenses——Request——Named-User Academic

在这里插入图片描述


同意协议,提交请求:

在这里插入图片描述


Gurobi 许可证创建成功:

在这里插入图片描述


在计算机连接互联网的情况下,Win+R 输入 cmd 进入到命令提示符窗口。在命令行下使用 cd 命令进入到 Gurobi 安装目录/win64/bin 目录下(如图),然后输入使用激活码,出现最下面红框内容代表激活成功。

在这里插入图片描述
4.1.2 Online Course(可离线使用,有规模限制)

登录后点击My account或者Your gurobi licenses——Request——Online Course

在这里插入图片描述


Gurobi 许可证创建成功:

在这里插入图片描述


自动激活的话和上面 Name-User Academic一致。

这里选择手动激活:
在Gurobi安装路径中找到grbprobe.exe程序:

在这里插入图片描述


运行grbprobe以生成有关系统的报告:

在这里插入图片描述


点击手动生成:

在这里插入图片描述


会出现一个表单,复制上面grbprobe生成的信息,点击提交:

在这里插入图片描述


提交后会下载许可证:

在这里插入图片描述

五、安装Gurobipy

5.1 在线安装

使用pip或者conda命令进行安装,会自动选择合适的版本。

pip install gurobipy 
conda config --add channels "http://conda.anaconda.org/gurobi" conda install gurobi 

5.2 离线安装1

确定好python的安装位置:

在这里插入图片描述


win+Q,搜索cmd,并且右键管理员运行

在这里插入图片描述

进入gurobi安装根目录的win64目录,如:C:\gurobi1001\win64,使用命令行安装:

C:\ProgramData\anaconda3\python.exe setup.py install

安装成功:

在这里插入图片描述

5.3 离线安装2

进入Gurobipy的官网

在这里插入图片描述


点击Release history,可以找到历史版本。因为Gurobi 的主版本号与其 Python 接口 gurobipy 的版本号是一致的,所以我们选择12.0.0版本的gurobipy:

在这里插入图片描述


根据自己的Python版本和平台,选择对应的文件进行下载:

在这里插入图片描述


将文件复制到服务器上:

在这里插入图片描述


通过cd命令进入到该文件目录,安装Gurobi扩展包:

python -m pip install --find-links gurobipy-12.0.0-cp312-cp312-win_amd64.whl --no-index gurobipy 
在这里插入图片描述


查看包是否安装完成:

在这里插入图片描述

六、测试代码

进入python后新建测试py文件(注意不要命名为gurobipy.py),测试代码如下​:

""" 3000约束量的规划求解,以验证证书是否为免费限制证书 免费限制证书: 约束量<=1000 """import gurobipy as gp from gurobipy import GRB # 创建模型 model = gp.Model("3000_constraints")# 添加变量 num_vars =3000# 约束量vars= model.addVars(num_vars, vtype=GRB.CONTINUOUS, name="x")# 添加约束(约束量3000)for i inrange(3000):# 示例:每个约束为x_i <= 1 model.addConstr(vars[i]<=1, name=f"constraint_{i}")# 添加目标函数(最大化总和) model.setObjective(sum(vars), GRB.MAXIMIZE)# 求解 model.optimize()# 输出结果if model.status == GRB.OPTIMAL:print("最优解:", model.objVal)

求解成功:

在这里插入图片描述

奇葩问题

软件以前安在E盘,后面E盘没了,把安装文件夹删了,安装新的软件出现Invalid Drive:E:

在这里插入图片描述


一检查发现软件没有卸载,但卸载的时候也出现:

在这里插入图片描述


使用CCleaner,清除注册表后也无法卸载。
后面参考:
卸载或安装Git出现Invalid drive错误的解决方案【简记】
先创建一个虚拟E盘,把Gurobi进行卸载,再把虚拟E盘删了,用CCleaner清理一遍注册表,就可以重新安装了

参考

  1. 【大规模优化求解器-Gurobi-教程】
  2. Anaconda下载安装及老版本选择(超详细)
  3. Pycharm安装教程
  4. Gurobi最新安装与学术许可申请教程(2025)
  5. How do I generate a license file for a computer without internet access?
  6. How do I install Gurobi for Python?

Read more

【Linux】线程池(二)C++ 手写线程池全流程:从核心设计到线程安全、死锁深度解析

【Linux】线程池(二)C++ 手写线程池全流程:从核心设计到线程安全、死锁深度解析

文章目录 * 实现线程池 * ThreadPool类设计 * 构造函数 * Start接口 * 线程池接入日志 * 初步实现源码及效果图 * 总结代码执行逻辑 * 实现回调函数Routine * enqueue接口实现 * 线程池退出stop接口优化 * 线程池源码 * 线程安全和重入问题 * 结论 * 死锁 * 死锁四个必要条件 * 避免死锁 * STL、智能指针和线程安全 实现线程池 我们之前已经接触了进程池,其实线程池和进程池核心思路差不多,对于线程池来说,会有一个任务队列和若干线程,用户往任务队列里添加任务,若干线程在任务队列里拿任务并完成。 ThreadPool类设计 构造函数 对于线程来说,启动线程池分为两步: 1.先创建线程本身(Thread类对象)2.再启动线程(调用Thread的start接口) 所以在构造函数我们要先创建线程本身(thread t(回调函数,线程名)),创建线程需要传递回调函数(假设是hello)和线程名,但这里有一个问题,一般来说传递的

By Ne0inhk
Flutter 三方库 monobank_api 的鸿蒙化适配指南 - 实现极速的银行业务接口对接与账单流水分析、支持端侧金融数据资产管理与安全请求流水化实战

Flutter 三方库 monobank_api 的鸿蒙化适配指南 - 实现极速的银行业务接口对接与账单流水分析、支持端侧金融数据资产管理与安全请求流水化实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 monobank_api 的鸿蒙化适配指南 - 实现极速的银行业务接口对接与账单流水分析、支持端侧金融数据资产管理与安全请求流水化实战 前言 在进行 Flutter for OpenHarmony 的个人财税、金融助手或加密资产管理类应用开发时,如何安全、高效地接入主流银行(如 Monobank)的实时账单与账户信息?monobank_api 是一款专为 Monobank 开放平台设计的 SDK。它通过严密的鉴权机制,实现了从账户结余查询、汇率转换到交易明细获取的全链路封装。本文将探讨如何在鸿蒙端构建极致稳健的金融数据处理架构。 一、原直观解析 / 概念介绍 1.1 基础原理 该库建立在标准化的 RESTful 网络架构之上。它利用了鸿蒙端的网络套接字能力,通过向开发者注入特定的 X-Token 鉴权头,实现了与 Monobank

By Ne0inhk
鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验

鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验

《鸿蒙APP开发从入门到精通》第17篇:鸿蒙金融理财全栈项目——基础架构、数据安全、用户体验 📊🔒🎨 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第17篇——基础架构、数据安全、用户体验篇,完全承接第16篇的鸿蒙电商购物车项目架构,并基于金融场景的高安全、高合规、高性能要求,设计并实现鸿蒙金融理财全栈项目的核心架构与用户体验基础。 学习目标: * 掌握鸿蒙金融理财项目的整体架构设计; * 实现高可用、高安全、高可扩展的金融级架构; * 理解数据安全在金融场景的核心设计与实现; * 实现数据加密、身份认证、安全审计; * 掌握用户体验在金融场景的设计与实现; * 实现无障碍设计、响应式布局、性能优化; * 优化金融理财项目的用户体验(安全性、响应速度、用户反馈)。 学习重点: * 鸿蒙金融理财项目的架构设计原则; * 数据安全在金融场景的应用; * 用户体验在金融场景的设计要点。 一、 金融理财项目架构基础 🎯 1.1 金融理财项目特点 金融理财项目具有以下特点: * 高安全:需要严格的数据加密和身份认证; * 高合规:

By Ne0inhk
Flutter 组件 http_interop 的适配 鸿蒙Harmony 深度进阶 - 驾驭多级拦截器链、实现鸿蒙端标准化通讯审计与流量路由中继方案

Flutter 组件 http_interop 的适配 鸿蒙Harmony 深度进阶 - 驾驭多级拦截器链、实现鸿蒙端标准化通讯审计与流量路由中继方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 http_interop 的适配 鸿蒙Harmony 深度进阶 - 驾驭多级拦截器链、实现鸿蒙端标准化通讯审计与流量路由中继方案 前言 在之前的内容中,我们揭示了 http_interop 在鸿蒙(OpenHarmony)生态中实现各路 HTTP 客户端标准化解耦的基础实战。但在真正的“分布式金融网关”、“跨国资产镜像同步”以及“由于多三方 SDK 冲突引起的流量审计”场景中。简单的 Client 转换往往不足以应对日益复杂的治理需求。面对一个需要在大规模 HAP 插件体系中,根据请求的物理区域自动将流量路由到不同的中继节点(Proxy Relay),并且要求对每一个报文执行“非破坏性”的数据签名与敏感字段脱敏的高阶需求。如果缺乏一套严密的拦截器逻辑链与流量分级分发机制。不仅会导致全网通讯效率的断崖式下降,更会因为无法实现对“影子流量(Shadow

By Ne0inhk