Coder Social home page Coder Social logo

添加并行计算示例 about geatpy HOT 3 CLOSED

geatpy-dev avatar geatpy-dev commented on July 17, 2024
添加并行计算示例

from geatpy.

Comments (3)

1061655504 avatar 1061655504 commented on July 17, 2024

在进行多目标问题时,如问题规模变大需要则并行计算来提高运行效率。据我所知新版本的geatpy支持并行计算。可否添加一个附带并行计算代码的例子供大家参考学习?谢谢!

您好!如果要添加并行计算,需要在aimFunc()里面调用一些外部并行库(推荐gevent、multiprocessing等)来并行地计算各个个体的目标函数值。(如果可以矩阵化计算所有个体的目标函数值,那么建议使用矩阵化计算)。难度不大的,只需把种群所有个体拆分成若干份,然后利用外部并行库并行地计算各部分个体的目标函数值即可。具体如何调用并行库,可以网上搜索gevent、multiprocessing等的文档或教程,有很多经典易学的案例代码。

from geatpy.

xrzalreadytaken avatar xrzalreadytaken commented on July 17, 2024

在进行多目标问题时,如问题规模变大需要则并行计算来提高运行效率。据我所知新版本的geatpy支持并行计算。可否添加一个附带并行计算代码的例子供大家参考学习?谢谢!

您好!如果要添加并行计算,需要在aimFunc()里面调用一些外部并行库(推荐gevent、multiprocessing等)来并行地计算各个个体的目标函数值。(如果可以矩阵化计算所有个体的目标函数值,那么建议使用矩阵化计算)。难度不大的,只需把种群所有个体拆分成若干份,然后利用外部并行库并行地计算各部分个体的目标函数值即可。具体如何调用并行库,可以网上搜索gevent、multiprocessing等的文档或教程,有很多经典易学的案例代码。

谢谢回答。经过我的尝试与对比,发现对于种群规模很大,最大迭代次数不变的情况下,这种方式的多进程的确可以提高程序的运行效率,如种群数=4000。但是对于相对较小的种群数,如种群数=200,多进程的计算效率反而不如单进程的效果。 不知道这样的逻辑是否正确,还是可能我的多进程程序写的有问题? 谢谢!

from geatpy.

1061655504 avatar 1061655504 commented on July 17, 2024

@xrzalreadytaken 这个是多进程的公有特性。多进程本身会比多线程要耗费更多的额外开销,因此一般当总的计算量很大时才考虑用多进程(不用多线程是因为python的GIL限制,如果能绕开GIL那就用多线程,额外开销比多进程小一些)。种群规模大会导致总的计算量大;还有另一种情况:如果种群规模较小,但单个个体计算目标函数值时计算量很大,那么也会导致总的计算量大(比如用进化算法优化神经网络超参的时候),这两种情况可以用多进程或者直接用CUDA进行GPU计算来加速。

from geatpy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.