netflow.py例子细节

netflow.py例子细节

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


进口gurobipy作为gp从gurobipy进口GRB

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


#基本数据商品=[“铅笔”、“笔”]节点=[“底特律”、“掘金”,波士顿,纽约,西雅图的]弧能力= 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函数初始化(列表键),能力(一个字典).

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


# Cost for triplets goods -source-destination Cost = {(" Pencils ", " Detroit ", " Boston "): 10, (" Pencils ", " Detroit ", " New York "): 20, (" Pencils ", " Detroit ", " Seattle "): 60, (" Pencils ", " Denver ", " Boston "): 40, (" Pencils ", " Denver ", " New York "): 40, (" Pencils ", " Denver ", " Seattle "): 30, (" Pens ", " Detroit ", " Boston "):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}

正值表示需求,负值表示供给。