0
votes

I am solving an optimization problem in matlab. The optimization takes for 10 variables with search space consisting of (30*21*30*21*15*21*15*21*13*13= 6.6e12) combinations.

I have currently set the following parameters for ga optimization.

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

Rest of the values are set to default taken from gaoptimset as follows :

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

Now I understand the search space is large but given the limitation by time due to number of times I have to run this GA algorithm for various instruments, I cannot increase (PopulationSize*Generations). I am running the optimization as a single threaded application, hence I am not using migration options.

Please suggest ways to improve the optimisation capability of my problem by tweaking other parameters in the options. Alternative ways of optimization are also welcome.

1

1 Answers

1
votes

To increase the speed of the algorithm, try specifying bounds of your 10 variables. This forces the algorithm to explore values for your variables within a smaller data set and leads to a faster convergence to a suitable answer. You will have to make educated guesses for these values based on your specific problem.

This leaves you with additional time to try and increase other parameters such as the generations etc.

One way to specify bounds is when calling the ga function:

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)