0

我在 Windows 机器上运行 matlab,在另一台(Ubuntu)机器上运行我有 perl 程序,它在集群上启动模拟,然后收集结果。

有 8 个参数变化并输入模拟器,它们的值是离散的和有限的,但是有超过几百万种可能的配置,输出是一个奇异值(搜索全局最小值)。每个模拟大约需要 8 分钟,我可以在集群上一次运行大约 800 个模拟。

我希望使用 matlab 来执行某种全局优化/智能搜索/也许是遗传算法,但是不知道如何处理这个问题?我基本上需要让 matlab 给我它想要运行的 800 个配置,通过 ssh 发送,让 matlab 等待结果,将结果反馈给 matlab,然后循环获取下一组 800 个配置。我还不确定模拟器的输出是否会遵循输入的模式(但很确定它们会),但无论哪种方式,我还需要一种方法来确定何时停止模拟,但我很高兴现在开始并运行第一部分。对此的任何帮助将不胜感激!!!

本质上,设置: 1

4

1 回答 1

0

不要自己选择配置。让您使用的任何求解/最小化技术为您改变参数值。这就是他们的设计目的。您可能也必须在集群上运行它,因为它将与每个模拟的结果紧密耦合。您使用什么解决/最小化技术将取决于您要解决的问题,所以我无法提出任何建议。您可以通过在您执行的 800 个(或许多)同时搜索中细分参数值的空间来利用集群。每次搜索都会返回一个最小值或找不到一个(某些参数组合可能不会收敛或可能存在数值问题等)。然后可以得到我在所有成功搜索中取最小值的全局最小值。你' 在划分参数空间时需要注意包括所有参数空间(您可能希望将区域重叠一点)。此外,您的搜索需要小心,当然不要陷入局部最小值,并找到每个区域的真正最小值 - 这应该指导您选择哪种技术。

于 2013-06-10T23:25:04.507 回答