微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定何时启动计数器以确保它永远不会捕获前一个计数器

如何解决如何确定何时启动计数器以确保它永远不会捕获前一个计数器

我遇到了一个问题,我在一个项目中发生了多个事件,这些事件是半并发发生的,它们不会同时开始,但多个事件仍然可以同时发生。 每个事件都是一群人在执行线性任务,从开始到结束。他们的进步是基于物理距离。 我基本上需要弄清楚每个赛事的开始时间,以便任何团队都不会在同一地点,也不会在任何时候互相超越。

我正在尝试在 MATLAB 中对此进行编程,以便输出是每个事件的开始和结束时间。我们的想法是优化项目所需的总时间。

我不知道从哪里开始这样的事情,所以任何建议都将不胜感激。

解决方法

如果我理解正确,您只是想用有限的资源(也就是空间/团队)优化事件的“日历”。

这类问题被称为 NP,并没有“简单”的方法来寻找最佳解决方案。

您在这里有两个选择:

  1. 贪婪的算法:你会在合理的时间内找到你的解决方案,但它不会是最好的。
  2. 类似算法的蛮力:您会找到最佳解决方案,但可能不会在您需要的时候找到。

通常,如果事件数量较少,您可以选择第二个选项,但如果不是,您可能需要选择第一个。

您首先需要做的事情是计算解决方案是否有效,这并不重要。这是什么意思?这意味着检查每个事件是否在时间、空间和团队上与其他事件发生冲突。

让我们想象一下在大学制作日历的问题。你必须考虑:

  • 学生
  • 老师
  • 课堂

所以对于每个事件,我必须检查另一个事件是否同时有相同的学生、老师或教室。首先,我会检查与实际事件在时间上匹配的事件。然后我会将实际事件与其他所有事件进行比较。

完成此操作后,您可以编写一个贪婪算法,该算法开始按时放置事件,只需检查它是否与其他事件发生冲突。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。