# Pywr 概念

Pywr 是 WaterStrategy 使用的 Python 库，它通过使用 “节点” 和 “边缘” 将资源系统表示为网络来模拟资源分配。资源分配由使用 “分配惩罚”、“约束” 和 “参数” 的操作规则驱动，使用 “记录器” 捕获和保存模型输出。可以使用 “场景” 指定模型输入的变体并行运行。

虽然在 Pywr 中创建资源分配模拟模型所用的一般概念与其他工具的概念类似，但术语的用法可能有所不同。在本节中，我们定义了关键 Pywr 术语及其在仿真模型中的作用。

## 节点

节点表示模拟水系统中添加、储存、使用、消耗或输送水的位置。Pywr 中有不同的节点类型可以帮助您构建水系统模型；您可以在 Pywr 中了解有关它们的更多信息 [节点类型](https://water-strategy.gitbook.io/water-strategy/modeling-basics/node-types) 部分。定义节点物理特征和行为的数据可以直接添加到节点中，也可以通过引用参数间接添加数据（如下所述）。

## 边缘

为了形成网络，使用代表水路输送的连接线连接节点。Pywr 称这些为 “边缘”。边缘有起点和终点节点，水从起始节点流向终点节点。Pywr 不会为这些连接（边缘）分配信息，而是将数据分配给源节点和目标节点。模拟水管理所需的所有数据都存储在节点上，边缘仅决定水流方向。Pywr 建模者会说 “Pywr 边缘决定网络拓扑”，这意味着 “节点之间的连接决定了计算机模型中水的移动方式”。

## 约束

可以在各种节点类型上设置约束条件以帮助表示系统行为。例如，河流节点可以具有最大和/或最小流量值来表示输送能力。在 Pywr 中，许多节点都有 'max\_流量'和'最小值\_flow' 属性，用于在需要时设置流经节点的流量的上限和下限。'max\ \_flow'属性不要求通过该节点的流量达到此值，但是如果水量和优先级足够，模型将尝试满足 “最大流量”。应谨慎使用最小流量约束，因为如果无法满足最小流量约束，它们可能会导致模型不可行。

## 分配罚款或 “成本”

分配惩罚是控制水资源分配优先级的节点属性。这些通常以罚款或 “成本” 表示，该模型首先将水分配给罚款最低的节点。如果您更愿意按福利进行分配，首先将水输送到收益最高的地方，则需要在Pywr中将优先级表示为负成本（即使用负数）。实际上，两者可以一起使用，例如，如果 3 个节点受到惩罚-10、2、6，则它们将按该顺序获得水（惩罚为-10 的节点先获得水，分配惩罚为 6 的节点最后获得水）。

## 参数

Pywr 中的参数为向节点提供输入提供灵活便捷的方式。例如，特定参数类型可用于从微软 Excel 文件加载流入或要求数据。参数还为定义系统的运行规则（例如，管理储层释放的规则）提供了一种灵活且可定制的方式。大多数模型输入数据可以使用参数提供。

## 录音机

Pywr 记录器用于对结果进行后期处理。通过创建记录器，您可以观察和保存仿真结果。一些记录器可以汇总一段时间（例如，从每天到每年）和空间（例如，分配给一组节点的水）的结果。

## 场景

在 Pywr 中，您可以使用不同的供应、需求或其他变化输入数据创建和模拟场景。水资源规划者越来越多地使用具有多种情景的长期模拟来评估未来的变化或测试可能的干预措施。能够快速模拟许多合理的未来场景是 Pywr 的主要优势之一。

***注意：***

欲了解更多详情，请参阅开放获取文件，标题是： [Python 中的水资源模拟器](https://doi.org/10.1016/j.envsoft.2020.104635)。
