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
我有关于集装箱运输每天每条路线不同成本的数据(例如,早上从 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