Anylogic:如何在一天中的每个时间添加成本(每条路线)?

Anylogic: How to add costs (per route) per time of day?

我有关于集装箱运输每天每条路线不同成本的数据(例如,早上从 A 区到 B 区;运输总成本为 100 欧元),近 200 个区域有 4 次的一天。我如何在我的 Anylogic 模型中分配这些成本 每个时间

(在此之后我希望代理商(卡车)决定(根据成本)旅行的路线和时间)

由于没有示例数据,我使用一些虚构的数据来举例说明如何执行此操作。

假设我有以下路线和费用数据

您可以将其导入 AnyLogic 数据库,然后使用它们将您的数据填充到自定义 class。

例如,这里是您的路线的自定义 Java class

public class MyRoute {
    String id;
    String from;
    String to;
    
    LinkedHashMap<String, Double> routeCosts = new LinkedHashMap<String, Double>();
    
    /**
     * Default constructor
     */
    public MyRoute(String id, String from, String to) {
        this.id = id;
        this.from = from;
        this.to = to;
    }
    
    public void addCost(String timeOfDay, double cost) {
        routeCosts.put(timeOfDay, cost);
    }


}

然后我有一个小功能可以从数据库中填充它们

List<Tuple> rows = selectFrom(routes).list();

for (Tuple row : rows) {
    MyRoute route = new MyRoute(
        row.get( routes.route ),
        row.get( routes.from_db ),
        row.get( routes.to_db )
    );
    
    // Add costs
    List<Tuple> costRows = selectFrom(costs)
    .where(costs.route.eq(route.id))
    .list();

    for (Tuple costRow : costRows) {
        route.addCost(
            row.get( costs.time_of_day ), 
            row.get( costs.cost )
        );
    }   
}

现在您可以根据费用或一天中的时间对路线进行排序,并以此做出决定

您可以在此处查看有关排序的更多信息https://www.baeldung.com/java-hashmap-sort