AnyLogic医疗仿真:将select output块从概率改为症状条件及随机赋症
AnyLogic医疗仿真模型:基于症状的流程控制与随机症状分配
1. 将Select Output块从概率模式切换为条件模式
- 打开Select Output块的属性面板
- 在「模式(Mode)」下拉菜单中,直接切换为「条件(Conditional)」(替代原有的「概率(Probabilistic)」模式)
- 为每个输出端口设置判断条件:
- 假设你的患者Agent已定义
symptom字符串属性,示例条件如下:- 端口1:
agent.symptom.equals("发热") - 端口2:
agent.symptom.equals("咳嗽") - 端口3:
agent.symptom.equals("头痛")
- 端口1:
- 假设你的患者Agent已定义
- 注意事项:条件会按端口顺序依次判断,需确保逻辑互斥或优先级合理;若所有条件均不满足,患者会进入「默认输出端口」(可在属性中指定)
此操作无需编写复杂代码,AnyLogic内置了条件模式的处理能力,只需利用Agent的属性完成逻辑判断即可。
2. 为到达的患者随机分配症状
步骤1:为患者Agent添加症状属性
打开患者Agent的编辑界面,在「属性(Attributes)」标签页添加一个字符串类型的属性,命名为symptom
步骤2:实现随机分配逻辑
根据需求选择以下两种常用方式:
方式一:等概率随机分配
- 在主模型的「变量(Variables)」中定义症状列表:
List<String> symptomList = Arrays.asList("发热", "咳嗽", "头痛", "恶心"); - 打开生成患者的Source块,在「到达时(On arrival)」动作中添加代码:
agent.symptom = randomItem(symptomList);
方式二:加权概率分配(不同症状概率不同)
- 在主模型的「变量(Variables)」中添加一个「离散分布(Discrete Distribution)」类型变量,命名为
symptomDistribution - 编辑该分布:添加症状值及对应概率(例如:发热0.4、咳嗽0.3、头痛0.2、恶心0.1)
- 在Source块的「到达时(On arrival)」动作中添加代码:
agent.symptom = symptomDistribution.sample();
内容的提问来源于stack exchange,提问作者Omar Samy
相关产品推荐
相关产品推荐

