【问题标题】:Anylogic: How to fix NullPointerException error within function?Anylogic:如何修复函数内的 NullPointerException 错误?
【发布时间】:2023-06-30 21:03:01
【问题描述】:

我在我的 Anylogic 模型中收到了一个 NullPointerException 错误:

if (directRoute.routeCosts.get("Day") < toHubRoute.routeCosts.get("Night") + fromHubRoute.routeCosts.get("Day")) {

对于必须从某个终端到某个客户的每个订单,此气味位于应该找到最便宜的路线(直接驾驶或通过位于 Region102 的枢纽)的功能内。

该函数是指以下列表的路线和费用:

路线和费用的数据集是:

有人知道我为什么会收到此错误以及如何解决它吗?

谢谢!

【问题讨论】:

    标签: function routes anylogic agent choice


    【解决方案1】:

    这意味着在那个模拟点 directRoute.routeCosts.get("Day")toHubRoute.routeCosts.get("Night")fromHubRoute.routeCosts.get("Day") 不存在。

    可能由于以下原因而发生:

    • 路线根本不存在
    • 查看您的第一个屏幕截图,您检查了来自"Region102" 的连接。你是故意的吗?
    • 看看你的第二个屏幕截图,你说where (cost.route.eq(route.id))route.id 列是否已定义或作为输入给出?

    PS。问题是在第二个屏幕截图中,它应该是costRow.get,而不是row.get

    【讨论】:

    • 感谢您的回答。我编辑了我的问题,向您展示如何在公共类 MyRoute 中定义 route.id。 “Region102”是集线器,这就是我检查这些连接的原因。希望这可以帮助您理解我的问题。
    • 我也试过把"Region102"改成hub.name,就像终端和客户一样,但不幸的是这并没有改变错误
    • 您是在运行模拟时立即收到错误消息,还是稍后再出现?
    • 运行时立即
    • 如果您在启动时执行allPossibleRoutes,错误是否仍然存在?如果你为此做了一个函数,你需要在模拟开始之前运行它,否则它的内容为空。