——对小车最佳路径计算算法的ray部署和测试

lab4 报告 ——对小车最佳路径计算算法的ray部署和测试 分析:
我们组的选题是ros-RT-系统 , 实现PC端ros负责复杂计算 , stm32端ros负责控制电机等实时性任务 , 而PC端的复杂计算就可以用到本次实验中ray部署的分布式并行计算 。
所以 , 我们把我们组最重要也是计算复杂性最高的小车最佳路径算法的程序进行了基于ray的部署和测试 。
可以参考的指标:
1.响应时间( Time)
响应时间就是从数据传入到结果输出之间的时间 , 这对于一个需要控制实时系统工作的程序是至关重要的 , 如果不能成功降低响应时间 , 这个系统的工作性能无疑是非常差的 。
2.吞吐量()
对于软件系统来说 , “吞”进去的是请求 , “吐”出来的是结果 , 而吞吐量反映的就是软件系统的“饭量” , 也就是系统的处理能力 , 具体说来 , 就是指软件系统在每单位时间内能处理多少个事务/请求/单位数据等 。当面对多个节点的控制时 , 吞吐量也十分重要 。
3.资源使用率( )
常见的资源有:CPU占用率、内存使用率、磁盘I/O、网络I/O 。
4.并发数 ( Level )
并发数体现了主节点能够处理的分支节点数 , 这对于ros-RT-的可扩展性非常重要 。
5.错误率( Error Rate )
体现了程序出现错误的几率 , 这体现我们的实时系统的可靠性 。
我们将选择响应时间、资源使用率和吞吐量进行测试 。
ray单机部署
我们首先把程序通过ray部署到了单机上
import itertoolsimport rayray.init()@ray.remotedef distance(x1, y1, x2, y2):ans = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)return ans@ray.remotedef shortest_way(Location, n): #求局域最优解dis = [[0.0] * 1005] * 1005#找到所给坐标点的最短访问序列 , 并返回调整过的坐标序列min_dis = 10000000000000for i in range(0, n):for j in range(0, n):dis[i][j] = (Location[2 * i] - Location[2 * j]) * (Location[2 * i] - Location[2 * j]) + (Location[2 * i + 1] - Location[2 * j + 1]) * (Location[2 * i + 1] - Location[2 * j + 1])......(略)return route@ray.remotedef merge_route(route1, route2): #把局域最优解和成全局近似最优解length1 = len(route1)length2 = len(route2)......(略)return new_route#存需要到达的点的位置Location = [[1.5, 2.4, 3.2, 1.5, 2.8, 4.5, 8.3, 3.6, 4.8, 5.0], [3.5, 1.4, 6.2, 9.5, 1.8, 3.5, 6.3, 2.6, 7.8, 2.0]......(略)def fun():route0 = shortest_way.remote(Location[0], 5)route1 = shortest_way.remote(Location[1], 5)new_route1 = merge_route.remote(route0, route1)route2 = shortest_way.remote(Location[2], 5)new_route2 = merge_route.remote(new_route1, route2)route3 = shortest_way.remote(Location[3], 5)new_route3 = merge_route.remote(new_route2, route3)route4 = shortest_way.remote(Location[4], 5)new_route4 = merge_route.remote(new_route3, route4)route5 = shortest_way.remote(Location[4], 5)new_route5 = merge_route.remote(new_route4, route5)route = ray.get(new_route5)print(route)fun()
这是运行结果的部分截图:
性能测试: 响应时间:
我们首先用测试了总的响应时间:
由于环境的关系 , 各次测的值有所波动 , 大致记录了7次
编号平均值
时间(s)
0.02387
0.02167
0.02341
0.02063
0.02524
0.02572
0.02344
0.02342
平均时间为0.02342
然后用测试了各个函数调用的延迟时间:
吞吐量:
通过改变处理数据的数量 , 并测试对应的处理时间 , 我们可以测试吞吐量 。
同时处理5组数据: