GUROBI的数据结构

本文介绍了在GUROBI中使用的PythonAPI中,multidict和tuplelist这两种特殊数据结构,它们用于高效建模并处理决策变量的下标和取值,通过示例展示了它们的用法和特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      为了在GUROBI中能够更加高效地建模,Python API内置了三种特殊的数据结构,方便根据下标来查找数据。注意在使用这三种数据结构之前需要  import gurobipy as gp

multidict

一、普通字典dict()的用法

小结:普通字典dict()只有一个返回值,就是字典本身;使用.keys()和.values()可以分别以列表的形式返回键和值

二、GUROBI中的multidict()的用法

只设置一个返回值(一般不会只返回一个值,这里只是为了演示说明):

设置两个返回值:

小结:第一个返回值为键,类型为gurobi中的元组列表(每一个键是一个元组,所有的键一起以一个列表的形式返回);第二个返回值为该字典本身,类型为gurobi中的元组字典(待会解释什么是tupledict)

设置三个返回值:

小结:第一个返回值为键;第二个返回值为一个字典,其中值为原字典的值(列表)中的第一个元素;第二个返回值也为一个字典,其中值为原字典的值(列表)中的第二个元素。

总结:multidict()可以将一个字典拆分成多个子字典,这些子字典的键是共享的,但值是原字典的值列表中的各个值,并且各个子字典是以gurobi中的tupledict类型存放的。

tuplelist

一、简介

       tuplelist是python的list类下的一个子类,支持普通list的打印长度、增、删等操作,同时也具有自己的一些特有操作。可以简单理解为里面元素都是元组的一个列表,但比普通列表多了一些特有的操作为决策变量设置下标时常用

注意:官网上说tuplelist只能存储标量值,如(int, float, string,...)等,支持(1, 2.0, 'abc'),但不支持((1, 2.0),'abc') ,但是好像是支持的:

总结:(1)tuplelist是gurobi的特有数据结构,因此调用之前需要import gurobipy,再调用tuplelist;

           (2)list中的元组元素的长度可以不一样;tuplelist中的元组元素的长度必须一样

二、特殊用法

tupledict

一、简介

        是python的dict()类下的一个子类,其键为元组的形式,常用来表示决策变量的索引,其值为gurobi决策变量对象,常用来表示决策变量的取值。在为模型添加决策变量时常用

二、特殊用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值