遗传算法的最优参数

时间:2015-03-07 09:56:00

标签: algorithm matlab optimization genetic-algorithm

我正在解决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)。我将优化作为单线程应用程序运行,因此我没有使用迁移选项。

请通过调整选项中的其他参数来建议改善问题优化能力的方法。其他优化方法也很受欢迎。

1 个答案:

答案 0 :(得分: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)