Python Klausuraufgabe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FlavioSimonetti
User
Beiträge: 4
Registriert: Mittwoch 24. Juli 2019, 08:37

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:

Code: Alles auswählen

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.

Code: Alles auswählen

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.

Code: Alles auswählen

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

Bei der a) wurde korrigiert: "Wert richtig, aber fix" // keine ahnung was das bedeuten soll
und bei der b) "Werde kontinuierlich.... //danach kann ichs nicht lesen.

ich wäre für eine Antwort sehr dankbar
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Wie lautet denn die Frage, die wir beantworten sollen? :wink:
Hast du deinen Code mal durchlaufen lassen? Macht er das, was du von ihm erwartest?
FlavioSimonetti
User
Beiträge: 4
Registriert: Mittwoch 24. Juli 2019, 08:37

also man soll einfach die funktion fertig schreiben
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum hast du denn jetzt dafuer ein neues Thema begonnen?

Ich kann dazu nur das gleiche sagen, wie schon in dem ersten Thread.
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Beim ersten ist der Wert aber gar nicht richtig. Und wie gesagt, es geht sehr wohl um Syntax. Du musst ja eine Ahnung haben was das was Du da schreibst machen soll, und um das am Ende überprüfen zu können, kannst Du das einfach mal laufen lassen, und dann siehst Du ob es das macht was Du denkst. Dazu muss es aber lauffähig sein, und nicht irgend etwas was so ähnlich wie Python aussieht, von dem aber keiner ausser Dir weiss, was es bedeuten soll.

Das man das in einer schriftlichen Klausur, ohne vor einem Rechner zu sitzen, nicht syntaktisch 100% korrekt machen muss, solange derjenige der es bewertet, den Eindruck hat, dass schon das richtige gemeint sein wird – okay. Aber wir sind hier nicht in dieser Situation, und es macht keinen Sinn das Du nicht tatsächlich echten Code schreibst, und den auch *ausprobierst* und zwar *bevor* Du ihn hier in einer Frage präsentierst.

Und meine Gegenfrage aus dem anderen Thema zu diesem Thema steht auch noch: Was wie soll denn `child` am Ende aussehen und wie soll das zustande kommen? In Worten, möglichst präzise. Ohne diese Information kannst Du das nicht implementierten und/oder wir nicht sagen ob der Code dazu passt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@__blackjack__: 'child' soll vermutlich ein "genetisches Crossover" von zwei Sequenzen sein. Ist natürlich geraten, aber wenn der Korrekturkommentar mit "Werte kontinuierlich ..." beginnen täte, könnte er sogar passen.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Du willst also wissen, warum Dein Korrektor Dir für die Aufgaben Punkte abgezogen hat? Dazu befragst Du am besten Deinen Korrektor.

Wie __deets__ schon im anderen Beitrag geschrieben hat, erzeugst Du in a) nur eine Zahl und benutzt diese 8 mal, statt 8 verschiedene Zahlen zu erzeugen. Das könnte mit "fix" gemeint sein.

Bei b) kann ich auch nichts lesen.
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@kbr: Habe ich mir auch schon gedacht, aber wie soll das konkret bei den beiden ”DNA”s aussehen? Zufällig wählen? ”Reisverschluss”? Vordere Hälfte von einem und hintere Hälfte vom anderen? Ich würde halt gerne in Worten vom OP hören was er da machen will, und dann wie das zum gezeigten Code passen soll.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten