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

如何修改AnyLogic供应链模型实现基于数据库时间生成订单?

AnyLogic供应链模型改造:按数据库指定时间生成订单

一、循环事件的逻辑代码实现

  • 先确认数据库表结构:假设你的表包含id(订单唯一ID)、order_time(与模型时间单位一致的触发时间,比如秒)、quantity(订单数量)、is_processed(是否已处理,默认0)字段。
  • 在每秒触发的循环事件中添加以下代码:
    // 查询所有未处理且触发时间<=当前模型时间的订单
    List<Record> pendingOrders = selectFrom(ordersTable)
        .where(ordersTable.is_processed.eq(0).and(ordersTable.order_time.le(time())))
        .list();
    
    // 遍历处理每个订单
    for(Record order : pendingOrders){
        // 1. 生成订单实体(假设你的订单实体类为Order)
        Order newOrder = new Order(this, order.get(ordersTable.quantity));
        // 2. 发送消息给对应零售商代理触发订单动作
        retailerAgent.send("triggerOrder", newOrder);
        // 3. 标记订单为已处理,避免重复生成
        update(ordersTable)
            .set(ordersTable.is_processed, 1)
            .where(ordersTable.id.eq(order.get(ordersTable.id)))
            .execute();
    }
    
  • 注意事项:
    • 模型时间time()的单位必须和数据库order_time单位一致;如果数据库存的是日期时间,需用dateToTime(orderDate)转换为模型运行秒数。
    • 多零售商场景下,数据库需新增retailer_id字段,查询时过滤对应零售商的订单。

二、状态图的调整与集成

方案1:消息触发订单生成

  • 在零售商状态图的目标状态(如Idle或ReadyToOrder)添加消息触发的迁移:
    1. 右键迁移→Add Trigger→Message,设置消息类型为triggerOrder。
    2. 在迁移的Action中调用订单生成逻辑,传入消息携带的订单实体(比如复用原有createOrder()函数)。
    3. 原周订单率迁移可保留或禁用,按需选择。

方案2:原迁移叠加条件判断

  • 若需保留原周订单率逻辑,同时支持指定时间订单,修改原迁移的Guard Condition:
    // 原周订单率触发条件 || 存在待处理的指定时间订单
    originalRateCondition || !this.pendingOrders.isEmpty()
    
  • 在迁移Action中优先处理指定时间订单,再执行原率生成逻辑:
    if(!pendingOrders.isEmpty()){
        Order targetOrder = pendingOrders.remove(0);
        // 执行指定时间订单的生成逻辑
    } else {
        // 原周订单率生成订单的逻辑
    }
    
  • 这里的pendingOrders是零售商代理的List变量,需在循环事件中将待处理订单添加到该列表。

方案3:状态内部条件触发

  • 在状态图的活跃状态(如Operating)添加Internal Transition:
    1. 右键状态→Add Internal Transition。
    2. 设置触发条件为!pendingOrders.isEmpty()或time() >= nextScheduledOrderTime。
    3. 在Action中执行订单生成逻辑,并更新待处理订单状态。

内容的提问来源于stack exchange,提问作者Abby Zimmerman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:23:13