0

我有三个操作。每个操作都在一个循环中,并且flag在操作运行时具有一个减小的值。在操作运行时,任何其他flag值达到最大阈值的操作都应中断它并改为运行(具有最高优先级)。该flag值根据随时间的微分方程而变化。

  • 我希望每个操作的flag值在另一个操作运行时增加,并在flag值达到最大阈值时向系统发出切换到它的信号。
  • 每个操作的flag值在操作运行时根据随时间变化的特定微分方程增加和减少。

所有操作当前都在一个文件中,在一个Switch case语句中循环。当前代码是:

while 1
  [value, index]=max(flag);
  switch index
      case 1
          operation1
          ...
          ...
          flag = [x y z]
      case 2
          operation2
          ...
          ...
          flag = [x y z]
      case 3
          operation3
          ...
          ...
          flag = [x y z]
    end
end

有任何想法吗 ?如果您需要我更好地解释,请告诉我。

4

1 回答 1

0

这里有几种方法

  1. 每次运行一个操作,其他操作都应该增加一些权重,下次选择一个操作时,选择权重最高的一个。
  2. 每毫秒运行一个操作,其他操作应该增加一些权重,下一次选择操作时选择权重最高的操作。
  3. 每运行一个操作毫秒,其他操作就会增加一些权重。一旦操作失去其最高标志状态,它就应该被中断。

每个都需要不同的解决方案


以下是针对相应问题的一些建议解决方案:

  1. 相当简单,每次运行操作时将所有操作的标志加 1,或者交替将此操作的标志减 1。
  2. 测量完成操作所花费的时间(可能使用ticand toc),使用该值增加所有其他操作的标志。
  3. 将该标志作为操作的输入,当经过的时间让该操作超过另一个标志时,该操作在内部停止。请注意,如果不进行调整,这意味着您基本上会尝试以毫秒为单位交替操作。
于 2013-02-15T16:14:30.620 回答