农业灌溉主体
In progress
该部分文档仍在积极开发中。
主体生成¶
由于本研究近考虑黄河流域的灌溉农业(使用地表水配额的主要作物生产方式),主体仅在存在灌溉的范围内生成,依赖于 水资源管理主体 方法。
初步博弈意愿¶
API Reference
灌溉用水决策¶
灌溉水平衡¶
对某个位于 \(x, y\) 的农民主体 \(v\) 而言,其决策核心是通过取地表水 \(W_{s, v}\) 或地下水 \(W_{g, v}\) 来进行灌溉,使得灌溉水 \(W_{irr, v}\) 在计算运输和田间施用时损失(用灌溉用水效率系数 \(\eta_v\) 表示)后,满足此处作物的净需水 \(D_{x, y}\), 从而保障农作物生长:
根据情景设置的不同,\(W_{irr, v}\) 和 \(\eta_v\) 中有一个是已知的,因此在自然子系统完成对 \(D_{x, y}\) 的估算后,主体 \(v\) 便确定了应该的灌溉量 \(W_{irr}\)。接下来在满足一定边界条件的情况下,农民主体 \(v\) 需要通过社会子系统中得到的收益最大化,从而将灌溉水 \(W_{irr}\) 区分来源为地表水 \(W_{s}\) 和 \(W_g\)。
取水边界条件¶
除满足 \(W_{s} + W_{g} = W_{irr}\) 条件外,地表取水量 \(W_s\) 还应该满足边界条件:
- 若主体 \(v\) 的初步博弈意愿为违背取水额度 \(Q_v\),则 \(W_s \in [0, W_{irr}]\)
- 若主体 \(v\) 的初步博弈意愿为遵循取水额度 \(Q_v\),则 \(W_s \in [0, Q_v]\)
API Reference
决定取用水资源灌溉的下界/上界。
如果该主体意向是选择了遵守制度,那么用水上限就是水资源配额。 如果该主体选择了违背制度,那么上限就是今年所有的灌溉量。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
seasonal_irr |
float
|
本年度的灌溉量。 |
required |
Returns:
| Type | Description |
|---|---|
float
|
包括用水下界(0.0)和上界的元组。 |
Source code in src/api/farmer.py
523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | |
灌溉水量调优¶
确定了取水边界条件之后,主体将使用遗传算法,根据社会子系统中计算得到的收益,对其地表水 \(W_s\) 和 \(W_g\) 取水量进行调优。
API Reference
农民开始触发一次灌溉。 1. 决定这次灌溉的上下界。 2. 利用遗传算法,根据地表/地下用水量不同带来的收益差距,估计用水的来源。 3. 针对最优的地表/地下用水组合,最后计算并记录当年的得分。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
seasonal_irr |
Optional[float]
|
本年度的灌溉量。 |
None
|
water_prices |
Optional[dict]
|
水资源价格,一个字典,包括地表水和地下水的价格。 |
None
|
crop_prices |
Optional[dict]
|
作物价格,一个字典,包括作物的价格。 |
None
|
Returns:
| Type | Description |
|---|---|
Tuple[float, float]
|
本次灌溉的地表水用量和地下水用量。 |
Source code in src/api/farmer.py
545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 | |
策略更新¶
主体间会因收益 \(P\) 不同而学习更优秀的策略 \(S_i\),因此该决策博弈会随模型时间 \(1, 2, ... t\) 发生演化。
对任意个有联系的主体 \(v_1, v_2, \dots, v_i, v_i \in V\),每个人在下一时间步 \(t+1\) 的决策 \(S_{1}^{t+1}\) 将受到上一时间步 \(t\) 得分 \(P_1^t, P_2^t\) 较高者的决策 \(S_i^t\) 影响:
默认的更新策略 \(f\) 为直接学习最优的策略:
API Reference
由于主体最后的表现不同,主体之间可能存在强化学习行为。
从表现比较好的朋友处学习。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
metric |
str
|
评价自己或者同伴表现是否优异的关键指标。
在这个模型中,我们主要有三种潜在的指标:
1. |
required |
how |
str
|
如果有多个比自己表现优异的其他主体,如何从他们身上学习?
1. 如果 |
required |
Returns:
| Type | Description |
|---|---|
bool
|
这个主体是否进行了属性的变更。 |
Source code in src/api/farmer.py
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 | |