בעייה עם שמירת ה-INDIVIDUALS ל-POPULAYION

מנהל: The Architect

נעול
olgasib
הודעות: 44
הצטרף: 20:25 26/11/2008

בעייה עם שמירת ה-INDIVIDUALS ל-POPULAYION

שליחה על ידי olgasib » 22:06 16/02/2009

קוד: בחירת הכל

for (int i=0; i<this.pop.length; i++){
			this.pop[i]=(Individual)(this.selection.reproduce(this.pop).clone());
System.out.println("pop["+i+"] "+this.pop[i].getFitness());
		}//for

for (int j=0; j<this.pop.length; j++)
			System.out.println("pop["+j+"] "+this.pop[j].getFitness());
למה אני מקבלת פלט שונה על המסך עבור אותן הדפסות?
בתוך הלולאה הראשונה אני מקבלת פלט רצוי,
אבל!!!!!!!!!
בלולאה השניה הוא מדפיס לי את הערך האחרון שקייס במערך.
למה?

תודה מראש!!!!
Your advertisments could be here

druck
הודעות: 10
הצטרף: 13:01 02/02/2009
מיקום: סתריה

שליחה על ידי druck » 08:37 17/02/2009

נשמע לי כמו תקלה של הגדרת סוג מערך אבל אצטרך להעיף מבט בכל התוכנה ומיקומי הלולאות.
אגב אני לא מתרגל, פשוט מבין.
או CASTING ביצירת הCLONES. (צויין בעבודה שמותר להחזיר אוביקט יותר ממוקד מאשר OBJECT.)
יונתן דרוק - מדעי המחשב 08

olgasib
הודעות: 44
הצטרף: 20:25 26/11/2008

שליחה על ידי olgasib » 11:56 17/02/2009

גם ככה אותו דבר

קוד: בחירת הכל

//Creating a new Generation
		for (int i=0; i<this.pop.length; i++){
			this.pop[i]=(this.selection.reproduce(this.pop));
			System.out.println("pop["+i+"] "+this.pop[i].getFitness());
		}//for

for (int j=0; j<this.pop.length; j++)
			System.out.println("pop["+j+"] "+this.pop[j].getFitness());

CLONE מחזיר אצלי INDIVIDUAL
Your advertisments could be here

nettaka
הודעות: 20
הצטרף: 00:29 10/12/2008

שליחה על ידי nettaka » 12:25 17/02/2009

זה קורה גם אצלי...
כשאני יוצרת לראשונה מערך שבו כל אינדיבידואל מקבל גנום חדש, אז באמת כל האינדיבידואלים שונים והפיטנס שלהם שונה והכל בסדר,
כשאני עוברת שוב על אותו מערך - כל האינדיבידואלים מכילים את הגנום (ובהתאמה את הפיטנס) של האיבר האחרון במערך...

למה זה קורה..? שיחקתי עם הקלון, וקאסטינג בערך בכל מקום אפשרי...

תודה!!

yinongo
הודעות: 35
הצטרף: 18:47 25/11/2008

שליחה על ידי yinongo » 19:49 17/02/2009

שימו לב אם שכשאתם משתמשים ב- clone של object, הוא כנראה מעתיק לכם את הכתובת של האינדיוידואל ואז כל האוכלוסיה שלכם מקושרת לאותו אינדיוידואל מסכן.... כל שינוי עליו משנה בעצם את כל האוכלוסיה שלכם (שהיא המון מצביעים לאותה הכתובת).

benny
הודעות: 81
הצטרף: 22:27 29/11/2008

שליחה על ידי benny » 21:50 17/02/2009

קורה גם לי.. אני משנה בclone את הערך של הפיטנס אבל זה מעתיק לי אותו ערך לכולם...

nettaka
הודעות: 20
הצטרף: 00:29 10/12/2008

שליחה על ידי nettaka » 21:53 17/02/2009

זה כנראה נכון, זה ההסבר ההגיוני, אז הקלון מצביע לי תמיד על אותו אינדיבידואל...
איך אני נמנעת מזה?..
בקלון אני עושה לsuper.clone קאסטינג לIndividual.. אבל אם זה לא מייצר אובייקט אינדיבידואל חדש, ואני לא יכולה לעשות new לאינדיבידואל, אז איך מייצרים אחד חדש?..
הקונסטרקטור היחיד שיש לי בקלאס אינדיבידואל הוא קונסטרקטור ריק..

תודה..

yinongo
הודעות: 35
הצטרף: 18:47 25/11/2008

שליחה על ידי yinongo » 02:26 18/02/2009

ב- clone של אינדיוידואל את לא יכולה לעשות יותר מידי באמת... חוץ מלקרוא ל clone.object
אבל, מה עם clone של subset? הריי שם כבר כן ניתן ליצור subsetindividual חדש....

קוד: בחירת הכל

SubsetSumIndividual Cloned = new SubsetSumIndividual(values,sum);

.
תראי, אני לא מומחה... וכל מה שאני אומר כדאי לבדוק ואני גם לא רוצה להגיד יותר מידי דברים שעלולים אולי להטעות... אז קחי הכל בערבון מוגבל...

בגדול, אני פשוט דרסתי בבן (subset) את הclone של האבא(individual)...
בהצלחה

olgasib
הודעות: 44
הצטרף: 20:25 26/11/2008

שליחה על ידי olgasib » 12:28 18/02/2009

חברה!!!! תבדקו את ה-CLONE של INDIVIDUAL!!!!!!!!

:!: :!: :!: הוא חייב!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! חייב!!! חייב!!!! :!: :!: :!:

להתיק את השדה של FITNESS גם כן על ידי EVALUATE

זה פתר לי חלקית את הבעיה!!!!

אז מכאן השאלה למתרגל... איך זה שראית את ה CLONE שלי ואמרת שהוא בסדר?
הרי זה הקוד של CLONE הוא 5.5 שורות....

אבל תודה על העזרה בכל מקרה....
Your advertisments could be here

נעול

חזור אל “- מבוא למדעי המחשב”