【问题标题】:Moving AnyLogic agents according to database table根据数据库表移动 AnyLogic 代理
【发布时间】:2021-12-07 12:28:37
【问题描述】:

我的模型有一个卡车集合,其中 Source 块为每辆卡车提供了一个唯一的 ID。我还有一个包含车辆运动信息的数据库。

没有列具有唯一值,但trip_start_datevehicle_id 应该是唯一的集合。我正在尝试构建一个 moveTo 块,以便在模型运行时达到trip_start_time 列中的日期时,以vehicle_id 为参数的代理将以一定量移动到纬度/经度时间。

但是,我得到一个“空数据库值结果”。我想知道这是否是因为它期望每个模型日期都有一个条目?我考虑过创建一个在遇到数据库中的日期时调用的函数,但有人告诉我 moveTo 块应该能够处理此活动。非常感谢您帮助解决此问题!

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    您尝试使用 MoveTo 块的方式不正确。在这里很难解释,但我认为您需要通过一些教程来获得更好的基本理解。

    但是,下面是我认为您想要实现的行为的可重现示例,但使用基于代理的方法而不是以流程为中心或离散事件的方法。

    我有一个名为 Vehicle 的代理,其 ID 称为车辆 ID。

    有一个动态事件具有在数据库中找到的所有参数

    然后在模型开始时,我们使用下面的代码生成在数据库中找到的所有 moveTo 事件。

    
    List<Tuple> rows = selectFrom(db_table)
        .where(db_table.vehicle_id.eq(vehicleID))
        .list();
    
    for (Tuple row : rows) {
        //What is the start time of the movement
        double timeToTripBegin = dateToTime(row.get( db_table.trip_begin_time ));
        //Lets create a new movement event to trigger the movement int he future
        create_MoveToLocation(timeToTripBegin, 
            row.get( db_table.latitude ), 
            row.get( db_table.longitude ), 
            row.get( db_table.trip_duration_h ));
    }
    
    

    此事件将在时间到达时执行移动

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 2022-08-09
      • 2021-07-01
      • 2017-03-11
      • 2018-12-08
      • 2017-06-20
      • 1970-01-01
      • 2021-05-10
      • 2016-02-17
      相关资源
      最近更新 更多