algorithm - 将设备映射到电源 socket 的有效方法?

标签 algorithm automation

我有四个web power switches每个有八个可远程控制的电源 socket ,总共有 32 个电源 socket 。我有一个被测设备连接到每个 socket 。这些被测设备已联网并具有 SSH。它们被设计为在两分钟内启动,但由于是开发中的原型(prototype),它们有时需要长达十分钟才能启动。它们也容易随机崩溃、死机或以其他方式变得无响应。

我正在寻找一种可靠、高效、自动化的方法来将设备映射到电源 socket 。我目前的方法可靠且自动化,但速度很慢:

turn off all outlets
for each outlet:
    turn outlet on
    wait ten minutes
    try to connect to all devices
    store all responsive devices in a list
    turn the outlet off
    try to connect to the devices in the responsive list
    if any are no longer responsive, map them to this outlet
turn on all outlets

根据您的计算,每个 socket 大约需要 10 分钟,10 分钟 x 32 等于 320 分钟,即五个多小时。我觉得必须有更好的方法,但我一直想不出任何办法。

最佳答案

假设导出编号为 0 到 31。

第一次尝试:打开所有奇数编号的 socket 并注意哪些设备有响应

第二次尝试:打开所有在其数字的二进制表示中第二位为 1 的 socket (即 2,3,6,7,10,11, ...)

第三次尝试:打开所有在二进制表示中第三位为 1 的 socket (即 4,5,6,7,12,13,14,15, ...)

...

第五次尝试:打开所有数字 >=16 的 socket

现在,每台设备在某些尝试中都有响应。如果您将结果再次写成二进制数,您将获得导出的编号。

例如,如果设备在尝试 5、3、2 中处于事件状态,而在尝试 4 和 1 中处于非事件状态,我们得到 10110,即 22。因此该设备必须连接到 socket 22。

关于algorithm - 将设备映射到电源 socket 的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734694/

相关文章:

c# - C# 中的斐波那契、二进制或二项式堆?

algorithm - 如何确定 3d 对象的 2d 投影中最上面的对象?

c# - 部署 Excel UDF

email - 控制 cron 作业复杂性的方法或软件系统?

c# - 用C#实现Hoey Shamos算法

algorithm - 查找用于拍摄 2D 图片的相机的 3D 位置

windows - 批量使用密码的最佳做法是什么?

c++ - 用于 C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

javascript - 使用浏览器在页面(客户端)上运行自定义 JavaScript 来模拟点击?怎么做?

algorithm - 除了替代哈希码字符串生成之外,Google 的 CityHash 有什么用?