如何计算智能体及模型中城际行驶卡车的移动距离?
如何计算智能体的移动距离?
其实核心逻辑就是追踪智能体的位置变化,累加每一步的位移长度,具体得看你的模型用的是哪种空间类型:
- 如果是连续空间(比如用(x,y)坐标表示位置):每完成一次移动后,用欧几里得距离公式计算当前位置与上一位置的间距,再累加到总距离里。公式是:
distance = sqrt((x2 - x1)² + (y2 - y1)²),记得给每个智能体单独维护一个总距离变量,初始设为0,每次移动后更新。 - 如果是离散网格空间(比如用(行,列)网格坐标):根据模型规则选对应的距离计算方式——比如只允许横向/纵向移动时用曼哈顿距离(
|x2-x1| + |y2-y1|),允许斜向移动时用切比雪夫距离(max(|x2-x1|, |y2-y1|)),同样每一步位移都要加到累计距离里。
在包含卡车种群、卡车在城市间行驶的模型中,如何计算每辆卡车的移动距离?
这个场景更贴合实际,因为城市是固定节点,卡车走的是城市间的道路,不用纠结坐标位移,直接用道路的实际里程就行:
- 第一步:给每辆卡车单独维护一个累计里程变量(比如叫
total_mileage),初始值设为0。 - 第二步:给城市间的每条道路绑定真实里程数据,比如用字典存:
road_distances = {("北京", "上海"): 1318, ("上海", "广州"): 1432},或者用表格存储更复杂的路网信息。 - 第三步:当卡车从城市A行驶到城市B时,直接把这条道路的里程加到该卡车的
total_mileage里;如果走的是多段路径(比如A→C→B),就把每一段的里程依次累加。 - 进阶提示:如果模型里卡车会选择不同路线(比如高速/国道里程不同),可以给道路加类型属性,根据实际行驶的道路类型取对应里程;要是有中途停靠、折返的情况,这些路段的里程也得算进去,别漏了。
内容的提问来源于stack exchange,提问作者Vladimir Pribysh
相关产品推荐
相关产品推荐

