水资源管理主体
In progress
该部分文档仍在积极开发中。
水资源管理主体又包含不同尺度的市级主体 \(p\) 和省级主体 \(P\) 两类,都利用.shp地理空间数据创建,但辖区范围不同。省级主体 管辖其空间范围内的所有市级主体,省级主体 则管辖其空间范围内的所有 农业灌溉主体 \(v\)。因此对作物 \(c\) 的灌溉面积 \(A\) 而言,有:
省级主体¶
Api
Bases: Manager
每个省的主体。
在黄河的水分配模型中,省起到的作用主要是向下一级分配水配额。 因为“八七”分水方案是省尺度进行配额的,但省一级单位通常不了解有多少用水需求。 因此,本模型假设省份控制总配额量,根据灌溉面积将其分配给各个地级市。
Source code in src/api/province.py
35 36 37 38 39 | |
water_prices
cached
property
¶
water_prices
水资源价格字典,分别指示地表水和地下水的价格。 价格应该是一个正数,从数据中读取,单位是元/立方米。
- 'ground': 地下水价格
- 'surface': 地表水价格
create
classmethod
¶
create(model, name_en)
使用单例模式创造一个省主体。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
MainModel
|
当前模型。 |
required |
name_en |
str
|
省份的英文名。 |
required |
Returns:
| Type | Description |
|---|---|
Province
|
一个省份的实例。 |
Source code in src/api/province.py
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
setup ¶
setup()
初始化一个省份的数据。
- 水资源配额数据。来源于黄河水资源分配方案。
- 属于该省份的主体数量数据。来源于统计局各省的乡村数量数据。
Source code in src/api/province.py
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | |
update_data ¶
update_data(agents_by='total_area', quotas_by='total_area')
更新配额数据和主体数量数据,按需分配给每个其管辖的地级市。 权重变量应该是一个字符串,指向一个已经存在于所辖城市主体的动态变量。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
agents_by |
str
|
用于分配农民数量的权重变量。 |
'total_area'
|
quotas_by |
str
|
用于分配水资源配额的权重变量。 |
'total_area'
|
Source code in src/api/province.py
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | |
update_graph ¶
update_graph(l_p=None, l_c=None)
更新社会网络。 乡村是我们进行灌溉决策的基本单元, 社会网络代表着不同乡村之间的联系。 当乡村之间有联系时,他们可以感知到对方的决策信息。 如果乡村 A 知道了乡村 B 大量超用水,那么乡村 A 可能会感到不满。 这种不满会同时降低两者的社会满意程度。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
l_p |
Optional[float]
|
省之间,hub节点的概率。 |
None
|
l_c |
Optional[float]
|
城市内部的联系概率。 |
None
|
Source code in src/api/province.py
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | |
市级主体¶
经过筛选,本研究使用黄河流域地级市共计 59 个。
更新农业灌溉主体¶
API References
根据自身的耕地情况,随机产生农民主体,直到主体总数达到某值。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
num |
int
|
期望达到的主体数量。 |
required |
farmer_cls |
Type[Farmer]
|
生成主体的基类,默认是本模型自带的农民。 |
Farmer
|
Returns:
| Type | Description |
|---|---|
ActorsList[Farmer]
|
完成添加或死亡后,当前城市管理的农民主体列表。 |
Source code in src/api/city.py
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | |
更新主体灌溉面积¶
API References
为农民分配种植的作物。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
crops |
List[str]
|
作物类型列表,例如 ["Rice", "Wheat", "Maize"]。
作物名称应该是可以识别的,例如在 |
required |
nums |
ndarray
|
土地利用格局,种植不同作物的之和农民主体数量应该相等。
如果数量不等就随机增加到那个数量(调用 |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
如果土地利用格局的总和不等于农民主体数量。 或者作物类型数不等于 nums 列表的长度。 |
Source code in src/api/city.py
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | |