Anylogic:如何添加路线选择(基于路线成本)?

Anylogic: How to add the choice of route (based on route costs)?

在我的 Anylogic 模型中,我添加了一个 Java class MyRoute 和一个从数据库读取路线成本的函数:

GISRoute route = main.map.getRoute(
(double) selectFrom(odcosts)
    .where(odcosts.origin.eq(order.terminal.name))
    .uniqueResult(odcosts.latitudeorigin),
(double) selectFrom(odcosts)
    .where(odcosts.origin.eq(order.terminal.name))
    .uniqueResult(odcosts.longitudeorigin),
(double) selectFrom(odcosts)
    .where(odcosts.destination.eq(order.customer.name))
    .uniqueResult(odcosts.latitudedestination),
(double) selectFrom(odcosts)
    .where(odcosts.destination.eq(order.customer.name))
    .uniqueResult(odcosts.longitudedestination), true);
MyRoute myRoute = new MyRoute();
myRoute.route = route;
myRoute.cost = (double) selectFrom(odcosts)
    .where(odcosts.origin.eq(order.terminal.name))
    .where(odcosts.destination.eq(order.customer.name))
    .uniqueResult(odcosts.cost);

我现在如何添加要使用的卡车选择(当他们收到订单时):

A) 白天出发地和目的地之间的直达路线

B) 经由枢纽的路线(始发地 -> 夜间枢纽 & 枢纽 -> 白天目的地)

我如何告诉卡车代理人查看路线和费用并做出决定?

提前致谢!

我通常将这些信息写入一维或二维Arraylists,具体取决于输入信息的维度: ArrayList<ArrayList<Float>> routes=new ArrayList<ArrayList<Float>>();。 您可以删除不符合某些条件的车道,如下所示: routes.removeIf(s -> s.get(0) != "myCustomer");

然后遍历OD信息并将每个的成本添加到arrayList中。

List <Float> costs=new ArrayList<Float>();
for (int route_no=0;route_no<routes.size();route_no++) {
            cost=routes.get(route_no);
            costs.add(cost);    
            }

然后像这样找到最小成本的索引:

        int indexMin=0;

        for (int i2=0; i2<costs.size(); ++i2) {
            if (min > costs.get(i2)) {
                    min = costs.get(i2);
                    indexMin = i2;
                        }
                }

现在您知道最便宜期权的指数是 indexMin。然后你可以用这些信息做任何你想做的事。