“标准”作物管理组件没有提供很多选项来决定何时播种作物——很可能应该考虑一系列额外的种植规则(例如,土壤是否足够干燥以驱动拖拉机过去?),并且在播种时应采取额外措施(例如添加一些肥料)。
不幸的是,实现这个决定的逻辑隐藏在管理组件的代码中,并且不容易修改(尽管我们鼓励用户学习如何修改)。
单一栽培测序仪的存在仅仅是为了允许向独立的作物管理组件添加额外的测试和操作。使用它很简单:
1.新建连续小麦模拟。确保在作物管理组件中设置“必须播种”参数(为“是”)。
-
将变量 ‘year’ 和 ‘day’ 添加到空输出文件
-
复制模拟并将第二个重命名为“Continuous Wheat delay sow”。打开管理器文件夹。
-
从管理工具箱中添加一个Monoculture Sequencer,并向上移动使其成为管理器文件夹中的第一项。
5.在管理工具箱中添加’Wait for dry surface’,设置勾选阈值参数为35mm。该组件仅计算定序器将使用的变量“IsDry”——土壤表面是否小于 35 毫米。
-
在 Monoculture Sequencer UI 中,“变量和事件”顶部有一个按钮。这个按钮打开一个对话框,我们可以用它来找到我们将用于额外测试的变量的名称。在对话框顶部的组件过滤器中,选择“等待表面干燥”组件。下面应该出现一个单一变量“IsDry”——这是需要添加到音序器的第一个“额外测试”行的内容。在 Monoculture Sequencer 中键入完整的“点分”符号,如图所示:
排序组件的背景是每天都会询问作物管理组件是否可以种植作物。如果是,则它从系统(“IsDry”)获取“测试 1”值。如果该值不为零,它将种植作物。如果列出了任何操作(即发送到系统的事件),它们也会被发送出去。 -
运行两个模拟并将两个模拟的播种日期绘制在称为 Sowday 的条形图上(X 是年,Y 是天)。
8、二次模拟是否有延迟种植?如果您在两个模拟中都关闭“必须播种”标志,它们每年都播种吗?
-
我们实现了逻辑“与”运算符——必须同时满足两个条件。要探索如何实施“或”运算符,请复制第二个(等待表面干燥)模拟,将“旋转管理”组件从管理工具箱拖到管理文件夹中。还将“dayIs”组件拖到文件夹中。移除单一培养测序仪。
-
在有向图组件中,删除 summer_fallow 节点和鹰嘴豆节点。将 summer_fallow2 节点重命名为“fallow”。勾选paddock box,初始状态设置为fallow。
-
在从 wheat 到 fallow 的弧上,删除所有对 summer_fallow 的引用。从这个休耕节点到小麦节点创建一条新弧线,然后单击“规则”框,然后在组件过滤器中,找到作物管理模块。双击“canEnter”规则。找到“Wait for dry surface”节点,并引入“IsDry”规则。单击“操作”框,找到“作物管理”模块,输入“输入”规则。
-
此时,行为应该与第一次模拟相同。
-
从休耕节点到小麦节点再画一条弧线。对于其规则,找到“dayIs.dayIs”规则。对于其操作,选择“Crop Management.Enter”。
-
在“dayIs”规则中,将日期更改为 7 月 11 日——播种窗口关闭后的第二天。
-
运行仿真并比较所有三个。
解释下这里面结果,首先每年都有的是强制播种,也就是添加了7月11日播种的“或”规则,因此每年都有符合的日期,其他两个则是符合条件就播种,因此课播种日期都差不多,至于为什么多了一个限制条件的第二个1944反而比第一个高,我也不理解