You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic从数据库读参数值:供应链仿真源数量设置报错

解决AnyLogic中静态引用非静态字段的错误(设置收获品类源数量上限)

错误原因

Cannot make a static reference to the non static field MyFile.harvest 本质是你试图通过代理类名MyFile直接访问非静态字段harvest,但harvest属于MyFile类的实例对象,而非类本身,静态上下文(比如直接在属性框写类名访问)不允许这种操作。

具体解决步骤

1. 加载数据为MyFile实例集合

在主代理(如Main)中定义List类型变量:

List<MyFile> harvestData;

然后在主代理的onStartup事件中初始化数据(根据你的数据源选择加载方式):

// 从数据库加载
harvestData = databaseRead(MyFile.class);
// 或从Excel加载
harvestData = excelRead(MyFile.class, "你的Excel文件名.xlsx", "Sheet1");

2. 为各品类Source设置数量上限

针对芒果的Source,在「Maximum number of agents」属性中填写:

findFirst(harvestData, data -> data.harvest.equals("芒果")).demand

(将demand替换为你存储需求数量的实际列名)

针对西瓜的Source,同理修改为:

findFirst(harvestData, data -> data.harvest.equals("西瓜")).demand

3. 额外排查点

  • 验证数据加载:在onStartup中添加打印语句确认数据已加载:traceln(harvestData.size());
  • 类型转换:若需求字段是字符串类型,需转为整数:Integer.parseInt(findFirst(harvestData, data -> data.harvest.equals("芒果")).demand)
  • 单实例直接引用:若每个品类对应唯一的MyFile实例,可定义单个实例变量(如MyFile mangoData),初始化后直接用mangoData.demand

内容的提问来源于stack exchange,提问作者Ehsan Ul Haque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:52:06