49
Hungarian Algorithm ניתוח ותכנון מער כות מידע א' מערכת מידע לפתרון בעיות השמה עבור ד" ר גבי פינטוUser Interface Michal cohen, Asher halili, Itay levi, Guy bar-sheshet, Bilga damir, Barak goldkorn עבור ד" ר גבי פינטו

Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

0

Hungarian Algorithm

'כות מידע אניתוח ותכנון מער

מערכת מידע לפתרון בעיות השמה

ר "עבור ד

גבי פינטו

User Interface Michal cohen, Asher halili, Itay levi, Guy bar-sheshet, Bilga damir, Barak goldkorn

ר גבי פינטו"עבור ד

Page 2: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

1

תקציר

תוך התאמה לצורכי המשק וחתירה מתמדת , תחום התעשייה והניהול הוא תחום דינמי שממשיך ומתפתח

.בייצור פריון העבודהלייעול ושיפור התהליכים הארגוניים והגדלת

בעיות , (Assignment Problem)אחד מתפקידי מהנדס תעשיה וניהול בארגונים הוא פתרון בעיות השמה

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

בצורה המהירה על המהנדס לפעול, על מנת לפתור בעיות מסוג זה. רווח מקסימאלי אועלות מינימאלית

.אופטימאליהפתרון ה ביותר כך שינתן מדויקתוה

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

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

:הבאותהעיקריות בשל הסיבות אינה יעילה זושיטת עבודה .עד כהנהוגה ההעבודה

.דורשים זמן רבהחישוביים ידניים - זמן פתרון הבעיה

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

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

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

.למשתמש וידידותית

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

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

.אשר עבורם מהווה מערכת זו כלי עזר חשוב

הקמנו ופיתחנו מערכת מידע לפתרון בעיית השמה לכל מהנדס תעשיה וניהול, בהתאם לאמור לעיל

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

.לארגונים ותיושם בפועל

Page 3: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

2

תוכן עניינים

\ .

3..................................................................................................................מבוא .1

4..................................................................................................................ייזום .2

9.......................................................................................................אפיון ראשוני .3

13.....................................................................................................ניתוח מערכת .4

15...................................................................................................עיצוב המערכת .5

18.....................................................................................בדיקות והטמעה, תכנות .6

23...............................................................................................................סיכום .7

24......................................................................................................ביבליוגרפיה .8

25.............................................................................................................נספחים .9

Page 4: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

3

מבוא

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

באחד לי ממוחשב למהנדס תעשיה וניהול בעבודתואו תשמש ככ/הלמידה של סטודנט לתעשייה וניהול ו

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

(Assignment Problem .)

כך שכל משאב מוקצה באופן יחיד לפעילות , פעילויות שונותמשאבים ל מתמקדת בהקצאת השמההבעיית

המטרה העיקרית היא לקבוע באיזה אופן .עבורם עלות או רווח המיוחסים לאותו שילובמסוימת וקיימים

מינימאלי או הרווח יהיה מקסימאלי ובכך להגיע לפתרון לבצע את כל ההשמות כך שסך העלות יהיה יש

.אופטימאלי עבור בעיה זו

רכת המע ם ההונגריהאלגוריתהשמה ובאמצעות ההמערכת תקבל מהמשתמש נתונים כמותיים של בעיית

(.הקצה שנלקחו בחשבון יגם במקרי)תחזיר את הפתרון האופטימאלי

דעתנו מערכת זו יכולה לסייע רבות למהנדסי תעשיה וניהול הן עניותבחרנו בבעיה מסוג זה משום של

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

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

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

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

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

.בנייר

המערכת יתוכננו במקביל אשר במהלך פיתוח 'V-מודל ה'המתודולוגיה על פיה יתבצע הפרויקט היא

.מראשובסיום כתיבת הקוד יתבצעו כל הבדיקות אשר תוכננו הבדיקות הנדרשות לביצוע בעתיד

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

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

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

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

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

.בעיותעזר לסטודנטים אשר מתמודדים עם חישובים רבים לפתרון

.יקטתהנה ממערכת המידע ומהצגת הפרוש מקווים

Page 5: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

4

ייזום

המצב הקיים

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

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

(.אלגוריתם הונגרי

ית של ארגון בו יכול להימצא מהנדס תעשיה וניהול סקירה כלל

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

תפוקהלמטרה להגביר את קצב ה ןאשר שמו לה, חדשות מחקריצר פיתוח שיטות פירמותאשר צצו ב

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

.כן תחום זה הינו הנדסי-ועל, ומדעיים

, התרחב התחום לא רק לענף היצרני, שירותיםעם התפתחות התיעוש ויצירת פירמות העוסקות גם במתן

הפתרונות אשר התאימו לתהליכים יצרניים הוסבו גם לתחומי השירות . ארגוניכי אם גם לענף הפנים

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

.הפירמה לרווחיותוכפועל יוצא

י המשק וחתירה מתמדת תוך התאמה לצורכ, תחום התעשייה והניהול הוא תחום דינמי שממשיך ומתפתח

.צורביי פריון העבודהלייעול ושיפור התהליכים הארגוניים והגדלת

סקירת מערכת המידע הקיימת בארגונים

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

בה מקצים את המשאבים בין הפעילויות השונות על בסיס בעיה - (Assignment Problem)בעיית השמה

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

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

. יהיה מינימאלי או הרווח יהיה מקסימאלי העלות

התהליך שמתבצע כיום

חישוב מתבצע באמצעות האלגוריתם ההונגרי ה בעיית השמה כאשר מהנדס תעשיה וניהול מתמודד עם

.ובעזרת מחשבון (על ידי נייר וכלי כתיבה) באופן ידני

בעיות בתפקוד הארגונים ומערכת המידע

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

Page 6: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

5

בעיות בתהליך הידני

.לא ידידותי למשתמש, ומצריך זמן רב לביצוע החישובמאוד התהליך ארוך .1

כל טעות קטנה בחישובים מובילה לטעות בפתרון הסופי כך ש, י חישובים רבים"התהליך נעשה ע .2

כספי אובדןטעות בחישובים יכולה להוביל לטעות ביישום ובסופו של דבר להוביל ל. של הבעיה

. הנגרם עקב יישום הפתרון המוטעה

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

הינו N -במקרים בהם ה(. NXN)ת השמה אשר מורכבות ממספר רב של גורמים קיימות בעיו .3

.עקב מורכבות הבעיה ,המהנדס לא יוכל לחשב את הבעיה ידנית, מספר גדול

.מדובר בהיבט סביבתי. בעקבות החישובים הידניים נעשה שימוש רב בדפים -היבט נוסף .4

מדדי הביצוע הכמותיים

מצב בעיות השמה 10-טעויות ב 4 מצב מצוי במדד. יית ההשמהכמות הטעויות בזמן חישוב בע

.טעויות 0 -רצוי

:עד כמה חישוב בעיות ההשמה הוא מוטעה

מספר הטעויות בביצוע החישובים ליחידת זמן

מספר בעיות השמה ליחידת זמן

בעיהלבממוצע שעה -מצב מצוי במדד . זמן ביצוע לחישוב בעיית ההשמה שנמדד בזמן לבעיה .

.שיפור של שבעים וחמישה אחוז -יעד במדד . בממוצערבע שעה לבעיה –מצב רצוי

:עד כמה חישוב בעיות ההשמה הוא קצר ויעיל

( בדקות ) זמן החישוב של בעיית השמה הרצוי

זמן החישוב של בעיית השמה בממוצע המתרחש בפועל

בל ציון למדדיםהשאלות עליהן נענה על מנת לק

?בעיות השמה 10מהו מספר הטעויות שנעשו בעת חישוב .1

?מהו הזמן המוקדש לחישוב בעיית השמה .2

X100

X100

Page 7: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

6

י משא ומתן"השיפור המוצע ע

מטרות מערכת המידע המוצעת וסדרי עדיפות

.זמן למהנדס ולארגון רב של חסכון .1

.נוחות, ממשק ידידותי למשתמש .2

.כון בכסףובכך חס, מניעת טעויות חישוב .3

.יצירת אופציית חישובי בעיות השמה עם משאבים ומשימות רבים .4

.סדר -אפשרות שמירה ושימוש בנתונים קודמים .5

.י שימוש במחשוב ולא בניירות לחישוב"שמירה על איכות הסביבה ע .6

תועלות

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

וכתוצאה מכך צפי לירידה באחוזי הטעויותשיפור אמצעי החישוב.

ומורכבות המחשוב מאפשר פתרון של בעיות ארוכות. הגדלת מגוון הבעיות האפשריות לפתרון.

שמירה על איכות הסביבה באמצעות שימוש במחשב ולא בניירת.

חסכון בכסף כתוצאה מירידה בכמות הטעויות.

חסכון בזמן כתוצאה מביצוע חישובים דרך המחשב.

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

.לעידן בו אנו חיים ומהווה הכרח

תיאור מערכת המידע הדרושה

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

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

(.BLUE-Jסביבת עבודה )המערכת למשתמשים תהיה גבוהה מכיוון שמדובר במערכת נגישה

Page 8: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

7

מתודולוגיית הפיתוח של המערכת

)Shape Model) -Vוי בצורת מודל

יתוח המערכת הכולל כתיבת קוד אשר פ .המערכת פיתוח לשלבי במקביל מתוכננות המערכת בדיקות

(. מקרים לא סטנדרטים+ מקרי קצה) וכנן במקביל עם הבדיקות הנדרשות לביצוע בעתידת

:מודל זה נמצא כמודל המתאים לעבודתנו מהסיבות הבאות

לק בתוכנה כל ח. כבר בשלבים הראשונים של הפיתוח הצגנו את התכנון של בחינת איכות התוכנה .1

.כל שלב נבחן ונבדק באופן שוטף. נבדק

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

.דבר זה התאים לדרך הפעולה שלנו, פעולה של האיכות

.ללא שינויים ,מדובר באלגוריתם אשר פועל אף במקרי קיצון. אין שינויים בדרישות הלקוחות .3

.אין מצב של סיכון עתידי .4

.מושקע זמן רב עבור בדיקות מערכת אשר מאשרות את תקינותה .5

. כלומר כל הדרישות ברורות וידועות מראש, הדרישות מובנות .6

.הפתרון ידוע .7

הפעלה

ותחזוקה

-בדיקות קבלה

שהמערכת

בסביבה טבעית

-בדיקה/ר'אינטג

שהתהליכים

מתחברים

-בדיקות יחידה

כל פונקציה

פועלת כהלכה

הפיכת -קידוד

האלגוריתם

לקוד

-עיצוב מפורט

, תפריט, חומרה

פלט/מסכי קלט

איך -עיצוב

המערכת תבצע

את התהליכים

מה -ניתוח

המערכת צריכה

בצעל

דרישותהפירוט

מהמערכת

Page 9: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

8

המצב המשופר

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

:וכלי עזר לסטודנטים בפתרון בעיות השמה רכת המידע המיועדת למהנדס תעשיה וניהולמע -המשופר

המערכת תקבל מהמשתמש נתונים כמותיים של בעיית השמה ובאמצעות האלגוריתם ההונגרי המערכת

(.גם במקרים חריגים)תחזיר את הפתרון האופטימאלי

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

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

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

.אכן עומדת ביעדים שהגדרנו

. מים את הצפי ואף משופרים יותרהמדדים אכן מקיי

סאפ מספר הטעויות הוא.

דקות בממוצע 10 -כ: זמן הפתרון והחישוב קוצר אף מעבר למשוער.

Page 10: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

9

אפיון ראשוני

מטרות מערכת המידע הנגזרות ממטרות הארגון ועדיפויות

(1998שובל " )מטרות מערכת המידע נגזרות ממטרות הארגון שהיא משרתת"

מטרה כמותית מטרות הארגון הנגזרת ממטרות הארגון

מטרה איכותנית עדיפות הנגזרת ממטרות הארגון

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

יפתור בצורה ת בעיות אופטימאלי

.השמה

מתן פתרון לכל בעיות

MAXההשמה מסוג ובעיות השמה מסוג

MIN.

לקבוע באיזה אופן לבצע

את כל ההשמות כך שהעלות תהיה

או רווח מינימאלית מקסימאלי

1

אופטימאלי מתן פתרון

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

חסכון כספי

פתרון מדויק ללא טעויות 2 שובחי

לדאוג שהמערכת תטפל 30X30במקרים של עד

מענה איכותי ופשוט מתן . .סבוכה לבעיה

3

מתן פתרון אופטימאלי

, החוסך בשעות עובד משמע חסכון כספי

ליצור סביבה ידידותית הקצה ופשוטה למשתמש

שיזין את הנתונים

4

משמע , חיסכון בנייר חיסכון בכסף

כון חיס, היבט סביבתיתרומה לאיכות , בנייר

הסביבה5

:קביעת גבולות המערכת

מה היא , מה היא כוללת, לקבוע את היקפה, כלומר, בתכנון מערכת מידע יש לתחום את גבולות המערכת"

(.1998שובל " )אינה כוללת ומהן המערכות האחרות שהיא קשורה אליהן

:המערכת כוללת

סביבתUI (User Interface )לכל המאפשרים ברורים פלט ותפריטים, קלט מסכיוללת נוחה הכ

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

מאגר נתונים השומר את פתרון הבעיות שכבר נפתרו.

ההשמה בעיות מענה לכל סוגיMAX ו-MIN 30עד מסדר גודלX30 (900 ערכים.)

ה האנגליתתפריטים ומסכים בשפ.

תפריטHELP להזין בשני המסכים בצורה יש המדריך כיצד יש להשתמש במערכת ואילו נתונים

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

Page 11: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

10

רווחאלי עם תוספת כמותית המבטאת עלות מינימאלית או ח המפרט פתרון אופטימ"דו

.מקסימאלי

לשמירת הפתרון ולהדפסתואפשרות.

:ת אינה כוללתהמערכ

טיפול בבעיותMAX ו-MIN 30 (30-של יותר מX900 ערכים.)

DATA BASE נתונים למערכת המייצא (API .)

מסכים בשפה העברית\תפריטים.

לא כוללת פתרון בעיותMAX ו-MIN מסוג תכנון לינארי.

:אילוצי המערכת

אילוצים שונים מכתיבים את היקף המשאבים שהנהלת הארגון מייעדת להצטיידות במערכת מידע "

(.1998שובל ) "ולתפעולה

:תחומים שונים 6האילוצים מסווגים לפי

לא יאוחר מתאריך המועד הסופי שהוא ולעמוד במטרותיה מערכת המידע צריכה לפעול -אילוצי זמן

2011/01/23.

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

.לשפר את המערכתולתחזק יהיה אפשר

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

כל מערכת ב JAVAת התקנת תוכנהמערכת דורשת .Xp,Vista,Win7מערכות הפעלה :המערכת הן

.הפעלה

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

.להשלמת הפרויקט בהצלחה ללא תגמול כספי

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

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

. השמה בלבד

.לפי דרישות הארגון ש יהיה צורך לפתור בעיות השמההפעלת המערכת תתבצע כשלמשתמ

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

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

.30X30של עד גודל

.בלבדהפיתוח יבוצע על ידי תוכנות בסיסיות ,תקציב חוסרעקב - אילוצי סף

Page 12: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

11

:תהליכי מחשב הנותנים מענה לבעיות השמה

. ההשמהמשתמש הרוצה בפתרון אופטימאלי של בעיית /סטודנט :המשתמשים

.בעיית השמהבפתרון אופטימאלי לדרישת המשתמש :האירוע

.תלוי במועד הבעיה :ות האירועתדיר

:הקלט לתהליך

.המשתמש מקבל בעיית השמה שמיועדת לפתרון אופטימאלי :מקור הנתונים

.חשבות הנתונים באופן ממזנה :צורת מסירת הקלט

פתיחת מכן ולאחר MINאו MAXוכפתור בחירה לבעיה נתונה מסך בעל שני שדות קלט : אמצעי קלט

.מסך הכולל טבלת קלט

(Tasks) יעדיםהאת מספר ו הרצוי (Resource) משאביםה את מספרהמשתמש יקליד : פירוט נתוני הקלט

בהתאם לנתונים תיווצר .MINאו MAXפטימאלית הרצויה בנוסף יבחר בבעיה האו, לצורך יצירת טבלה

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

.ערכים 900עמודות עם מקסימום 30-שורות ו 30יצירת טבלה של עד : הערכה כמותית

.תווים 2שורה בתווים ו 2ניתן להזין דה עמוב - (יצירת הטבלה) שנימסך ה: כמות נתוני הקלט

.(כולל)-9,999,999לבין (כולל)9,999,999לתחום המספרים בין מוגבל כל ערך - (ערכים הזנת) מסך שני

: הפלט לתהליך

.בעיית ההשמהל אופטימאלי המשתמש הרוצה בפתרוןנוצר עבור : יעד הפלט

.ח על גבי מסך"דו: צורת מסירת הפלט

.המפרטות את נתוני הפתרון רשומותמסך בעל : אמצעי פלט

בצורה כמותית המייצגת עלות ח ממוקד הכולל את פתרון הבעיה"המשתמש מקבל דו: פירוט נתוני הפלט

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

.תווים 2000עד : כמות נתוני הפלט

: חלוקת עבודה בין חברי הצוות

.גיא ברששת ואיתי לוי: מתכנתים

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

.מיכל כהן: בדיקות תוכנה

שמטרתה , בניהולה של מיכל כהןצוות אחת לשבוע תיערך ישיבת :יאור שיתוף הפעולה בין חברי הצוותת

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

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

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

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

.התוכנה בדיקותעל פרק תהיה אחראית על מערך הפרויקט ו

Page 13: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

12

Page 14: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

13

מערכת ניתוח

DFDתרשימי

הוא אמצעי גרפי לתיאור פעילויות וזרימת מידע DFD (Data Flow Diagram ) תרשים "

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

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

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

עץ תרשימים

ר ראיה מערכתית וכוללת של כל תרשימי המערכת והמבנה ההיררכי פשמא עץ תרשימים" (.2004, אליהו) "שלהם

.עץ תרשימים אלא רק תרשים אחדלא קיים ולכן DFD-0שאנו מציעים קיים רק תרשים במערכת

Page 15: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

14

מילון נתונים

משלים את ניתוח מערכת המידע בפרטים שלא טופלו Data Dictionary))מילון הנתונים "

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

:להלן מילון הנתונים של המערכת

DFD-טבלת מרכיבי ה

תיאור המרכיב שם המרכיב סוג המרכיב זיהוי המרכיב

יצירת מטריצה יצירת טבלה פונקציה יסודית 1

חישוב פתרון חישוב פונקציה יסודית 2 אופטימאלי

הצגת הסבר על השימוש עזרה קציה יסודיתפונ 3 במערכת

E1 משתמש המעוניין שמשתמ ישות משתמש בפתרון הבעיה

D1 פתרונות מאגר אוסף את הפתרונות של

בעיות ההשמה

טבלת קובץ זרמי מידע

שם הזרם סוג זיהוי היעד זיהוי המקור

E1 1 יסודי מספר ,סוג הבעיה והיעדיםהמשאבים

1 E1 טבלהופע של מ יסודי

יסודי 2 1

E1 2 הטבלה נתוני יסודי

2 E1 הבעיה פתרון יסודי

3 E1 יסודי הסבר על השימוש

במערכת

2 D1 פתרונות יסודי

.1לראות בנספח יתר המילונים ניתןאת

Page 16: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

15

עיצוב המערכת

טרנזקציות

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

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

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

(.1998, שובל)

קובץ טרנזקציות

הדק-סוג שם טרנזקציה זיהויתנאי

הפעלה

הרשאות

משתמשים

מספרי

פונקציות

1,2 כולם משתמש פתרון בעיית השמה 1

3 כולם משמשת עזרה 2

:להלן שרטוט הטרנזקציות

Page 17: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

16

תיאור על

בהתבסס על מרכיבי את הפעילויות המתבצעות בטרנזקציה כולל אור עלית"

"הטרנזקציה ואת לוגיקת ביצוע הפעולות המוגדרות באמצעות תבניות של תכנות מובנה

(1998,שובל)

:תיאור על של טרנזקציה ראשונה

התחל טרנזקציה

E1קלוט מישות

1בצע פונקציה

E1הפק פלט לישות

E1קלוט מישות

E1הפק פלט לישות

D1כתוב למאגר

סוף טרנזקציה

:תיאור על של טרנזקציה שניה

התחל טרנזקציה

E1הפק פלט לישות

סוף טרנזקציה

Page 18: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

17

עץ תפריטים

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

:שני שלבים בבניית עץ התפריטים

:גריתמיולהשלב ה

:דברותיההיהשלב

Page 19: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

18

הטמעה –בדיקות –תכנות

בנייה ובדיקות

לכל שלב במהלך פיתוח התוכנה כאשר . V-נתה באמצעות מתודולוגית מודל ההמערכת נב: בניית המערכת

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

בנינו ממשק נוח וידידותי למשתמש על ידי קידוד . כאשר המערכת נבנתה על בסיסו, הונגרי מהספרות

, (MAX ,MIN)כך שהמשתמש יוכל לבחור את סוג הבעיה אותה מעוניין לפתור , Blue-jבסביבת עבודה

רון האופטימאלי באמצעות להזין את הערכים הרצויים בטבלה ולבסוף על ידי לחיצת כפתור יקבל את הפת

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

.צעו כל הבדיקות שנדרשו במקביל לפיתוח המערכתהמערכת התב

נעשות על מנת לבדוק את תקינותה של המערכת הסופית ולמנוע בעיות העלולות להתפתח בעתיד : בדיקות

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

שבו איסוף הדרישות נבדק על ידי בדיקות קבלה V-המתודולוגיה על פיה נבנה הפרויקט היא מודל ה

.ועיצוב המקביל לבדיקות מערכת

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

(ויקיפדיה" )המידע להיכשל ולהכשיל את הארגון עלולה כל מערכת ..המטלות אינו עומד בדרישות האיכות

: מטרות הבדיקה

על מנת לא ליצור באגים גדולים יותר בעתיד גרום לכך שיתוקנוללמצוא באגים חשובים ו.

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

.הסתיים והמערכת תקינה

(.במידת הצורך) לבדוק שהמוצר עובד ומתממשק עם מוצרים אחרים

ווק המוצר לפני שהוא מוכן לשוקיום שלחס.

במקרים של אי תקינות המערכת למזער עלות תמיכה טכנית עתידית .

ת שנקבעו על ידי הלקוחלאושש התאמה לדרישו.

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

להעריך את איכות המוצר.

:נת לוודא את תקינות המערכתבדיקות שנעשו על מ

במסך הראשון המשתמש מתבקש להזין את מספר :בדיקת תקינות נתוני קלט משאבים ויעדים .1

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

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

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

יוצאת הודעת שגיאה בהתאם –הזנת ערך שלילי.

יוצאת הודעת שגיאה בהתאם – 0הזנת הערך.

Page 20: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

19

יוצאת הודעת שגיאה בהתאם –( 'סימנים וכו, אותיות)הזנת כל תו אחר.

יוצאת הודעת שגיאה בהתאם –( והשני ריק) הזנת נתון בשדה אחד בלבד.

יוצאת הודעת שגיאה בהתאם –באחד מן השדות 30-הזנת ערך הגדול מ.

יש לבדוק כי אכן פתרון הבעיה המוצע חושב על פי סוג הבעיה הרצויה אותה בחר , לבסוף

מסוג בדיקות על תוצאות ופתרון הבעיה נעשו באופן ידני לגבי בעיה –( MINאו MAX)המשתמש

MAX ולגבי בעיה מסוגMIN ( 2ראה נספח.)

NEXTלאחר הזנת הנתונים יש ללחוץ על כפתור :יצירת טבלה כפתורתקינות בדיקת .2

יש לוודא , שמטרתו להעביר את המשתמש למסך הבא של יצירת טבלה על מנת להזין את הנתונים

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

הזנת נתונים מסוגINT בכל השילובים האפשריים 30עד 1-משאבים ויעדים מ: בשני השדות ,

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

. הנתונים שהוזנו

, במסך הראשוןהמתקבל לאחר הזנת נתונים , במסך השני :בטבלהבדיקת תקינות נתוני הקלט .3

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

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

M מסוגCaps lock ,בין בתחום ערך מספרי כל הערכים השייכים לשדות אלו מוגבלים ל

:לגבי המסך השני ערכנו את הבדיקות הבאות. (כולל)-9,999,999לבין ( כולל)9,999,999

יוצאת –באחד או יותר מן השדות בטבלה ( -חוץ מהסימן מינוס ) סימנים, אותיות, הזנת תווים

. הודעת שגיאה בהתאם

הזנת האותm שאינה מסוגCaps lock ודעת שגיאה יוצאת ה –באחד או יותר מן השדות בטבלה

.בהתאם

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

יוצאת הודעת שגיאה בהתאם – שאינו בתחוםמספרי בערך , הזנת שדה אחד או יותר .

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

יוצאת הודעת שגיאה בהתאם –לא יתקבל 9,320יקים כדוגמת הזנת מספר בצירוף פס.

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

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

ביצענו חישובים ידניים ר הרצת האלגוריתם אכן תקינותבכדי לוודא שהתוצאות שקיבלנו לאח

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

(.2ראה נספח )ורנו את תקינות המערכת אישש עב

חיצה ל –לאחר בדיקה . תפקיד הכפתור למזער את המסך ":מזער"בדיקת תקינות כפתור .5

. ראינו שאכן מבצע הכפתור את הנדרש ממנו, עליו

Page 21: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

20

תפקיד הכפתור לבצע יציאה מהמערכת בעת : בדיקת תקינות כפתור יציאה מהמערכת .6

.ראינו שאכן מבצע הכפתור את הנדרש ממנו, לחיצה עליו –לאחר בדיקה . לחיצה עליו

תפקיד הכפתור להציג במסך חדש הנחיות לשימוש ": עזרה"בדיקת תקינות כפתור .7

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

תפקיד הכפתור הוא לשמור את הפתרון המוצע בקובץ ": שמור"בדיקת תקינות כפתור .8

ראינו כי נשמר הקובץ באותה תיקייה בה , OKואישור לחיצה עליו –לאחר בדיקה . Wordמסוג

.שמורה מערכת המידע

כעת רוצה , לאחר שהמשתמש קיבל פיתרון לבעיה הראשונה שביצע: בדיקת שמירת פתרון נוסף .9

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

, לאחר בדיקות נוספות. אותו" דורס"כלומר , על אותו הקובץ של פתרון הבעיה הקודמת

אך לאחר כל שמירה , Saveעל ידי כפתור הממצאים הראו כי על המשתמש לשמור את הפתרון

- לשמור -לפתור –ורק לאחר מכן לפנות לבעיה הבאה במיידי לשנות את שם הקובץעליו

.את שם הקובץ וכך הלאה ולשנות

ות ראינו כי ניתן להשתמש במערכת המידע רק במחשבים לאחר בדיק: בדיקה הפעלת המערכת .10

.ללא תוכנה זו לא ניתן להפעיל את המערכת, JRE (JAVA)מותקנת תוכנת בהן

, בעיה מסוג זה היא בעיה כאשר מספר המשאבים גדול ממספר היעדים: NXMבדיקת בעיה מסוג .11

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

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

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

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

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

המקרים 2נעשו גם בדיקות חישוב ידני לגבי.

.NXMפותרת גם בעיות מסוג אכן המערכת

Page 22: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

21

מערכת מידע

.." או ליחיד ארגוןהמערכת מיועדת ל. ממוחשבתצורה ב מידעהמאפשרת לנהל תוכנההיא מערכת מידע" (.ויקיפדיה)

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

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

INT (מספר שלם )30גודל הטבלה המקסימאלי הוא כאשר . הקובעים את גודל הבעיה הנתונהX30.

.(חץ ימני) MINאו MAX, על המשתמש לבחור בסוג הבעיה, בנוסף

.3מפורטים בצירוף הסברים ניתן לראות בנספח , את יתר מסכי המערכת

בעיית מינימום

קסימוםבעיית מ

משאבים' מס

יעדים' מס

ליצירת טבלה ליציאה מהמערכת

Page 23: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

22

הטמעה

:האופן שבו תוטמע מערכת המידע

.שיווק המערכת לבעלי התפקידים הרלוונטיים .1

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

.סבר מתאים לכל סוגיההתמודדות עם התנגדויות ומתן ה .3

.הכנסת מערכת המידע לארגון .4

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

.שקופיות שתמחיש לכל בעלי התפקיד את העשייה

.י סימולציה"הדגמת עבודת המערכת ע .6

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

.הפעלה לשם מתן עזרה

.הכנסה למערכת הארגון ויישום בפועל .8

.בדיקה שוטפת כי המערכת פועלת כנדרש .9

:תוצאות

:הצגת תוצאות במדדי הביצוע

:עד כמה חישוב בעיות ההשמה הוא מוטעה

מספר הטעויות בביצוע החישובים ליחידת זמן

חידת זמןמספר בעיות השמה לי

40%: השיפור 40%= 100* 4/10: לפני

0%= 100* 0/10 : אחרי

:עד כמה חישוב בעיות ההשמה הוא קצר ויעיל

(בדקות)זמן החישוב של בעיית השמה הרצוי

זמן החישוב של בעיית השמה

75% : השיפור 25%= 100* 15/60: לפני

100%= 100* 15/15: אחרי

X100

X100

Page 24: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

23

סיכום

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

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

.בכסף וטעויות חישובתוך חסכון , פתרון בעיות השמה זמני ביצוע של תהליךבשיפור

המכונה , חדש מידעהמביאה לכדי יצירתו של חשיבההסקת מסקנות היא השלב האחרון בפעולת ה"

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

(הסקת מסקנות, ויקיפדיה". )?'כיצד היה עדיף לפעול'

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

, המשתמש באופן המהיר ו שלייעל בצורה משמעותית את עבודתל מטרתה אשר ת השמהולפתרון בעי

:ני ביותרוהאמין והחסכ

מהזמן אותו הקדיש לפני כן 75%-המערכת תחסוך לכל משתמש כ - חסכון בזמן המשתמש -

או , השקיע בנושאים נוספים בזמן הנותרכעת יוכל המשתמש ל(. בעיקר בבעיות מורכבות)

. שעות עובד מיותרותלחילופין יחסוך המעסיק ב

. ותפחית את סיכוין בצורה דרסטיתחישוב טעויות משתמש ל המערכת תחסוך - חסכון בטעויות -

.נגררות הנלוות עקב טעויות" מבוזבזות"וביל לחסכון בהשקעות שידבר

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

.מיידית ומדויקת

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

.יכול לשמור את הפתרון בקובץ במחשב

:הצוות להמשך המלצות

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

(.תקציבים) אופציית התרחבות לממשקים מורכבים יותר במידה ויש את הכלים לכך -

.אופציית יישום בכל שפה -

.לימוד התכנה הוא קל ולכן ניתן להרחיב את קהל המשתמשים -

.חשיבות לתמיכה של כל בעלי התפקידים הרלוונטיים בכל שלבי הפיתוח והלימוד -

.אופציית שיווק מערכת המידע לקהל הרחב -

.כנה לבעיה דומהובדיקת יצירת ת -

.פיתוח בסיס נתונים למערכת המידע -

Page 25: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

24

בליוגרפיהיב

."'ניתוח ותכנון מערכות מידע א"קורס המרצה שיחה עם ר גבי פינטו"ד

.1998', כרך א, "תכנון ניתוח ועיצוב מערכות מידע" פרץ שובל

.2004, הוצאת הוד עמי, "ניתוח מערכות מידע" אליהו יניב

.1998', כרך א, "תכנון ניתוח ועיצוב מערכות מידע" פרץ שובל

.1998, 'כרך ב, "תכנון ניתוח ועיצוב מערכות מידע" ובלפרץ ש

.בדיקות תוכנה: ערך ויקיפדיה

.מערכת מידע: ערך ויקיפדיה

.הסקת מסקנות: ערך ויקיפדיה

.מצגת ,ירון צוברי

.מתודולוגיות, ייזום :מצגות ר גבי פינטו"ד

algorithm/assignment-http://sites.google.com/site/garybaker/hungarian -"מקור פתוח לקוד"

-אתרי עזר בכתיבת הקוד

.com/javase/1.4.2/docs/api/javax/swing/JFrame.htmlhttp://download.oracle

Window.htm-http://www.java2s.com/Tutorial/Java/0240__Swing/1300__JFrame

JFC/ScrollBarPieces.htm-http://www.java2s.com/Code/Java/Swing

mlhttp://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JButton.ht

תכנות "קורס -תחנת המידע לסטודנט, מצגות וקודים מהרצאות ותרגולים באתר המכללה

.מר כהן לירון: מתרגל, מר תבור שי: מרצה( 30047קוד הקורס ) "מונחה עצמים

Page 26: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

25

נספחים

: 1נספח

נתונים ןהמשך מילו

קובץ רכיבי נתונים

אורך סוג נתון תיאור שם הרכיבתבנית תצוגה

ום תח ערכים

מילים נרדפות

מספר המשאבים

שורות 1-30 ** 2 ספרות מספר המשאבים

מספר המשימות

עמודות 1-30 ** 2 ספרות מספר המשימות

סוג הבעיהאו MINבעיית

MAXבעיית

בחירה מתוך אפשרויות

נתוני הטבלה

עלויות או רווחיםוהאות ספרות

M 7 *********

9999999-9999999-

כסף

הסבר על השימוש במערכת

טקסט הוראות

קובץ מילים נרדפות

התקני הרכיב שם נרדפת מילה

מספר המשאבים שורות

מספר המשימות עמודות

עלויות או רווחים כסף

Page 27: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

26

קובץ קבוצות נתונים

שם רכיב הנתונים שם הקבוצה

מספר המשאבים נתוני הבעיה

מספר המשימות נתוני הבעיה

סוג הבעיה תוני הבעיהנ

נתוני הטבלה נתוני הבעיה

קובץ נתונים על זרמי מידע יסודיים

זיהוי היעד זיהוי המקוררשימת רכיבי נתונים

וקבוצות נתונים נפח נתונים

צורת הגעה מסירה

E1 1 מספר , מספר המשאבים

סוג הבעיהו המשימות הזנה 50

E1 2 הזנה 1000000 נתוני הטבלה

2 D1 הזנה 1000000 תרונותפ

קובץ הופכי

זיהוי היעד זיהוי מקור קבוצת נתונים/שם רכיב

E1 1 מספר המשאבים

E1 1 מספר המשימות

E1 1 סוג הבעיה

E1 2 נתוני הטבלה

D1 2 פתרונות

Page 28: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

27

:2נספח

דוגמה לפתרון בעיית השמה בצורה ידנית

ההבדל . ל אחת מהן יכולה לבצע כל אחת מהעבודותשכ, מכונות 5למפעל יש . עבודות צריכות להתבצע 5

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

:כפונקציה של המכונה עליה הוא מיוצר( ככל שהמספר גבוה יותר כך איכות המוצר גבוהה יותר)המוצר

מכונה 1 2 3 4 5

מוצר

א 40 37 36 21 40

ב 35 24 28 28 37

ג 27 25 33 30 36

ד 34 33 40 36 40

ה 43 38 42 37 38

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

. הכוללת תהיה מקסימאלית

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

Min 5 4 3 2 1

א 3 6 7 22 3 3-

ב 8 19 15 15 6 6-

ג 16 18 10 13 7 7-

ד 9 10 3 7 3 3-

ה 0 5 1 6 5 0-

Page 29: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

28

:של השורות םנחסיר את הערכים המינימאליי

5 4 3 2 1

א 0 3 4 19 0

ב 2 13 9 9 0

ג 9 11 3 6 0

ד 6 7 0 4 0

ה 0 5 1 6 5

0 4 0 3 0 min

5 4 3 2 1

א 0 0 4 15 0

ב 2 10 9 5 0

ג 9 8 3 2 0

ד 6 4 0 0 0

ה 0 2 1 2 5

חד ערכית של -אין השמה חדה את האפסים אפסים ולכן נכס

המספר . במינימום קוויםהינו לי מבין הלא מכוסים אהמינימ

1

Page 30: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

29

5 4 3 2 1

א 1 0 4 15 1

ב 2 9 8 4 0

ג 9 7 2 1 0

ד 7 4 0 0 1

ה 0 1 0 1 5

5 4 3 2 1

א 0 0 3 14 1

ב 1 9 7 3 0

ג 8 7 1 0 0

ד 7 5 0 0 2

ה 0 2 0 1 6

Z*=43+37+40+30+37=187

2מכונה מוצר א

5מכונה מוצר ב

4מכונה מוצר ג

3מכונה מוצר ד

1מכונה מוצר ה

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

לי מבין הלא אהמספר המינימ. קווים 1 הינומכוסים

Page 31: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

30

:3נספח

מסכי המערכת

:יופיע הפלט הבא HELPבלחיצה על כפתור

יופיע מסך הפלט , Caps lockמסוג Mשאינו מספר שלם ושאינו ( סימנים, אותיות)במידה והמשתמש יכניס תו

:למשתמש

:יופיע מסך הפלט למשתמש 0במידה והמשתמש יכניס מספר שלילי או

Page 32: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

31

:תוצג בפניו הטבלה הבאה, X 5 5במידה והמשתמש מעוניין בטבלה

.בלבד מספרים 7-המוגבל ל FLOATסוג ניתן למלא כל שדה בערך מ

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

Page 33: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

32

:NXMהמערכת מתמודדת גם עם מקרה של טבלת

.המוצג בדף הבאיפתח המסך , SOLVEלאחר לחיצה על כפתור

משאבים 3

יעדים 2

Page 34: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

33

: תופיע ההודעה הבאה Saveונלחץ על כפתור במידה

:Wordדוגמא לפתרון שנשמר בקובץ

Resource2--------------------------------->Task1 value:

1.0

Resource1--------------------------------->Task2 value:

2.0

Total: 3.0

ערכי המשאבים

העלות המינימאלית

פתרון הבעיה

אופציה לשמירה

Page 35: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

34

:4נספח

קודים של המערכת

:קוד התוכנה

:להלן פירוט מחלקות הקוד*

BLUE-Jתרשים המחלקות לפי הופעתן ב

:HungarianAlgorithmקוד המחלקה *

open source -הקוד שנלקח מה-

import java.util.*; public class HungarianAlgorithm implements AssignmentAlgorithm { public int[][] computeAssignments(float[][] matrix) { // subtract minumum value from rows and columns to create lots of zeroes reduceMatrix(matrix); // non negative values are the index of the starred or primed zero in the row or column int[] starsByRow = new int[matrix.length]; Arrays.fill(starsByRow,-1); int[] starsByCol = new int[matrix[0].length]; Arrays.fill(starsByCol,-1); int[] primesByRow = new int[matrix.length]; Arrays.fill(primesByRow,-1); // 1s mean covered, 0s mean not covered int[] coveredRows = new int[matrix.length];

Page 36: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

35

int[] coveredCols = new int[matrix[0].length]; // star any zero that has no other starred zero in the same row or column initStars(matrix, starsByRow, starsByCol); coverColumnsOfStarredZeroes(starsByCol,coveredCols); while (!allAreCovered(coveredCols)) { int[] primedZero = primeSomeUncoveredZero(matrix, primesByRow, coveredRows, coveredCols); while (primedZero == null) { // keep making more zeroes until we find something that we can prime (i.e. a zero that is uncovered) makeMoreZeroes(matrix,coveredRows,coveredCols); primedZero = primeSomeUncoveredZero(matrix, primesByRow, coveredRows, coveredCols); } // check if there is a starred zero in the primed zero's row int columnIndex = starsByRow[primedZero[0]]; if (-1 == columnIndex){ // if not, then we need to increment the zeroes and start over incrementSetOfStarredZeroes(primedZero, starsByRow, starsByCol, primesByRow); Arrays.fill(primesByRow,-1); Arrays.fill(coveredRows,0); Arrays.fill(coveredCols,0); coverColumnsOfStarredZeroes(starsByCol,coveredCols); } else { // cover the row of the primed zero and uncover the column of the starred zero in the same row coveredRows[primedZero[0]] = 1; coveredCols[columnIndex] = 0; } } // ok now we should have assigned everything // take the starred zeroes in each column as the correct assignments int[][] retval = new int[matrix.length][]; for (int i = 0; i < starsByCol.length; i++) { retval[i] = new int[]{starsByCol[i],i}; } return retval; } private boolean allAreCovered(int[] coveredCols) { for (int covered : coveredCols) { if (0 == covered) return false; } return true; } /** * the first step of the hungarian algorithm * is to find the smallest element in each row * and subtract it's values from all elements * in that row * * @return the next step to perform */ private void reduceMatrix(float[][] matrix) { for (int i = 0; i < matrix.length; i++) { // find the min value in the row float minValInRow = Float.MAX_VALUE; for (int j = 0; j < matrix[i].length; j++) { if (minValInRow > matrix[i][j]) { minValInRow = matrix[i][j]; } }

Page 37: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

36

// subtract it from all values in the row for (int j = 0; j < matrix[i].length; j++) { matrix[i][j] -= minValInRow; } } for (int i = 0; i < matrix[0].length; i++) { float minValInCol = Float.MAX_VALUE; for (int j = 0; j < matrix.length; j++) { if (minValInCol > matrix[j][i]) { minValInCol = matrix[j][i]; } } for (int j = 0; j < matrix.length; j++) { matrix[j][i] -= minValInCol; } } } /** * init starred zeroes * * for each column find the first zero * if there is no other starred zero in that row * then star the zero, cover the column and row and * go onto the next column * * @param costMatrix * @param starredZeroes * @param coveredRows * @param coveredCols * @return the next step to perform */ private void initStars(float costMatrix[][], int[] starsByRow, int[] starsByCol) { int [] rowHasStarredZero = new int[costMatrix.length]; int [] colHasStarredZero = new int[costMatrix[0].length]; for (int i = 0; i < costMatrix.length; i++) { for (int j = 0; j < costMatrix[i].length; j++) { if (0 == costMatrix[i][j] && 0 == rowHasStarredZero[i] && 0 == colHasStarredZero[j]) { starsByRow[i] = j; starsByCol[j] = i; rowHasStarredZero[i] = 1; colHasStarredZero[j] = 1; break; // move onto the next row } } } } /** * just marke the columns covered for any coluimn containing a starred zero * @param starsByCol * @param coveredCols */ private void coverColumnsOfStarredZeroes(int[] starsByCol, int[] coveredCols) { for (int i = 0; i < starsByCol.length; i++) { coveredCols[i] = -1 == starsByCol[i] ? 0 : 1; } } /** * finds some uncovered zero and primes it * @param matrix * @param primesByRow * @param coveredRows * @param coveredCols * @return */ private int[] primeSomeUncoveredZero(float matrix[][], int[] primesByRow, int[] coveredRows, int[] coveredCols) {

Page 38: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

37

// find an uncovered zero and prime it for (int i = 0; i < matrix.length; i++) { if (1 == coveredRows[i]) continue; for (int j = 0; j < matrix[i].length; j++) { // if it's a zero and the column is not covered if (0 == matrix[i][j] && 0 == coveredCols[j]) { // ok this is an unstarred zero // prime it primesByRow[i] = j; return new int[]{i,j}; } } } return null; } /** * * @param unpairedZeroPrime * @param starsByRow * @param starsByCol * @param primesByRow */ private void incrementSetOfStarredZeroes(int[] unpairedZeroPrime, int[] starsByRow, int[] starsByCol, int[] primesByRow) { // build the alternating zero sequence (prime, star, prime, star, etc) int i, j = unpairedZeroPrime[1]; Set<int[]> zeroSequence = new LinkedHashSet<int[]>(); zeroSequence.add(unpairedZeroPrime); boolean paired = false; do { i = starsByCol[j]; paired = -1 != i && zeroSequence.add(new int[]{i,j}); if (!paired) break; j = primesByRow[i]; paired = -1 != j && zeroSequence.add(new int[]{ i, j }); } while (paired); // unstar each starred zero of the sequence // and star each primed zero of the sequence for (int[] zero : zeroSequence) { if (starsByCol[zero[1]] == zero[0]) { starsByCol[zero[1]] = -1; starsByRow[zero[0]] = -1; } if (primesByRow[zero[0]] == zero[1]) { starsByRow[zero[0]] = zero[1]; starsByCol[zero[1]] = zero[0]; } } } private void makeMoreZeroes(float[][] matrix, int[] coveredRows, int[] coveredCols) { // find the minimum uncovered value float minUncoveredValue = Float.MAX_VALUE; for (int i = 0; i < matrix.length; i++) { if (0 == coveredRows[i]) { for (int j = 0; j < matrix[i].length; j++) { if (0 == coveredCols[j] && matrix[i][j] < minUncoveredValue) { minUncoveredValue = matrix[i][j]; } } } } // add the min value to all covered rows for (int i = 0; i < coveredRows.length; i++) { if (1 == coveredRows[i]) {

Page 39: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

38

for (int j = 0; j < matrix[i].length; j++) { matrix[i][j] += minUncoveredValue; } } } // subtract the min value from all uncovered columns for (int i = 0; i < coveredCols.length; i++) { if (0 == coveredCols[i]) { for (int j = 0; j < matrix.length; j++) { matrix[j][i] -= minUncoveredValue; } } } } }

:AssignmentProblemקוד המחלקה *

open source -המשך לקוד שנלקח מה-

/** * an implementation of this: http://en.wikipedia.org/wiki/Hungarian_algorithm * * based loosely on Guy Robinson's description of the algorithm here: http://www.netlib.org/utk/lsi/pcwLSI/text/node222.html#SECTION001182000000000000000 * * In short, it finds the cheapest assignment pairs given a cost matrix. * */ public class AssignmentProblem { private final float[][] costMatrix; public AssignmentProblem(float[][] aCostMatrix) { costMatrix = aCostMatrix; } private float[][] copyOfMatrix() { // make a copy of the passed array float[][] retval = new float[costMatrix.length][]; for (int i = 0; i < costMatrix.length; i++) { retval[i] = new float[costMatrix[i].length]; System.arraycopy(costMatrix[i], 0, retval[i], 0, costMatrix[i].length); } return retval; } public int[][] solve(AssignmentAlgorithm anAlgorithm) { float[][] costMatrix = copyOfMatrix(); return anAlgorithm.computeAssignments(costMatrix); } }

:AssignmentAlgorithmקוד הממשק *

open source -המשך לקוד שנלקח מה-

public interface AssignmentAlgorithm { int[][] computeAssignments(float[][] costMatrix);

Page 40: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

39

}

:Inputקוד המחלקה *

המחלקה שיוצרת את ממשק הקלט בצורת הטבלה אליה מכניס המשתמש את נתוני הבעיה ולאחר אישור בודקת -

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

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class Input extends JFrame implements ActionListener { int i=0; int j=0; JTextField[][] field; JButton button; float[][] arr; int rows=0; int cols=0; boolean reverse=true; public Input(int m,int n,boolean k) { super(); JPanel panel2=new JPanel(new BorderLayout()); int r=1; int c=0; arr=new float[m][n]; field= new JTextField[m][n]; rows=m; cols=n; reverse=k; JPanel panel1 = new JPanel(new GridLayout((m+1),(n+1))); for(int i=0;i<m+1;i++) { for(int j=0;j<n+1;j++) { if((i==0)&&(j==0)) { Border thickBorder = new LineBorder(Color.GRAY, 3); button = new JButton("solve"); button.setFont(new Font("sansserif",Font.BOLD,18)); button.setBorder(thickBorder); button.addActionListener(this); panel1.add( button); } if((i==0)&&(j!=0)) { panel1.add(new JLabel(" Task"+r)); r++; } if((i!=0)&&(j==0)) panel1.add(new JLabel(" Resource"+c)); if((i!=0)&&(j!=0)) {

Page 41: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

40

field[i-1][j-1]=new JTextField(""); field[i-1][j-1].setFont(new Font("Serif", Font.BOLD, 15)); field[i-1][j-1].setHorizontalAlignment(JTextField.CENTER); panel1.add( field[i-1][j-1]); } } c++; } panel2.add(panel1,BorderLayout.CENTER); this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); this.setTitle("Cost Matrix Input"); Container contentPane = this.getContentPane(); JScrollPane pane = new JScrollPane(panel2, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.getVerticalScrollBar().setUnitIncrement(12); pane.getHorizontalScrollBar().setUnitIncrement(18); contentPane.add(pane, BorderLayout.CENTER); } public void actionPerformed(ActionEvent arg0) { try{ int max =Math.max(rows,cols); float[][] cost=new float[max][max]; for(int i=0;i<max;i++) for(int j=0;j<max ;j++) cost[i][j]=0; for(int i=0;i<field.length;i++) { for(int j=0;j<field[0].length;j++) { if (field[i][j].getText().equals("M") ) { if (reverse) cost[i][j]=999999999; else cost[i][j]=-999999999; } else { float temp=Float.valueOf(field[i][j].getText().trim()).floatValue(); if((temp>9999999)||(temp<-9999999)) { JOptionPane.showMessageDialog(null, "Invalid Number filed, All Numbers Must Be In Rang [-9,999,999] - [9,999,999]"); return; } else { arr[i][j] = Float.valueOf(field[i][j].getText().trim()).floatValue(); cost[i][j]=arr[i][j]; } } } } if( !(reverse)) { float maxval=-9999999; for(int i=0;i<max;i++) for(int j=0;j<max ;j++) { if (cost[i][j]>maxval) maxval=cost[i][j]; } for(int i=0;i<max;i++) for(int j=0;j<max ;j++) cost[i][j]=maxval-cost[i][j]; } AssignmentProblem t = new AssignmentProblem(cost); HungarianAlgorithm r =new HungarianAlgorithm(); printResult(t.solve(r),arr);

Page 42: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

41

} catch (NumberFormatException nfe) { JOptionPane.showMessageDialog(null, "all fields must contain number or M"); } } public static void printResult(int [][] matrix,float [][] arr) { String s=""; float sum=0; for (int i = 0; i < matrix.length; i++) { if((matrix[i][0]+1<=arr.length)&&(matrix[i][1]+1<=arr[0].length)) { if(((matrix[i][1]+1)<10)&&((matrix[i][0]+1)<10)) { s=s+("Resource"+(matrix[i][0]+1)+"--------------------------------->Task"+(matrix[i][1]+1)+" value: "+ arr[matrix[i][0]][matrix[i][1]]+"\n"); sum=sum + arr[matrix[i][0]][matrix[i][1]]; } if(((matrix[i][1]+1)>=10)&&((matrix[i][0]+1)<10)) { s=s+("Resource"+(matrix[i][0]+1)+"-------------------------------->Task"+(matrix[i][1]+1)+" value: "+ arr[matrix[i][0]][matrix[i][1]]+"\n"); sum=sum + arr[matrix[i][0]][matrix[i][1]]; } if(((matrix[i][1]+1)<10)&&((matrix[i][0]+1)>=10)) { s=s+("Resource"+(matrix[i][0]+1)+"-------------------------------->Task"+(matrix[i][1]+1)+" value: "+ arr[matrix[i][0]][matrix[i][1]]+"\n"); sum=sum + arr[matrix[i][0]][matrix[i][1]]; } if(((matrix[i][1]+1)>=10)&&((matrix[i][0]+1)>=10)) { s=s+("Resource"+(matrix[i][0]+1)+"------------------------------>Task"+(matrix[i][1]+1)+" value: "+ arr[matrix[i][0]][matrix[i][1]]+"\n"); sum=sum + arr[matrix[i][0]][matrix[i][1]]; } } } s=s+ ("\n" + " Total: "+sum); Solution solution1= new Solution(s); solution1.main(s); } public void drive(int m, int n,boolean k) { JFrame frame1=( new Input (m,n,k)); frame1.pack(); frame1.setResizable(false); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension windowSize = frame1.getSize(); if((m<=16)&&(n<=10)) { int windowX = Math.max(0, (screenSize.width - windowSize.width ) / 2); int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2); frame1.setLocation(windowX, windowY); } if((m<=10)&&(n>10)) { frame1.setSize(9*100,((m+1)*56)); int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2); frame1.setLocation(0, windowY); } else { if((m>22)&&(n<=10)) {

Page 43: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

42

frame1.setSize((n+1)*100,(12*56)); frame1.setLocation(0, 0); } else { if((m>16)&&(n<=10)) { int windowX = Math.max(0, (screenSize.width - windowSize.width ) / 2); int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2); frame1.setLocation(windowX, windowY); } else { if((m>16)&&(n>10)) { frame1.setSize((n+1)*100,(m+1)*56); frame1.setExtendedState(MAXIMIZED_BOTH); } } } } frame1.setVisible(true); } }

:elpHקוד המחלקה *

(.help)אחראית לתצוגת חלון העזרה -

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Help extends JFrame { JLabel label_1; JTextArea text_2; JPanel panel_1; public Help() { HelpLayout customLayout = new HelpLayout(); getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 14)); getContentPane().setLayout(customLayout); label_1 = new JLabel("Help"); getContentPane().add(label_1); text_2 = new JTextArea("Welcome to Assignment Problem Solver. This software will help you solve \nan Assignment Problem by assigning Resources (workers) to Tasks (jobs) optimally. \n Enter the Resources and Tasks number in the text fields and choose Maximize\n if you want the most expensive solution or Minimize if you want the cheapest solution. \n click Next >, a new window will open. The new window contains a table\n and a Solve button, fill the table with the cost matrix (if there is a Task \nthat cannot be done by a certain Resource enter the letter M with Caps Lock) then\n Click the Solve button.\nA solution will appear in a new window.\nIf you like to save the solution click the Save button \nand the solution will be saved as doc file.\n This program was planed, written and executed by:\n Guy Barsheshet, Itay Levi, Asher Halily, Michal Cohen, Bilga Damir and Barak Goldkorn.\nJanuary 2011, based on Gary Baker's (GPL v3) implementation.\n http://sites.google.com/site/garybaker/hungarian-algorithm/assignment "); Font font = new Font("Verdana", Font.BOLD, 12); text_2.setFont(font); getContentPane().add(text_2); text_2.setEditable(false); panel_1 = new JPanel();

Page 44: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

43

getContentPane().add(panel_1); setSize(getPreferredSize()); this.setDefaultCloseOperation ( JFrame.HIDE_ON_CLOSE ); } public static void main() { Help window = new Help(); window.setTitle("Help"); window.pack(); window.show(); } } class HelpLayout implements LayoutManager { public HelpLayout() { } public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } public Dimension preferredLayoutSize(Container parent) { Dimension dim = new Dimension(0, 0); Insets insets = parent.getInsets(); dim.width = 605 + insets.left + insets.right; dim.height = 320 + insets.top + insets.bottom; return dim; } public Dimension minimumLayoutSize(Container parent) { Dimension dim = new Dimension(0, 0); return dim; } public void layoutContainer(Container parent) { Insets insets = parent.getInsets(); Component c; c = parent.getComponent(0); if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+16,112,32);} c = parent.getComponent(1); if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+48,600,600);} c = parent.getComponent(2); if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+0,600,600);} } }

:olutionSקוד המחלקה *

.ראוי ואסטטי למשתמש( פתרון)ראית לתצוגת חלון פלט אח -

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; public class Solution extends JFrame { JLabel label_1; JTextArea text_2; JPanel panel_1; JPanel panel_2;

Page 45: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

44

JButton button_1; String text; public Solution(String s) { text=s; JPanel panel_1=new JPanel(new BorderLayout()); JPanel panel_2=new JPanel(new BorderLayout()); Font font = new Font("Verdana", Font.BOLD, 12); Font font1 = new Font("Verdana", Font.BOLD, 18); Container contentPane = this.getContentPane(); label_1 = new JLabel("Suggested Solution:"); label_1.setFont(font1); panel_1.add( label_1,BorderLayout.NORTH); text_2 = new JTextArea(text); text_2.setFont(font); text_2.setEditable(false); panel_1.add( text_2,BorderLayout.CENTER); button_1= new JButton("Save"); button_1.setMaximumSize(new Dimension(5,5)); button_1.addActionListener(new ButtonsActionListener() ); panel_2.add(button_1,BorderLayout.EAST); panel_1.add( panel_2,BorderLayout.SOUTH); // panel_1 = new JPanel(); JScrollPane pane = new JScrollPane(panel_1, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); contentPane.add(pane, BorderLayout.CENTER); this.setDefaultCloseOperation ( JFrame.HIDE_ON_CLOSE ); } class ButtonsActionListener implements ActionListener{ public void actionPerformed(ActionEvent e) { if (e.getSource()==button_1) { try{ WriteTextFile saving=new WriteTextFile(); saving.save(text); JOptionPane.showMessageDialog(null, "The Solution has been saved as Solution.doc successfully"); } catch (IOException ioe){} } } } public static void main(String s) { Solution window = new Solution(s); window.setTitle(" Solution"); window.pack(); window.show(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension windowSize = window.getSize(); int windowX = Math.max(0, (screenSize.width - windowSize.width ) / 2); int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2); window.setLocation(windowX, windowY); window.setResizable(false); } }

Page 46: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

45

:WriteTextFileוד המחלקה ק*

.saveאחראית לשמירת הפתרון בקובץ וורד במידה והמשתמש חפץ בכך ונתן הוראת -

import java.io.*; public class WriteTextFile{ public static void save(String s )throws IOException{ Writer output = null; String text = s; File file = new File("Solution.doc"); output = new BufferedWriter(new FileWriter(file)); output.write(text); output.close(); } }

:StartUpקוד המחלקה *

וחר את סוג בחלון זה המשתמש ב, המחלקה האחראית לפתיחת החלון הראשי שמוצג למשתמש בעת ההפעלה -

ובהתאם יוצג החלון , שלרשותו( resource)והמשאבים ( tasks)ומקליד את מספר המשימות ( min\max)הבעיה .הטבלאי אליו יצטרך להקליד את הנתונים

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; import java.awt.Font; import javax.swing.JLabel; import java.awt.Color; public class StartUp extends JFrame { JLabel label_1; JLabel label_2; JLabel label_3; JTextField textfield_1; JTextField textfield_2; ButtonGroup cbg; JRadioButton radio_1; JRadioButton radio_2; JButton button_1; JButton button_2; JButton button_3; JPanel panel_2; public StartUp() { suLayout customLayout = new suLayout(); getContentPane().setFont(new Font("Helvetica", Font.PLAIN, 12)); getContentPane().setLayout(customLayout); label_1 = new JLabel("Assignment Problem Solver"); label_1.setFont(new Font("Serif", Font.BOLD, 36)); label_1.setForeground(Color.BLUE); getContentPane().add(label_1); label_2 = new JLabel("Resources Number:"); Font curFont = label_2.getFont(); label_2.setFont(new Font(curFont.getFontName(), curFont.getStyle(),14)); getContentPane().add(label_2);

Page 47: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

46

label_3 = new JLabel("Tasks Number:"); Font curFont1 =label_3.getFont(); label_3.setFont(new Font(curFont1.getFontName(), curFont1.getStyle(),14)); getContentPane().add(label_3); textfield_1 = new JTextField(""); textfield_1.setFont(new Font("Serif", Font.BOLD, 16)); textfield_1.setHorizontalAlignment(JTextField.CENTER); getContentPane().add(textfield_1); textfield_2 = new JTextField(""); textfield_2.setFont(new Font("Serif", Font.BOLD, 16)); textfield_2.setHorizontalAlignment(JTextField.CENTER); getContentPane().add(textfield_2); cbg = new ButtonGroup(); radio_1 = new JRadioButton("Minimize Solution", false); Font curFont2 =radio_1.getFont(); radio_1.setFont(new Font(curFont2.getFontName(), curFont2.getStyle(),14)); radio_1.setForeground(Color.RED); cbg.add(radio_1); getContentPane().add(radio_1); radio_2 = new JRadioButton("Maximize Solution", false); Font curFont3 =radio_2.getFont(); radio_2.setFont(new Font(curFont3.getFontName(), curFont3.getStyle(),14)); radio_2.setForeground(Color.RED); cbg.add(radio_2); getContentPane().add(radio_2); button_1 = new JButton("Next >"); getContentPane().add(button_1); button_2 = new JButton("Quit"); getContentPane().add(button_2); button_3 = new JButton("Help"); getContentPane().add(button_3); panel_2 = new JPanel(); getContentPane().add(panel_2); radio_1.setSelected(true); button_1.addActionListener(new ButtonsActionListener() ); button_2.addActionListener(new ButtonsActionListener() ); button_3.addActionListener(new ButtonsActionListener() ); setSize(getPreferredSize()); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } class ButtonsActionListener implements ActionListener{ public void actionPerformed(ActionEvent e) { try{ if (e.getSource()==button_2) System.exit(0); if (e.getSource()==button_3) { Help help1= new Help(); help1.main(); } if (e.getSource()==button_1) if( (textfield_1.getText().equals("")) || (Integer.parseInt(textfield_1.getText().trim())<1) || (Integer.parseInt(textfield_1.getText().trim())>30)) JOptionPane.showMessageDialog(null, "Invalid Resources Number filed"); else if( (textfield_2.getText().equals("")) || (Integer.parseInt(textfield_2.getText().trim())<1) || (Integer.parseInt(textfield_2.getText().trim())>30)) JOptionPane.showMessageDialog(null, "Invalid Tasks Number field");

Page 48: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

47

else{ int resources=Integer.parseInt(textfield_1.getText().trim()); int tasks=Integer.parseInt(textfield_2.getText().trim()); boolean minimize=true; if (radio_2.isSelected()) minimize=false; Input test= new Input(resources,tasks,minimize); test.drive(resources,tasks,minimize); } } catch (NumberFormatException nfe) { JOptionPane.showMessageDialog(null, " field must contain number!"); } } } public static void main(String args[]) { StartUp window = new StartUp(); window.setTitle("StartUp"); window.pack(); window.show(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension windowSize = window.getSize(); int windowX = Math.max(0, (screenSize.width - windowSize.width ) / 2); int windowY = Math.max(0, (screenSize.height - windowSize.height) / 2); window.setLocation(windowX, windowY); window.setResizable(false); } } class StartUpLayout implements LayoutManager { public StartUpLayout() { } public void addLayoutComponent(String name, Component comp) { } public void removeLayoutComponent(Component comp) { } public Dimension preferredLayoutSize(Container parent) { Dimension dim = new Dimension(0, 0); Insets insets = parent.getInsets(); dim.width = 549 + insets.left + insets.right; dim.height = 438 + insets.top + insets.bottom; return dim; } public Dimension minimumLayoutSize(Container parent) { Dimension dim = new Dimension(0, 0); return dim; } public void layoutContainer(Container parent) { Insets insets = parent.getInsets(); Component c; c = parent.getComponent(0); if (c.isVisible()) {c.setBounds(insets.left+8,insets.top+0,440,72);} c = parent.getComponent(1); if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+112,152,32);} c = parent.getComponent(2); if (c.isVisible()) {c.setBounds(insets.left+16,insets.top+144,152,32);} c = parent.getComponent(3); if (c.isVisible()) {c.setBounds(insets.left+168,insets.top+112,88,32);} c = parent.getComponent(4); if (c.isVisible()) {c.setBounds(insets.left+168,insets.top+144,88,32);} c = parent.getComponent(5); if (c.isVisible()) {c.setBounds(insets.left+336,insets.top+112,152,32);} c = parent.getComponent(6);

Page 49: Hungarian Algorithmienmportal.com/wp-content/apps/assignmentProblem/Hung... · 2016. 1. 3. · Hungarian Algorithm 'א עדימ תוכרעמ ןונכתו חותינ ñ ינדיה

Hungarian Algorithm 'ניתוח ותכנון מערכות מידע א

48

if (c.isVisible()) {c.setBounds(insets.left+336,insets.top+144,152,32);} c = parent.getComponent(7); if (c.isVisible()) {c.setBounds(insets.left+40,insets.top+328,96,40);} c = parent.getComponent(8); if (c.isVisible()) {c.setBounds(insets.left+424,insets.top+328,96,40);} c = parent.getComponent(9); if (c.isVisible()) {c.setBounds(insets.left+448,insets.top+8,80,32);} c = parent.getComponent(10); if (c.isVisible()) {c.setBounds(insets.left+0,insets.top+0,544,432);} } }