2016-04-16 6 views
0

Ich brauche Hilfe in Matlab: Ich muss herausfinden, wie Crossover zwei Sequenzen für genetische Alghorithmus in FlowShop, z.Genetischer Algorithmus für Flow-Shop Planung

1. sequence = 1 5 4 7 3 2 9 8 10 6

2. sequence = 7 8 9 10 5 4 2 1 3 6

nach crossover sollten die off-Federn sein

Nachkommen 1 = 1 5 4 7 3 2 8 9 10 6

Nachkommen 2 = 7 8 9 10 1 5 4 3 2 6

Crossover sollte so sein, dass sich jede Zahl in der Nachkommenfolge nicht wiederholt. Kann mir jemand sagen, wie ich das mache?

+1

Das von Ihnen angegebene Beispiel ist nicht sehr klar. Die Zahl "7" wird sowohl in der ersten als auch in der zweiten Nachkommenschaft wiederholt. – Alessiox

+0

@Alessiox Ich glaube, dass sie meint, dass es eine andere Permutation der Eingaben ist, in der keiner der Werte von einem am selben * Ort * ist wie bei den Nachkommen. – Suever

+0

Alessiox, das wurde versehentlich eingegeben, danke für die Erwähnung, ich entferne die wiederholte Nummer in jedem Nachkommen, – sarah

Antwort

0

Für die Permutationscodierung sind eine Reihe bestehender Übergänge definiert. Unter ihnen wäre die folgende nützlich für Sie:

  • Cyclic Crossover
  • teilweise Crossover Matched
  • Uniform ähnliche Crossover
  • Position-basierte Crossover

Dieses Crossover Ziel der Erhaltung Position des Jobs in der Permutation. Sie können Implementierungen in C# im PermutationEncoding-Plugin von HeuristicLab finden. Durchsuchen Sie die Quelldateien, und Sie finden auch Verweise auf wissenschaftliche Artikel, die diese Überschneidungen beschreiben.