希望这个问题的标题传达了我在设计/实施方面寻求帮助的一般概念。
澄清:
我正在尝试编写分布式应用程序来执行优化。一般方法将遵循遗传算法的方法:我试图找到一个参数向量,它最小化某些成本函数的值。
我目前的困难涉及成本函数本身。我试图使设计尽可能通用;因此,我的意图是使用std :: function作为优化器类的参数。
具体来说,我的问题在于:如何将有关此成本函数的信息共享给分布式节点?
更多细节:
顺便说一句,我在整个过程中大量使用Boost,并且非常适合使用Boost功能的替代解决方案。
如果有人能就如何将成本函数分配给其他节点提供一些建议,我将不胜感激。同样,如果有人能指出我的总体设计理念是否存在缺陷,我也非常感激。
更新
是否有效,我对成本函数的工厂模式犹豫不决,涉及成本函数的配置/参数/细节。我可以为这个类系列分配一些假设和/或规范:它期望操作的对象,等等。我已经将各种选项传递给设计中的其他工厂类,我发现它增加了复杂性。
或许有必要对上下文进行一些额外的澄清:
我正在将此优化器用作应用程序中的模块,以便对数据进行建模。实际上,模型的细节被解析为AST并传递给Factory类,该类将参数传递给适用的模型类。
因此,优化器具有对模型本身的引用,可以在模型上调用Calculate(Iterator&)方法并期望Matrix作为返回值(fyi,Iterator是对参数Vector的引用)。 / p>
这部分很简单。然后我发现不那么简单的是确定如何处理返回的矩阵。当然,简单的成本函数可能只是最小二乘法。但我可以设想相对复杂的功能,它们本身可以参数化。我也可以处理这个问题,但我希望可能会有一种完全不同的方法 - 我无法想到的方法,这可能有助于简化我正在做的事情。
谢谢和亲切的问候,
什穆埃尔