# How can a phrase the constraint for Genetic Algorithms to generate data without duplicates?

3 views (last 30 days)
Daschulka on 24 Mar 2016
Commented: Daschulka on 31 Mar 2016
Dear Matlab community,
I am trying use interpolation within the function body to evaluated by the genetic algorithm.
The genetic algorithm shall generate data of 60 variables within lower and upper bounds to be taken as x- and y-values and is therefore reshaped as follows:
datap=reshape(datap,30,2);
The first column is taken as x-values and the second column as y-values for interpolation. The x-values therefore need to be unique and in increasing order. I just cannot figure out how I can phrase the constraint for the x-values to be unique before Matlab generates them. Hope someone can help!
That's the beginning of the function:
function y=cube2shape_3(datap)
% bounds
% ub=[0,linspace(3,3,28),1,linspace(3,3,29),0]
% lb=[linspace(0,0,29),1,linspace(1,1,20),linspace(0,0,10)]
datap=reshape(datap,30,2);
sort(datap(:,1))
%fit graph to data points
ffit=fitit(datap(:,1),datap(:,2));

Vidya Viswanathan on 30 Mar 2016
Hi,
As far as I understand, there is no direct option to remove duplication of data points in Genetic Algorithm. However, as a workaround, you could consider one of the two approaches listed below:
• The best option is to create an initial population by writing your own creation function without duplicate points.
• The second option is to cache/store the population. You can implement a simple strategy to create a cache inside the fitness function which can store the population evaluated in the past few generations. The size of the cache can be decided upfront so that it remains the same during the iterations. Using vectorized option will send all the population at once to the fitness function and that will be helpful.
If this does not address your query, you could consider contacting MathWorks Technical Support corresponding to the region you belong to using the following link:
Regards,
Vidya

#### 1 Comment

Daschulka on 31 Mar 2016
Hi Vidya,
many thanks for the reply, I will try!