Hilfe bei folgender Aufgabe
Verfasst: Mittwoch 24. Juli 2019, 09:03
Hallo Leute könnte ihr mir bitte bei folgender Aufgabe helfen, bei der schon 2,5 von 6 Punkten erreicht wurden. Es geht hier aber nicht um Syntaxfehler, sondern nur um die Logik. Ich wäre dafür sehr dankbar. Also 2 Teilaufgaben:
Gegeben ein kontuinuierliches Optimierungsproblem mit acht Variablen x0.... x7, wobei für alle x gilt: 0 <= x <100. Wir programmieren nun die Suchoperatoren für einen metaheuristischen Suchalgorithmus(bspw einen Evolutionären Algorithmus), der möglichst gute Lösungskandidaten für dieses Optimierungsproblem finden soll. In Python sieht ein möglicher Lösungskandidat, der eine Belegung aller acht Variablen bestimmt, so aus:
x = [42.0 for _ in Range (8)]
Bei der weiteren Implementierung können Sie auch auf eine Python Funktion prng() zurückgreifen, die eine Zufallszahl prng() Element [0,0; 1,0] liefert.
a) Ein Migrationsoperator erzeugt rein zufällig einen neuen Lösungskandidaten( genannt "new-indivual") aus dem kompletten Suchraum. Implementieren sie einen solchen Operator in Python.
def migrate():
// jetzt kommt meine LSG
n = (prng()*100) (int)
x = [n for _inrange(8)]
new individual = x[0]
//meine LSG ist jetz zuende, ich hatte hier nur 1,5 von 3 pkt
return new _individual:
b) Ein Rekombinationsoperator erzeugt aus zwei Lösungskandidaten parent1, parent2 einen neuene Lösungskandidaten(genannt child) Beim Crossover werden dabei Muster bzew SubSTrukturen aus beiden Elternteilen( parent1 und parent2 ) übernommen. Implementieren Sie einen Rekombinationsoperator mit Crossover in Python.
def recombiine (parent1, parent2):
//ANFANG MEINER LSG
child[]
for x in parent1:
for y in parent2:
if x == y :
child.*append(x)
//ende meiner LSG
return child
Gegeben ein kontuinuierliches Optimierungsproblem mit acht Variablen x0.... x7, wobei für alle x gilt: 0 <= x <100. Wir programmieren nun die Suchoperatoren für einen metaheuristischen Suchalgorithmus(bspw einen Evolutionären Algorithmus), der möglichst gute Lösungskandidaten für dieses Optimierungsproblem finden soll. In Python sieht ein möglicher Lösungskandidat, der eine Belegung aller acht Variablen bestimmt, so aus:
x = [42.0 for _ in Range (8)]
Bei der weiteren Implementierung können Sie auch auf eine Python Funktion prng() zurückgreifen, die eine Zufallszahl prng() Element [0,0; 1,0] liefert.
a) Ein Migrationsoperator erzeugt rein zufällig einen neuen Lösungskandidaten( genannt "new-indivual") aus dem kompletten Suchraum. Implementieren sie einen solchen Operator in Python.
def migrate():
// jetzt kommt meine LSG
n = (prng()*100) (int)
x = [n for _inrange(8)]
new individual = x[0]
//meine LSG ist jetz zuende, ich hatte hier nur 1,5 von 3 pkt
return new _individual:
b) Ein Rekombinationsoperator erzeugt aus zwei Lösungskandidaten parent1, parent2 einen neuene Lösungskandidaten(genannt child) Beim Crossover werden dabei Muster bzew SubSTrukturen aus beiden Elternteilen( parent1 und parent2 ) übernommen. Implementieren Sie einen Rekombinationsoperator mit Crossover in Python.
def recombiine (parent1, parent2):
//ANFANG MEINER LSG
child[]
for x in parent1:
for y in parent2:
if x == y :
child.*append(x)
//ende meiner LSG
return child