netflow.py例子细节

netflow.py例子细节

现在让我们一行一行地看一下这个例子,以了解它是如何达到计算最佳网络流的预期结果的。和前面介绍的简单Python示例一样,这个示例首先导入Gurobi函数和类:


从gurobipy导入*

然后我们创建了一些包含模型数据的列表:


# Base data commodities =['铅笔','钢笔']nodes =['底特律','丹佛','波士顿','纽约']arcs, capacity = multidict({('底特律','波士顿'):100,('底特律','纽约'):80,('底特律','西雅图'):120,('丹佛','纽约'):120,('丹佛','纽约'):120,('丹佛','纽约'):120,('丹佛','西雅图'):120})

该模型使用两种商品(铅笔和钢笔),网络包含5个节点和6个弧线。我们初始化大宗商品节点作为简单的Python列表。我们用古罗比multidict函数初始化(列表键),能力(一个字典).

该模型还需要每一对商品弧的成本数据:


# Cost for triplets Cost ={('铅笔','底特律','波士顿'):10,('铅笔','底特律','纽约'):20,('铅笔','底特律','西雅图'):60,('铅笔','丹佛','波士顿'):40,('铅笔','丹佛','纽约'):40,('铅笔','丹佛','西雅图'):30,('钢笔','底特律','波士顿'):20日(“笔”、“底特律”,“纽约”):20日(“笔”,“底特律”,“西雅图”):80(“笔”、“掘金”,“波士顿”):60岁(“笔”、“掘金”,“纽约”):70(“笔”、“掘金”,“西雅图”):30}

一旦这本词典完成,移动商品的成本h从节点j可通过以下方式查询成本((h i, j)).回想一下,Python允许您在使用元组索引字典时省略括号,因此可以将其缩短为just成本(h i, j)

一个类似的结构被用来初始化节点需求数据:


#对小商品城流入需求={(“铅笔”,“底特律”):50岁(“铅笔”、“掘金”):60岁(“铅笔”,“波士顿”):-50(“铅笔”,“纽约”):-50(“铅笔”,“西雅图”):-10(“笔”,“底特律”):60岁(“笔”、“掘金”):40岁(“笔”、“波士顿”):-40年,(“笔”、“纽约”):-30(“笔”、“西雅图”):-30}