A. gurobi 高效数学规划引擎 | python3 配置、使用及建模实例
文章源自github文章 wurmen/Gurobi-Python,并在此基础上进行衍生扩展。
Gurobi 是由美国Gurobi Optimization公司开发的下一代大规模优化器。在生产制造领域,金融、保险、交通、服务等各领域,面对越来越复杂、规模庞大的实际问题时,Gurobi提供了信赖的大规模优化工具,为决策质量提供保证,增强信心。Gurobi被证明是全球性能领先的大规模优化器,具有卓越性价比,为开发和实施带来显着成本降低。
Gurobi能解决的数学问题包括但不限于:线性问题、二次型目标问题、混合整数线性和二次型问题等,几乎涵盖了lingo能解决的所有问题。
获取Gurobi的步骤如下:
1. 登陆官网:gurobi.com/index
2. 注册账号:后续收到验证邮件,点击链接激活账号。
3. 下载Gurobi引擎:进入下载中心,申请学术许可证。
4. 验证许可证:win系统输入获取的许可证验证,mac系统在终端验证,校园网下完成验证。
5. 安装Gurobi模块:使用Anaconda3并配置conda环境后,通过指令安装Gurobi模块。
快速入门指南包括:
辅助函数:列表推导式/列表解析式,包含if - for的两种嵌套方式,用于过滤、分段映射、多层循环。案例包括列出当前文件夹下的所有Python源文件和判断素数。
快速求和:gurobipy模块中的quicksum函数,支持迭代器和生成器协议,实现更复杂的方法。
多目标优化:使用变量换元实现,包括线性、非线性函数的分段优化。
添加决策变量:通过Model.addVar()和Model.addVars()创建或创建多个变量。
添加目标函数:使用Model.setObjective()实现单目标优化,Model.setObjectiveN()支持多目标优化。
添加约束条件:Model.addConstr()用于单个约束,Model.addConstrs()用于多个约束,包括范围、指示变量约束。
执行最优化:通过Model.optimize()求解模型。
案例包括一般线性规划问题、利用整数线性规划优化员工工作表、非平衡指派问题、LP问题与灵敏度分析、数独问题和CCR-DEA问题等。
文章提供详细步骤和代码示例,帮助读者快速掌握Gurobi的配置、使用及建模实例,适合Python爱好者和企业大规模优化器的首选。
B. Nuitka入门指南-新手必备
本指南旨在为Python新手提供入门Nuitka的详尽步骤,以解决代码封装问题。感谢知乎及Python与模具大神的大力宣传与深入指导,让Nuitka成为Python爱好者们的新选择。以下为详细步骤,带你从零开始,顺利进入Nuitka世界。
新手入门须知:在开始之前,请确保你已具备Python基础,尤其是使用如PyQt5等UI设计模块的经验。以下是具体步骤:
1. **安装MinGW64 8.1**:这是Nuitka所需的运行环境,稳定版本推荐MinGW8.1。安装并确保运行成功。
2. **安装Nuitka**:通过pip安装Nuitka,执行命令`pip install nuitka`。
3. **编写Python程序**:创建并保存一个简单的Python程序,如`hello.py`,确保其包含必要的代码片段。
4. **运行Nuitka**:在程序所在文件夹中打开命令行窗口,输入`nuitka hello.py`命令,根据提示进行操作,完成程序编译。
5. **生成可执行文件**:编译完成后,程序将生成`hello.exe`文件,双击运行验证。
**重点提示**:此步骤为初步入门,仅针对Python程序进行封装。若要将复杂UI界面或使用其他库(如numpy、pandas等)进行封装,需按照以下步骤逐步推进。
1. **选择简单UI界面代码**:网上可轻松找到pyqt5简单UI界面源代码,确保代码简洁,仅包含基本的UI加载。
2. **执行编译命令**:在程序所在文件夹下的命令行窗口中,重新执行编译命令,生成封装后的exe文件。
**关键阶段**:添加额外库(如numpy、pandas)时,确保在Python环境中能正常运行,并逐步编译,直至成功。
**深入学习**:阅读有关Nuitka的详细教程,了解编译命令的各项含义,观看配套视频,掌握调试技巧。
**手动添加模块**:在封装过程中,可能会遇到缺少依赖模块的问题。在指定目录下手动添加缺失的文件或文件夹,确保exe文件正常运行。
**调试与优化**:此阶段耗时且关键,需细心过滤代码,了解并解决可能出现的问题。根据经验,这有助于提高程序稳定性。
**解决特殊问题**:遇到特定问题时,查阅相关教程,获取解决方案。在遇到个人问题时,加入相关讨论群组寻求帮助。
通过上述步骤,您将能顺利掌握Nuitka,实现Python代码的高效封装。不断实践与学习,将使您在Python领域更上一层楼。