אופטימיזציה של כמה יעדים

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

כדי לבנות אסטרטגיה לחיפוש עם כמה יעדים, אפשר להשתמש בגישות הבאות:

  1. פונקציית יעד משולבת: גישה אחת לאופטימיזציה של כמה יעדים היא שימוש בפונקציית יעד משולבת:

    obj = w1 * in_stock_rate - w2 * inventory_level
    
  2. התייחסות ליעד אחד כמגבלה: גישה נוספת היא להתייחס ליעד אחד כמגבלה. האפשרות הזו שימושית לאופטימיזציה של מדד אחד, תוך שמירה על כך שהמדד השני לא ירד מתחת לסף מסוים.

    obj = in_stock_rate` # Optimize this
    
    # With: inventory_level <= budget (enforced as penalty where if inventory
    # level exceeds budget then a high negative value is returned)
    

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

  3. לכלול מדדים שונים כמדדים נפרדים במילון. הנה כמה שיקולים חשובים שקשורים לגישה הזו:

    • מומלץ להגביל את האופטימיזציה של כמה יעדים ל-3 עד 5 מדדים. אם יש יותר מדי מדדים, ההשוואה לפי פרטו נכשלת – כמעט כל תוכנית מובילה לפחות במדד אחד. האלגוריתם MAP Elites משקיע את רוב הזמן בפיתוח של הורים שמבצעים אופטימיזציה של מדדים טריוויאליים או מדדים עם רעשי רקע. כדי לצמצם את מספר המדדים ל-3 עד 5 מדדים משמעותיים, אפשר להשתמש בשיטות כמו צבירה, בחירה או PCA.

    • ציונים פרטניים לפי השוואה לשוק עלולים לגרום להתאמת יתר. העברת ציונים ספציפיים ל-5 מדדים יכולה להוביל להתאמת יתר בחלק מהמקרים, בעוד שהעברת הסכום המצטבר בלבד הניבה הכללה טובה יותר למדדים שלא נראו. אם הכללה חשובה, כדאי לצבור ציונים לפני שמעבירים אותם ל-AlphaEvolve, במקום לבצע אופטימיזציה לכל נקודת השוואה בנפרד.

כשמפעילים את התכונה הזו, AlphaEvolve עוקב אחרי חזית פרטו ו-MAP-Elites שומר את התוכנית הכי טובה לכל מדד. עם זאת, שילוב של ציונים משוקללים מאפשר נימוק וניפוי באגים פשוטים יותר.