TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Mato Milic
NA
7
0
How to eliminate duplicates; Genetic Algorithm
Mar 20 2011 11:08 AM
I was writing my thesis and got to a problem that i can't solve. I am writing about Genetic Algorithms with steady-state selection.
The problem is that after some iteration duplicates shows up; my question is how to remove these duplicates.
How can i compare some specific elements from an object? I tried with the function Equals() but didn't figured out how to set her up.
Example: i want that this repeats until the new object isn't the same as existing objects in class population:
public void permutationRecombination(Chromosome parent1, Chromosome parent2, Chromosome child1, Chromosome child2)
{
int cLen = parent1.genes.Length;
do{
int recomPoint = ga.rng.Next(cLen - 1);
int poc1 = 0, poc2 = 0;
bool nadjen;
// prvi dio (kopiranje gena)
for (int i = 0; i <= recomPoint; i++)
{
child1.genes[i] = parent1.genes[i].Clone();
child2.genes[i] = parent2.genes[i].Clone();
}
// drugi dio (umetanje gena koji nedostaju redoslijedom iz drugog roditelja)
for (int i = recomPoint + 1; i < cLen; i++)
{
// prvo dijete
nadjen = false;
for (int j = poc1; j < cLen; j++) // trazi preostale gene iz jednog u drugom
{
for (int k = recomPoint + 1; k < cLen; k++)
{
if (parent2.genes[j].ToInteger() == parent1.genes[k].ToInteger()) //trazi
{
child1.genes[i] = parent2.genes[j].Clone();
poc1 = j + 1;
nadjen = true;
}
}
if (nadjen) break;
}
//drugo dijete;
nadjen = false;
for (int j = poc2; j < cLen; j++) // trazi preostale gene iz jednog u drugom
{
for (int k = recomPoint + 1; k < cLen; k++)
{
if (parent1.genes[j].ToInteger() == parent2.genes[k].ToInteger()) //trazi
{
child2.genes[i] = parent1.genes[j].Clone();
poc2 = j + 1;
nadjen = true;
}
}
if (nadjen) break;
}
}
if(child1.genes==parent1.genes) MessageBox.Show("postoje jednaki");
} while (child1.Equals(parent1) || child2.Equals(parent2) || child1.Equals(parent2) || child2.Equals(parent1));
}
Attachment:
eliminationgeneticalgorithm.rar
Reply
Answers (
7
)
Compare Datetime from sql
Best VB.NET 2010 Book