目前,我们有一个运行了相当长一段时间的遗传算法 (GA
),我认为我们可以使用 Fabric
分发它,因为理论上它非常适合作为微服务。这是我第一次尝试 Fabric。
我们应该怎么做呢?我们应该有一个 stateful service运行并聚合其他 actors任务 ?它有点类似于这个项目:https://github.com/Azure-Samples/service-fabric-dotnet-data-streaming-websockets
我不太确定该怎么做,而且关于这个主题的记录也很少。这个 GA 非常广泛,我们的目标是分布它的计算。
最佳答案
我使用 Service Fabric 实现了一个基本的遗传算法应用程序作为应用程序构建练习。不确定我的方法是否是适合您场景的最佳方法,但我可以描述我所做的事情。
我的应用程序仅包含有状态和无状态的参与者。我有一个处理器有状态参与者,它提供所有管理任务并驱动算法。因为它是有状态的,所以它保留了所产生的每一代的所有遗传状态的历史。我还有一个 FitnessEvalTask 无状态 Actor 。该任务仅负责评估实体的适应性。它的输入是基因表示,输出是适应度值。这个想法是,你会以很高的速度旋转这个 Actor 的实例,并且它们会被适本地分配。负责驱动算法的处理器应用程序将创建 FitnessEvalTask actor 的必要实例并提供其输入,让它们报告其适应度值,然后进行必要的处理。我的客户端进程只是一个简单的控制台应用程序,它将与处理器参与者通信以启动算法并执行任何必要的管理任务。
关于c# - 为了解决 GA 问题而构建可靠的服务与 Actor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453485/