【问题标题】:Optimal parameters for genetic algorithm遗传算法的最优参数
【发布时间】:2015-05-08 22:20:51
【问题描述】:

我正在解决 matlab 中的优化问题。优化需要 10 个变量,搜索空间由 (30*21*30*21*15*21*15*21*13*13= 6.6e12) 组合组成。

我目前为ga优化设置了以下参数。

    CrossoverFraction=0.4;
    PopulationSize=500;
    EliteCount=4;
    Generations=25;

其余值设置为从 gaoptimset 中获取的默认值,如下所示:

    options=gaoptimset('PopInitRange',Bound,'PopulationSize',PopulationSize,...
        'EliteCount',EliteCount, 'Generations',Generations,'StallGenL',25,...
        'Display','iter');

现在我知道搜索空间很大,但由于我必须为各种仪器运行此 GA 算法的次数,因此受到时间的限制,我无法增加 (PopulationSize*Generations)。我将优化作为单线程应用程序运行,因此我没有使用迁移选项。

请建议通过调整选项中的其他参数来提高我的问题的优化能力。也欢迎其他优化方式。

【问题讨论】:

    标签: algorithm matlab optimization genetic-algorithm


    【解决方案1】:

    要提高算法的速度,请尝试指定 10 个变量的界限。这迫使算法在较小的数据集中探索变量的值,并导致更快地收敛到合适的答案。您必须根据您的具体问题对这些值进行有根据的猜测。

    这让您有更多时间尝试增加其他参数,例如世代等。

    一种指定边界的方法是在调用 ga 函数时:

    nvars = 10; // 10 Variables
    lower = [0,0,0,0,0,0,0,0,0,0]; // Lower bounds for each variable
    upper = [10,10,10,10,10,10,10,10,10,10]; // Upper bounds for each variable
    
    [x fval] = ga(@objectiveFunction, nvars, [],[],[],[],lower, upper,[], integers, options)
    

    【讨论】:

    • 我在 gaoptimset 中的变量 Bound 内使用边界。每个变量都有上限和下限。
    • @amitchaudhary Bound 用于“PopInitRange”,我不确定,但似乎只是用于 init,而不是 bounds
    • @TiaanM 什么是“整数”?
    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2015-02-18
    • 2013-07-02
    • 1970-01-01
    • 2010-11-07
    • 2013-02-15
    相关资源
    最近更新 更多