netflow.py例子细节

netflow.py例子细节

现在让我们逐行浏览这个示例,以了解它如何实现计算最佳网络流的预期结果。与前面的简单Python示例一样,本示例从导入Gurobi函数和类开始:


导入gurobipy作为gp

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


#基础数据商品=['铅笔','笔']节点=['底特律','丹佛','波士顿','纽约','西雅图']弧,容量= gp。multidict({ ('Detroit', 'Boston'): 100, ('Detroit', 'New York'): 80, ('Detroit', 'Seattle'): 120, ('Denver', 'Boston'): 120, ('Denver', 'New York'): 120, ('Denver', 'Seattle'): 120})

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

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


#三联商品来源-目的地成本={('铅笔','底特律','波士顿'):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}