לכל השואלים על פיטנס ודאבל - סדר בבלגן

מנהל: The Architect

golaniu
הודעות: 17
הצטרף: 21:55 04/12/2008

שליחה על ידי golaniu » 02:16 13/02/2009

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

בל"ל
הודעות: 41
הצטרף: 21:11 21/11/2008

Re: אבל

שליחה על ידי בל"ל » 03:23 13/02/2009

thelegend כתב:השיטה getFitness זה לא getter???
ואם היא צריכה לדעת כמו שאתה אומר על אינדיבידואל משהו אז אני צריך לעשות
( אינדיבידואל הוא בעל ערך מספרי)if ואם כן או לא מה אז הרי השיטה getFitness היא לא שיטה בוליאנית אז מה להחזיר ומה לעשות בהקשר הזה עם evaluate אני קצת מבולבל כנראה מההסבר באנגלית על מה שצריך לעשות או משהו כזה, אפשר קצת עזרה?
תודה
נכון, getFitness הוא getter. אבל כידוע setterים וgetterים נועדו לאפשר לנו לשלוט על הדרך בה מקבלים את הממברים של המחלקה שלנו
במקרה הספציפי הזה getFitness ממשת pattern מאד מאד פשוט שנקרא lazy
מה זה אומר ולמה להשתמש בזה?
קודם כל, הוגדר לנו (למיטב זכרוני בהקדמה של העבודה) שהבור ביצועים/זכרון כאן הוא הוא חישוב הfitness לכן המטרה שלנו, כדי לאפשר ריצה חלקה ומהירה ככל האפשר, הוא לדאוג שהfiitness יחושב אך ורק מתי שצריך ומינימום פעמים
לכן אנו משתמשים בlazy
מה זה אומר? זה אומר שאנו נשאיר את הערך לא מאותחל עד אותו הרגע שנצטרך אותו
עד אותו רגע הערך הזה מיותר וחבל שסתם נחשב אותו
לכן אנו מחכים שמישהו יקרא ל getFitness (מן הסתם אם הוא קרא למתודה הזאת אזי הוא צריך את הערך שהיא מחזירה) ואז נחשב את הערך של fitness

ועכשיו קצת פרקטיקה
בוא נתייחס רגע אל fitness כאל משתנה בוליאני אשר מצביו (כהקבלה ל true & false) יהיו NaN ולא NaN (או במילים - אותחל ולא אותחל)
המימוש של הlazy צריך להראות כך

אם fitness לא אותחל אזי חשב את fitness;
החזר fitness;

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

gata
הודעות: 88
הצטרף: 17:25 10/11/2007

שליחה על ידי gata » 12:15 13/02/2009

אני חושב שכדאי מאוד להפנים משפט שאולי לא כולם מכירים

מה שלא יהיה פשוט - פשוט לא יהיה.

בהצלחה

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

שליחה על ידי benny » 17:52 13/02/2009

מאיפה מביאים את כל התוספות האלו??
אני די בטוח שהייתי בכל השיעורים וההסברים על בניית ממשקים היה מתומצת מידי לעומת הדרישה שנבנה עבודה שכולה מסתמכת על ממשקים.. תודה לעוזרים בכל מקרה

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

יורי

שליחה על ידי thelegend » 00:38 14/02/2009

יורי בקוד התחתון יותר שכתבת בעמוד הקודם אין התיייחסות לאתחול של fitness כפי שמצויין במשימה 3 אז איך אני מאתחל את fitness שוב בתוך המחלקה clone כי הרי הם מבקשים שאני יאתחל את fitness ל not initialized???

yurib
הודעות: 207
הצטרף: 18:30 19/11/2008

שליחה על ידי yurib » 10:33 14/02/2009

התייחסתי לזה בהערה ("// copy fields spesific to MyObject")
אחרי שאתה קורא ל clone של מחלקת העל, אתה מקבל אובייקט חדש מאותו הטיפוס כמו האובייקט שלך (עשינו casting...) כאשר לשדות שקיימים במחלקת העל דאגה שיטת ה clone שלה, בשדות שמחלקת העל אינה יודעת להעתיק, אתה צריך לטפל "ידנית" כלומר או להעתיק אותם מהאובייקט הנוכחי או, כמו במקרה של העבודה שלנו, לתת להם איזשהו ערך ברירת מחדל.

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

שוב שלום

שליחה על ידי thelegend » 13:42 14/02/2009

מבוטל
נערך לאחרונה על ידי thelegend ב 19:15 14/02/2009, נערך פעם 1 בסך הכל.

thelegend
הודעות: 95
הצטרף: 21:02 15/12/2008

מה זה לעזעזל???

שליחה על ידי thelegend » 16:51 14/02/2009

מבוטל

vogel
הודעות: 23
הצטרף: 09:06 25/12/2008

clone?

שליחה על ידי vogel » 23:59 14/02/2009

Pay attention that in the cloned object, the fitness
should be reset to the “non-initialized” value.


הי, למיטב הבנתי, yurib למעשה טוען ש-clone הינו העתקה מדויקת של כל הפרמטרים של אותו אינדיבידואל. עם זאת, במשפט המצורף מעלה (שהועתק ממשימה זו) אני מבינה שלמעשה אנחנו צריכים בתוך clone לא להעתיק אחד לאחד את כל הפרמטרים של אינדיבידואל אלא אוטומטית לשים לו את הערך NaN. מכאן, אם הדבר נכון, לא ניתן להשתמש ב-clone במשימה 5 בה אנו מעוניינים לעשות שכפול של הprototype.

תודה מראש על ההבהרה.

הדס.

yurib
הודעות: 207
הצטרף: 18:30 19/11/2008

שליחה על ידי yurib » 00:52 15/02/2009

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

shlomz
הודעות: 28
הצטרף: 16:44 12/12/2008

שליחה על ידי shlomz » 14:11 16/02/2009

1.מישהו יכול בבקשה להסביר לי במשימה 4, איך אני משתמש ב selection לבנאי שלי?

omershv
הודעות: 2
הצטרף: 21:25 13/02/2009

שליחה על ידי omershv » 15:37 17/02/2009

אני לא הבנתי משהו אחד

הFITNESS הוא תמיד חיובי, אז יש סיבה לזה שאף אחד לא משתמש ב-1 (מינוס) בתור הערך ה"מיוחד" שלו?

אני לא מאמין שאני היחיד שחשב על זה, יש איזה חוק נגד זה?


כולם פה מסתבכים עם NAN וכאלה ולא בא לי לאבד נקודות על כך שכביכול "קיצרתי"

arik
הודעות: 1
הצטרף: 19:25 26/01/2009

Re: הסבר קצר על clone

שליחה על ידי arik » 22:02 19/02/2009

yurib כתב:איך נראה המימוש של clone() ? פשוט מאוד, אפשר ליצור אובייקט חדש מאותו הסוג ולהעתיק אליו את כל השדות, בד"כ נהוג לקרוא ל clone של מחלקת העל.

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

public class MyObject implements Cloneable {

  // all the fields and methods....

  public MyObject clone() {
    MyObject copy = null;
	try {
		copy = (MyObject)super.clone();
	} catch (CloneNotSupportedException e) {
		System.out.println(e.getMessage());
	}
    // copy the fields specific to MyObject
    return copy;
  }
}
}
ולסיכום, רק כדי לעודד אותכם קצת ולהראות שאלגוריתמיקה אבולוציונית יכולה להיות אפילו קצת מצחיקה: http://xkcd.com/534/ :)
עדיין לא ברור לי איזו מחלקה יוצרת את האובייקט. לפי השיטה שהצגת, נראה כי מי שמגדיר את האובייקט ויוצר אותו לראשונה בזיכרון הוא דווקא מחלקת העל שקוראת למחלקת העל וכן הלאה (מתי זה נעצר??). איך מחלקת העל יודעת ליצור את האובייקט מהסוג הנכון?

yurib
הודעות: 207
הצטרף: 18:30 19/11/2008

שליחה על ידי yurib » 23:05 19/02/2009

זה נעצר כשזה מגיע למחלקת העל הגדולה שבשמיים: Object :)
ה clone של Object יודע ליצור אובייקט חדש ולבצע העתקה שיטחית של שדות האובייקט שקורא לו. שדות שדורשים העתקה עמוקה הם באחריותך.

abirk
הודעות: 16
הצטרף: 21:47 13/12/2008

שליחה על ידי abirk » 02:04 21/02/2009

כשאתה רושם

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

copy = (MyObject)super.clone(); 
אתה בעצם מכניס אוביקט מטיפוס OBEJECT לתוך אובייקט מסוג ספציפי יותר MYOBJECT
זו לא אמורה להיות בעיה?
אם אני זוכר נכון בכיתה למדנו שאי אפשר לעשות את זה, רק להיפך- להכניס את MYOBJECT לתוך OBJECT

נעול

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