GROUBI

#Gurobi建模思路
1.Probem Instance:待优化问题
2.Model Generator:将数据组合成模型,产生计算机模型对象
3.Model Instance:存在于内存的一个完整数学模型
4.Gurobi Optimizer:Gurobi 优化求解
5.Solution Retrieval:根据需要读取优化结果
6.Analysis:对结果进行分析
#Gurobi建模基本概念
Parameter:控制优化器的行为
Attributes:控制模型(包括模型、变量、约束、目标等对象)的特征
Environment:包含模型和全局参数的一个容器,也是许可控制的节点
##特有的扩展对象
###TupleList和TupleDict
TupleList增加了快速筛选select功能

from gurobipy import *
cities = [("A","B"),("A","C"),("B","C"),("B","D"),("C","D")]
Routes = tuplelist(cities)
print(Routes.select("A","*"))

#运行结果

键值为tuple(元组),可以使用select,sum,prod,以及quicksum函数

###Multidict()创建tuplelist和tupledict的便捷方法

cities,supply,demand = multidict({
    "A":[100,20],
    "B":[150,50],
    "C":[20,300],
    "D":[10,200]
    })
    运行结果
    cities
Out[6]: ['A', 'B', 'C', 'D']

supply
Out[7]: {'A': 100, 'B': 150, 'C': 20, 'D': 10}

demand
Out[8]: {'A': 20, 'B': 50, 'C': 300, 'D': 200}

###sum和quicksum均可求和,quicksum效率更高
###prob函数,用于变量和系数相乘后累加
以下两个表达式等效
obj = quicksum(cost[i,j]*x[i,j] for i,j in arcs)
obj=x.prob(cost

##建模尽量采用系数方式
利用tuplelist.select()以及tupledict.select(),tupledict.sum(),tupledict.prod()对下标进行组合处理
#Gurobi建模过程
1,添加变量
addVar()—单个变量进行添加
adddVars()—批量变量进行添加
2,创建模型
setObjective()
3,添加约束条件
addConstr()—单个约束条件进行添加
addConstrs()—批量约束条件进行添加
4,优化求解
optimize()

你可能感兴趣的:(GUROBI,python)