AI-For-Beginners/translations/he/lessons/6-Other/23-MultiagentSystems
localizeflow[bot] c0566b76f0 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:14:00 +00:00
..
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:14:00 +00:00
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:14:00 +00:00

README.md

מערכות רב-סוכנים

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

שאלון לפני ההרצאה

תחום מערכות רב-סוכנים התפתח בתחום הבינה המלאכותית בשנות ה-90 כתגובה לצמיחת האינטרנט ומערכות מבוזרות. אחד מספרי הלימוד הקלאסיים בתחום הבינה המלאכותית, Artificial Intelligence: A Modern Approach, מתמקד בהיבט של בינה מלאכותית קלאסית מנקודת מבט של מערכות רב-סוכנים.

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

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

כיום מערכות רב-סוכנים משמשות במספר יישומים:

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

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

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

ב-NetLogo, ניתן ליצור צבים רבים באמצעות הפקודה create-turtles. לאחר מכן ניתן להורות לכל הצבים לבצע פעולות מסוימות (בדוגמה למטה - לנוע 10 נקודות קדימה):

create-turtles 10
ask turtles [
  forward 10
]

כמובן, זה לא מעניין כאשר כל הצבים עושים את אותו הדבר, ולכן ניתן להשתמש בפקודה ask לקבוצות של צבים, למשל, אלה שנמצאים בקרבת נקודה מסוימת. ניתן גם ליצור צבים מסוגים שונים (breeds) באמצעות הפקודה breed [cats cat]. כאן cat הוא שם של סוג, ויש צורך לציין גם את המילה ביחיד וגם ברבים, מכיוון שפקודות שונות משתמשות בצורות שונות לצורך בהירות.

לא נלמד את שפת NetLogo עצמה - אם אתם מעוניינים ללמוד יותר, תוכלו לבקר במשאב המצויין Beginner's Interactive NetLogo Dictionary.

ניתן להוריד ולהתקין את NetLogo כדי לנסות אותה.

ספריית מודלים

אחד הדברים הנהדרים ב-NetLogo הוא שהיא מכילה ספריית מודלים פעילים שניתן לנסות. גשו ל-File → Models Library, ותמצאו קטגוריות רבות של מודלים לבחירה.

ספריית מודלים של NetLogo

צילום מסך של ספריית המודלים מאת דמיטרי סושניקוב

ניתן לפתוח אחד מהמודלים, למשל Biology → Flocking.

עקרונות מרכזיים

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

מסך ראשי של NetLogo

צילום מסך מאת דמיטרי סושניקוב

במסך זה ניתן לראות:

  • את החלק Interface, הכולל:
    • את השדה הראשי, שבו כל הסוכנים חיים
    • בקרות שונות: כפתורים, מחוונים וכו'
    • גרפים שניתן להשתמש בהם להצגת פרמטרים של הסימולציה
  • את הלשונית Code, הכוללת את העורך שבו ניתן לכתוב תוכנית NetLogo

ברוב המקרים, הממשק יכלול כפתור Setup, שמאתחל את מצב הסימולציה, וכפתור Go, שמתחיל את הביצוע. אלה מטופלים על ידי מטפלים מתאימים בקוד שנראים כך:

to go [
...
]

העולם של NetLogo מורכב מהאובייקטים הבאים:

  • סוכנים (צבים) שיכולים לנוע בשדה ולעשות משהו. ניתן להורות לסוכנים באמצעות התחביר ask turtles [...], והקוד בסוגריים מבוצע על ידי כל הסוכנים במצב turtle mode.
  • משבצות הן אזורים מרובעים בשדה שעליהם הסוכנים חיים. ניתן להתייחס לכל הסוכנים באותה משבצת, או לשנות צבעי משבצות ותכונות אחרות. ניתן גם להשתמש ב-ask patches כדי להורות למשבצות לבצע פעולות.
  • משקיף הוא סוכן ייחודי ששולט בעולם. כל מטפלי הכפתורים מבוצעים במצב observer mode.

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

התנהגות להקה

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

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

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

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

מודלים נוספים לצפייה

ישנם עוד כמה מודלים מעניינים שניתן להתנסות בהם:

  • Art → Fireworks מציג כיצד זיקוקי דינור יכולים להיחשב כהתנהגות קולקטיבית של זרמי אש יחידים
  • Social Science → Traffic Basic ו-Social Science → Traffic Grid מציגים מודל של תנועה עירונית ב-1D וב-2D Grid עם או בלי רמזורים. כל מכונית בסימולציה פועלת לפי הכללים הבאים:
    • אם השטח לפניה ריק - להאיץ (עד למהירות מקסימלית מסוימת)
    • אם היא רואה מכשול לפניה - לבלום (ניתן להתאים עד כמה רחוק הנהג יכול לראות)
  • Social Science → Party מציג כיצד אנשים מתאגדים יחד במהלך מסיבת קוקטייל. ניתן למצוא את השילוב של פרמטרים שמוביל לעלייה המהירה ביותר באושר הקבוצה.

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

סוכנים מתכננים

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

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

כדי לעשות זאת, סוכנים צריכים לתקשר. לצורך תקשורת מוצלחת הם צריכים:

  • שפות סטנדרטיות להחלפת ידע, כגון Knowledge Interchange Format (KIF) ו-Knowledge Query and Manipulation Language (KQML). שפות אלו מבוססות על תיאוריית פעולות דיבור.
  • שפות אלו צריכות לכלול גם פרוטוקולים למשא ומתן, המבוססים על סוגי מכרזים שונים.
  • אונטולוגיה משותפת לשימוש, כך שהם מתייחסים לאותם מושגים ומבינים את משמעותם
  • דרך לגלות מה סוכנים שונים יכולים לעשות, גם כן מבוססת על סוג כלשהו של אונטולוגיה

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

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

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

סיכום

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

🚀 אתגר

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

שאלון לאחר ההרצאה

סקירה ולימוד עצמי

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

מטלת NetLogo