Gurobi搭建模型系列1——基础

2023-12-30 12:58

本文主要是介绍Gurobi搭建模型系列1——基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gurobi搭建模型思路

  • 基本思路
    • 一、准备工作:anaconda+gurobi搭建
    • 二、重点:建模
      • 建模顺序
      • 工具
      • 建模部分

基本思路

anaconda、python、pycharm选择。

1.pycharm适用于群体开发项目时用,是个大型的集中平台。数据库、代码、项目、环境等等资源。

2.python适合深入研究python的人使用,对使用者要求较高。

3.anaconda比较适合一般人,也是个开发平台,可视化效果比较好。

一、准备工作:anaconda+gurobi搭建

anaconda 3.* 自带spyder,可视化效果比较好,类似于matlab界面。

anaconda+gurobi使用最好。

统一放在c:\gurobi文件夹下,是为了便于管理。
安装方式
激活

二、重点:建模

建模顺序

如:

from gurobipy import *
创建模型
m = Model("mip")1.设置参数&变量
x = m.addVars(vtype=GRB.BINARY, name="x")2.设置目标函数
m.setObjective(2*x, GRB.MAXIMIZE)3.设置约束
m.addConstr(x>=1, "c0")如果要写进lp文件阅读,可以:
m.update()
m.write("mip.lp")如果要从lp格式中读出模型
m = read("mip.lp")4.求解
m.optimize()

工具

gurobi的扩展对象tuplelisttupledict
可以不用循环遍历,大大减少运行时间。

spyder清除console输入框用:clear all
spyder清除变量用:reset.

在这里插入图片描述
在这里插入图片描述

建模部分

实际中,通常是多下标复杂模型。

多下标约束常出现遍历求和的情况:
m.addConstrs(
(quicksum**(**nutritionValues[f,c] * buy[f] for f in foods)
== [minNutrition[c], maxNutrition[c]]
for c in categories), “_”)

几个常用的公式:

x = m.addVar(obj=1, vtype = GRB.CONTINUOUS, name="x")
y = m.addVar(obj=1, vtype = GRB.CONTINUOUS, name="y")
z = m.addVar(obj=1, vtype = GRB.CONTINUOUS, name="z")m.addConstr(z == max_(x, y, 3), name="maxconstr")
m.addConstr(z == min_(x, y, 3), "minconstr")
m.addConstr(x == abs_(y), "absconstr")
m.addConstr(z == and_(x, y), "andconstr")
m.addConstr((z == 1) >>(x + y<= 4))
#m.addRange(x+y+z, 5, 10, "c")
m.addConstr(x+y+z==[5,10])对应的lp文件为:LP format - for model browsing. Use MPS format to capture full model detail.
Minimizex + y + z
Subject ToR0: x + y + z + RgR0 = 10GC4: z = 1 -> x + y <= 4
BoundsRgR0 <= 5
General Constraintsmaxconstr: z = MAX ( x , y , 3 )GC1: z = MIN ( x , y , 3 )GC2: x = ABS ( y )GC3: z = AND ( x , y )
End

这篇关于Gurobi搭建模型系列1——基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552901

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot