我正在解决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)。我将优化作为单线程应用程序运行,因此我没有使用迁移选项。
请通过调整选项中的其他参数来建议改善问题优化能力的方法。其他优化方法也很受欢迎。
答案 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)