我想创建一个MATLAB程序来模拟某些代理的行为。这些代理中的每一个都能够相互通信并决定下一个状态。我可以实现该程序是一种我熟悉的传统语言,如java,python或C ++,并使用线程来模拟每个代理。
现在我想尝试在MATLAB上实现,以利用MATLAB绘图函数及其数学工具。是否有可能在MATLAB中创建这样的模拟,或者更好的是它是否是前进的?我知道并行工具箱,但我不确定MATLAB是否适合这样的应用程序。我也可以使模拟不平行,但它不是那么有趣。这是作业的一部分,我想知道在MATLAB上开始这样的模拟是否是一个好主意,以便更熟悉它。如果它不是前进的话,我可以很容易地切换到python。
答案 0 :(得分:1)
如前所述,你在matlab中实际上没有多个进程。
但是对于代理,如果它们的类继承自句柄,则可以创建它们。然后你可以给他们一个接收消息的方法。
但请记住,它们不会并行运行。
答案 1 :(得分:1)
这就是我要做的事情:
正如您所看到的,这不是平行的,而是顺序的。但是,我无法真正看到并行处理的优势。工具箱没有任何帮助,因为它只允许“工人”,具体取决于您拥有的核心数量。基本上,即使你使用并行处理工具箱,你也没有太大的优势,因为它是为了并行化循环。例如,在遗传算法中,您可以独立计算每个池成员的成本函数,因此您可以使用工具箱。在一个循环执行依赖于先前循环执行的计算的算法中,您不能使用工具箱。
希望这有帮助。
答案 2 :(得分:0)
Matlab按顺序解释代码。因此,为了解决您的问题,您需要一个循环来迭代每个采样时间并以预定义的顺序评估所有代理的状态。
TimeMax = 10;
TimeStep = 0.1;
time_counter = 0;
while time_counter<TimeMax
time_counter = time_counter + TimeStep;
% Update all the agents sequentially
end
效率不高。因此,我建议你使用Simulink,它更自然地支持并行计算。然后,您可以将结果导出到Matlab并执行您希望的所有花哨图。