אופטימייזר תזמון מפורט
Detailed Scheduling Optimizer
תזמון מפורט (Detailed Scheduling) · שיעור 5
- Optimizer = פתרון קרוב-לאופטימלי לבעיות-רצף מורכבות.
- Cost-based, רב-מטרתי, לפי Optimization profile.
- דורש מודל-נתונים נקי ו-runtime-budget.
- בארגון: מזעור שטיפות-CIP תלויות-זוג-טעמים.
מטרת השיעור
ידע אצורה-Detailed Scheduling Optimizer הוא מנוע-אופטימיזציה מתמטי (מבוסס PP/DS optimizer) המחפש את הרצף-המיטבי על המשאבים לפי פונקציות-מטרה משוקללות — מזעור-Setup, איחורים, זמני-ריצה ועוד. בניגוד ל-Heuristic (כלל-מהיר), הוא 'חושב' על כל המרחב ומחזיר פתרון קרוב-לאופטימלי. הכלי החזק-ביותר לבעיות-רצף מורכבות. פונקציות מטרה — Objective functions הן המטרות שה-Optimizer ממזער/ממקסם — מזעור-Setup, מזעור-איחורים (Lateness/Delay), מזעור-זמן-ריצה, מזעור-מלאי, מקסום-ניצול. כל מטרה מקבלת משקל, והשילוב-המשוקלל מגדיר 'מהו תזמון-טוב' עבור הארגון. פרופיל אופטימיזציה — ה-Optimization profile הוא המכל שמרכז את כל הגדרות-ה-Optimizer: פונקציות-המטרה ומשקליהן, runtime-budget, אופק-אופטימיזציה, אסטרטגיה, ואילוצים. הוא הישות הניתנת-לשיוך שמופעלת בכל הרצת-Optimizer — קבוע ועקבי. הרצה וניטור של אופטימיזציית תזמון מפורט — לאחר הגדרת-הפרופיל, מריצים את ה-Optimizer (מהלוח או ברקע) ומנטרים את התוצאה: זמן-ריצה, ערכי-Objective functions, הפרות-אילוצים והשוואה-לפני/אחרי. הניטור הוא שלב-קריטי — מקבלים פתרון רק לאחר בדיקה שהוא משפר באמת.
למה זה חשוב
ידע אצורה-Optimizer הוא 'המוח-הגדול': במקום כלל-פשוט, הוא בוחן המון אפשרויות-סידור ומחזיר את הטובה-ביותר לפי המטרות שהגדרת (למשל הכי-פחות-החלפות והכי-פחות-איחורים). הוא איטי-יותר, אבל חכם-יותר. פונקציות מטרה — אתה אומר ל-Optimizer מה חשוב לך: הכי-פחות-החלפות? הכי-פחות-איחורים? אתה נותן 'ניקוד' (משקל) לכל מטרה, והוא מוצא את הסידור עם הניקוד-הכולל-הטוב-ביותר. פרופיל אופטימיזציה — כל ההגדרות של ה-Optimizer ארוזות ב'פרופיל' אחד עם שם: מה המטרות, כמה-זמן-לרוץ, ואיזה אופק. בוחרים פרופיל ומריצים — לא מגדירים הכל-מחדש בכל פעם. הרצה וניטור של אופטימיזציית תזמון מפורט — מפעילים את ה-Optimizer ומחכים שיסיים. אחר-כך בודקים: האם זה באמת יצא טוב-יותר? כמה-החלפות? כמה-איחורים? רק אם השתפר — שומרים; אחרת מכווננים ומריצים-שוב.
ערך עסקי
ידע אצורלהשיג את הרצף הטוב-ביותר-אפשרי לבעיות מורכבות (רצף תלוי-Setup, ריבוי-משאבים, איחורים) שבהן Heuristic לא מספיק — תוך איזון בין מטרות-מתחרות. פונקציות מטרה — לתרגם את עדיפויות-העסק (מה יקר יותר — החלפה או איחור?) לשפה-מתמטית שה-Optimizer יכול לאזן ולמזער. פרופיל אופטימיזציה — לארוז את כל תצורת-ה-Optimizer לישות אחת ניתנת-לשימוש-חוזר, כדי שהרצות יהיו עקביות, ניתנות-לשחזור וקלות-להחלפה. הרצה וניטור של אופטימיזציית תזמון מפורט — להבטיח שכל הרצת-Optimizer אכן משפרת לפי-המטרות, לאתר בעיות-מודל/אילוצים, ולקבל החלטה-מבוססת-נתונים אם לקבל את התוצאה.
היכן בשימוש
ידע אצור• SAP APO ► PP/DS ► Detailed Scheduling ► Optimization ► Maintain Optimization Profile (/SAPAPO/CDPSC5) • Detailed Scheduling Planning Board ► Functions ► Optimize (/SAPAPO/CDPS0) • SAP APO ► PP/DS ► Detailed Scheduling ► Optimization ► Monitor Optimization Runs • SAP APO ► PP/DS ► Detailed Scheduling ► Optimization ► Optimization Profile ► Objective Functions (/SAPAPO/CDPSC5) • SAP APO ► PP/DS ► Detailed Scheduling ► Optimization ► Monitor Optimization Runs (/SAPAPO/OPT_LOG) • SAP APO ► PP/DS ► Production Planning Run (background) (/SAPAPO/CDPSB0)
מושגי מפתח
ידע אצור- Optimizer = פתרון קרוב-לאופטימלי לבעיות-רצף מורכבות.
- Cost-based, רב-מטרתי, לפי Optimization profile.
- דורש מודל-נתונים נקי ו-runtime-budget.
- בארגון: מזעור שטיפות-CIP תלויות-זוג-טעמים.
- Objective functions = מטרות-התזמון המשוקללות.
- משקלים מאזנים מטרות-מתחרות.
- כייל מול עלויות-אמת ועדכן לפי מצב.
- Optimization profile = מכל כל הגדרות-ה-Optimizer.
- כולל מטרות+משקלים, runtime ו-horizon.
- החזק פרופילים לפי-מצב (Std/Peak).
- ניטור = שלב-קריטי לפני קבלת-פתרון.
- Optimization log: runtime, מטרות, Non-scheduled, הפרות.
- קבל רק לאחר אימות-שיפור; Undo זמין.
- רקע לבעיות-גדולות, אינטראקטיבי לכוונון.
דוגמה מ-CBC
ידע אצורבארגון ה-Optimizer פותר את 'בעיית-רצף-הטעמים' השבועית: עשרות אצוות, Setup Matrix תלוי-זוג-טעמים, ושני קווים — הוא מחזיר רצף שממזער שטיפות-CIP (עלות-Setup) תוך עמידה במרב תאריכי-המשלוח. על משאב עם 40 פעולות, רצף-Setup מורכב ותאריכי-יעד צפופים, המתכנן מריץ את ה-Optimizer עם פרופיל שמשקלל מזעור-Setup (משקל-גבוה) ומזעור-איחורים (משקל-בינוני); תוך 5 דקות מוחזר רצף שמצמצם Setup ב-40% עם מינימום-איחורים. פונקציות מטרה — בארגון עלות שטיפת-CIP (Setup) גבוהה, ולכן Setup-cost מקבל משקל-גבוה; אך לפני חג, המשקל של Delay מוגבר זמנית כדי להבטיח עמידה-בתאריכי-קמעונאות גם במחיר שטיפות-נוספות. ארגון שעלות-איחור-ללקוח גבוהה מעלות-Setup נותן משקל-גבוה ל-Delay costs ומשקל-נמוך ל-Setup; ה-Optimizer יעדיף עמידה-בתאריכים גם במחיר החלפות-נוספות. פרופיל אופטימיזציה — בארגון שני פרופילים: 'OPT_STD' (מזעור-שטיפות-CIP) לשגרה, ו-'OPT_PEAK' (עמידה-בתאריכים) לעונת-שיא; המתכנן מחליף ביניהם לפי לוח-השנה. אדמין מגדיר פרופיל 'OPT_STD' (Setup-משקל-גבוה, runtime 5דק') ופרופיל 'OPT_HOLIDAY' (Delay-משקל-גבוה, runtime 10דק'); המתכנן בוחר פרופיל לפי-העונה ומריץ. הרצה וניטור של אופטימיזציית תזמון מפורט — בארגון המתכנן מריץ את ה-Optimizer לרצף-השבוע, בודק בלוג שמספר שטיפות-ה-CIP ירד ושכל אצוות-החג תוזמנו (אין Non-scheduled), ורק אז מקבל ושומר את הרצף. המתכנן מריץ Optimizer, פותח את ה-Optimization log, רואה Setup ירד מ-6 ל-3.5 שעות ו-2 איחורים-בלבד, מאמת שאין פעולות Non-scheduled, ומקבל את הפתרון; אחרת — מכוונן משקלים ומריץ-שוב.
תהליך
ידע אצורטבלאות
ידע אצור| טבלה | תיאור |
|---|---|
| /SAPAPO/OPTPROF | /SAPAPO/OPTPROF |
| /SAPAPO/SETMATRIX | /SAPAPO/SETMATRIX |
| /SAPAPO/ORDKEY | /SAPAPO/ORDKEY |
| /SAPAPO/OPT_LOG | /SAPAPO/OPT_LOG |
טרנזקציות
ידע אצוראפליקציות Fiori
ידע אצורקונפיגורציה (SPRO)
ידע אצור• תחזק Optimization profile (/SAPAPO/CDPSC5): Objective functions ומשקלים. • הגדר runtime-budget (זמן-ריצה מרבי) ו-Optimization horizon. • ודא Setup matrix, Modes ו-priorities נקיים. • הגדר Fixing לפעולות שאסור-להזיז. פונקציות מטרה • הפעל פונקציות-מטרה רלוונטיות: Setup, Delay, Max lead time, Storage, Mode, Runtime. • הקצה משקל/עלות לכל מטרה. • כייל משקלים מול עלויות-עסקיות אמיתיות. פרופיל אופטימיזציה • צור Optimization profile בעל-שם ב-/SAPAPO/CDPSC5. • הגדר Objective functions+weights, Maximum runtime ו-Optimization horizon. • הגדר אופציות: Setup optimization, Multiresource, Fixing-behavior. • שייך ל-Planning Board / Production Planning Run. הרצה וניטור של אופטימיזציית תזמון מפורט • הרץ Optimizer אינטראקטיבית (לוח) או ברקע (Production Planning Run). • פתח Optimization log לניטור runtime, ערכי-מטרה, אזהרות והפרות. • בדוק פעולות Non-scheduled לפני קבלה; השתמש ב-Undo במידת-הצורך. • שמור Optimization-runs להשוואה ותחקור.
הערות
ידע אצורנתוני אב • Setup Matrix (עלות/זמן-מעבר), Modes/Alternative resources, Demand/Pegging priorities. • Optimization profile מקושר ללוח/Run; runtime-budget קובע איכות-מול-זמן. שאלות ראיון מתי משתמשים ב-Detailed Scheduling Optimizer ולא ב-Heuristic? בבעיות-רצף מורכבות (Setup תלוי-רצף, ריבוי-משאבים, איחורים, מטרות-מתחרות) שבהן כלל-Heuristic פשוט לא מספיק; ה-Optimizer מחפש פתרון קרוב-לאופטימלי לפי Objective functions משוקללות. על מה נשען ה-Optimizer? Cost-based optimization — לכל Setup/איחור/הפרת-אילוץ מוקצית-עלות, וה-Optimizer ממזער את סך-העלות לפי משקלי-המטרות ב-Optimization profile, בתוך runtime-budget. מהו תנאי-סף לתוצאה-טובה מה-Optimizer? מודל-נתונים נקי — Setup matrix מדויק, Modes/Alternative resources ו-priorities — ו-runtime-budget מספק; קלט גרוע = 'אופטימום' חסר-משמעות. מהן Objective functions ב-Optimizer? המטרות המשוקללות שה-Optimizer ממזער — Setup, Delay/Lateness, Runtime, Storage, Mode — שמגדירות יחד 'מהו תזמון-טוב' לארגון. כיצד מאזנים מטרות-מתחרות? דרך משקלים-יחסיים (Setup מול Delay וכו'), מכוילים מול עלויות-עסקיות אמיתיות; שינוי-משקל משנה את אופי-הפתרון. מה מכיל Optimization profile? Objective functions+weights, Maximum runtime, Optimization horizon, Resource/Operation selection, אסטרטגיה ואופציות (Setup/Multiresource/Fixing) — כל תצורת-ה-Optimizer בישות אחת. מדוע להחזיק כמה פרופילים? כדי להחליף עדיפויות לפי-מצב — למשל מזעור-Setup בשגרה מול עמידה-בתאריכים בעונת-שיא — בלי להגדיר-מחדש בכל פעם. כיצד מנטרים הרצת-Optimizer? דרך ה-Optimization log (/SAPAPO/OPT_LOG): runtime, ערכי-Objective functions לפני/אחרי, אזהרות/שגיאות, ופעולות Non-scheduled — ומקבלים רק לאחר אימות-שיפור. מה עושים אם פעולות לא-תוזמנו (Non-scheduled)? בודקים אילוצים/קיבולת — מרפים אילוץ-נוקשה, מוסיפים Mode/משאב-חלופי, או מגדילים runtime/horizon, ומריצים-שוב. אינטראקטיבי מול רקע — מתי כל אחד? אינטראקטיבי (לוח) לכוונון ובדיקה; רקע (Production Planning Run) לבעיות-גדולות ולהרצות-מתוזמנות קבועות. נושאים קשורים • PP/DS · Heuristics (6.3) • PP/DS · מזעור זמן-ריצה (6.3.4) • PP/DS · פרופיל אופטימיזציה (6.5.2)
טעויות נפוצות
ידע אצור- הרצת Optimizer ללא Setup matrix נקי ➔ 'אופטימום' חסר-משמעות.
- משקלים סותרים/קיצוניים ➔ פתרון מעוות.
- runtime-budget קצר מדי ➔ פתרון רחוק-מאופטימום.
- אי-Fixing פעולות-אושרו ➔ ה-Optimizer מזיז החלטות-ידניות.
- משקלים שרירותיים ➔ 'אופטימום' לא-תואם-עסק.
- מטרה-יחידה דומיננטית ➔ הזנחת-מטרות-אחרות (כל-Setup, המון-איחורים).
- אי-עדכון-משקלים לעונה/מצב ➔ עדיפויות לא-מעודכנות.
- פרופיל-יחיד לכל מצב ➔ לא מתאים לשגרה ולחג גם יחד.
- Maximum runtime לא-ריאלי (קצר/ארוך מדי) ➔ פתרון-גרוע או בזבוז-זמן.
- Optimization horizon רחב מדי ➔ ריצה כבדה.
- קבלת-פתרון ללא בדיקת-הלוג ➔ פתרון עם פעולות Non-scheduled או הפרות.
- התעלמות מ-timeout בלוג ➔ פתרון רחוק-מאופטימום.
- אי-שמירת runs ➔ אין השוואה/תחקור.
פתרון תקלות
ידע אצור• תוצאה לא-הגיונית ➔ משקלי Objective functions או Setup matrix שגויים. • ה-Optimizer 'לא שיפר' ➔ runtime-budget קצר או יותר-מדי Fixing. • ריצה נכשלה ➔ בדוק Optimization log (/SAPAPO/OPT_LOG) ושלמות-המודל. פונקציות מטרה • הרבה איחורים ➔ משקל-Delay נמוך מדי. • הרבה-החלפות ➔ משקל-Setup נמוך מדי. • תוצאה קיצונית ➔ מטרה-בודדת דומיננטית; אזן משקלים. פרופיל אופטימיזציה • תוצאות לא-עקביות בין הרצות ➔ פרופיל לא-קבוע / נבחר פרופיל שונה. • ריצה ארוכה מדי ➔ horizon/runtime גדולים מדי. • מטרות לא-נכונות ➔ נבחר פרופיל לא-מתאים למצב. הרצה וניטור של אופטימיזציית תזמון מפורט • פעולות לא-תוזמנו (Non-scheduled) ➔ אילוצים-נוקשים/חוסר-קיבולת; הרפה-אילוץ או הוסף-Mode. • infeasible/inconsistency בלוג ➔ נקה מודל (Setup/Modes/priorities). • timeout ➔ הגדל runtime-budget או צמצם-horizon.
שיטות עבודה מומלצות
ידע אצור- נקה את מודל-הנתונים (Setup/Modes/priorities) לפני הרצה.
- התחל ממשקלים-מאוזנים וכוונן בהדרגה.
- הקצה runtime-budget ריאלי; קבע (Fix) החלטות-ידניות.
- נטר ריצות (log) והשווה לפני קבלה.
- כייל משקלים מול עלויות-אמת ובדוק תוצאות.
- אזן בין מטרות-מתחרות; הימנע מדומיננטיות-יחידה.
- עדכן משקלים לפי עונה/מצב (חג מול שגרה).
- תחזק מספר-מצומצם של פרופילים בעלי-שם משמעותי (Std/Peak).
- התאם runtime ו-horizon לגודל-הבעיה.
- תעד מתי משתמשים בכל פרופיל.
- תמיד בדוק את ה-Optimization log לפני קבלה.
- ודא אפס (או מינימום) פעולות Non-scheduled.
- שמור והשווה runs; השתמש ב-Undo בחופשיות.
- הרץ ברקע לבעיות-גדולות, אינטראקטיבי לכוונון.
טיפים
ידע אצור- ה-Optimizer (מנוע נפרד, מורץ מהלוח /SAPAPO/CDPS0 או ברקע) פותר בעיית-תזמון רב-מטרתית לפי Objective functions משוקללות ב-Optimization profile. תומך ב-Setup matrix, Multiresource, ואילוצי-זמן. נשען על Cost-based optimization (לכל הפרה/Setup/איחור מוקצית-עלות). דורש מודל-נתונים נקי (Setup matrix, Modes, priorities) ו-runtime-budget (זמן-ריצה מוגבל). מחזיר פתרון קרוב-לאופטימלי בתוך הזמן-שהוקצב. משולב עם Fixing (פעולות מקובעות לא-זזות) ועם Optimization-Run monitoring.
- פונקציות מטרה — ב-Optimization profile מוגדרות פונקציות-מטרה עם משקלים/עלויות: Setup time/cost, Delay costs (per lateness), Max lead time, Storage/inventory costs, Mode costs ו-Total runtime. ה-Optimizer ממזער את סך-העלות-המשוקללת. משקלים-יחסיים הם הכלי לאיזון-מטרות-מתחרות (למשל Setup מול Delay). חשוב לכייל משקלים מול עלויות-עסקיות אמיתיות, אחרת ה'אופטימום' לא תואם-מציאות.
- פרופיל אופטימיזציה — מתוחזק ב-/SAPAPO/CDPSC5. כולל: Objective functions + weights, Maximum runtime (budget), Optimization horizon, Resource/Operation selection, DS strategy reference, ואופציות (Setup optimization on/off, Multiresource on/off, Fixing-behavior). משויך ל-Planning Board / Production Planning Run. ניתן לתחזק כמה פרופילים (שגרה מול חג, מזער-Setup מול עמידה-בתאריכים) ולבחור לפי-מצב.
- הרצה וניטור של אופטימיזציית תזמון מפורט — ההרצה מ-/SAPAPO/CDPS0 (אינטראקטיבי) או כ-background job (Production Planning Run). הניטור דרך Optimization log (/SAPAPO/OPT_LOG): runtime בפועל, ערכי-מטרה לפני/אחרי, אזהרות/שגיאות, פעולות שלא-תוזמנו (Non-scheduled), והפרות-אילוצים. שגיאות-נפוצות בלוג: model inconsistency, infeasible constraints, timeout. מקבלים את הפתרון רק לאחר אימות-שיפור; אפשר Undo. מומלץ לשמור Optimization-runs להשוואה ולתחקור.
סיכום
ידע אצור• Optimizer = פתרון קרוב-לאופטימלי לבעיות-רצף מורכבות. • Cost-based, רב-מטרתי, לפי Optimization profile. • דורש מודל-נתונים נקי ו-runtime-budget. • בארגון: מזעור שטיפות-CIP תלויות-זוג-טעמים. • Objective functions = מטרות-התזמון המשוקללות. • משקלים מאזנים מטרות-מתחרות. • כייל מול עלויות-אמת ועדכן לפי מצב. • Optimization profile = מכל כל הגדרות-ה-Optimizer. • כולל מטרות+משקלים, runtime ו-horizon. • החזק פרופילים לפי-מצב (Std/Peak). • ניטור = שלב-קריטי לפני קבלת-פתרון. • Optimization log: runtime, מטרות, Non-scheduled, הפרות. • קבל רק לאחר אימות-שיפור; Undo זמין. • רקע לבעיות-גדולות, אינטראקטיבי לכוונון.