הנדסה - סימולציות תחבורה ותנועה

חלק א`

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

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

1. מבוא


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

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

בתמונה: סימולציית צומת חורב

 

 


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

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

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

 

2.2 תכנת TransModeler ככלי לבניית הסימולציה
בשנים האחרונות, סימולציה של רשתות תחבורה הפכה מקובלת ונפוצה יותר. השימוש בסימולציה במערכות התחבורה מאפשר הדמיה וניתוח של פרויקטי תחבורה נוכחיים ומתוכננים מבלי להפריע לשגרה ולתנועה באזור. יתרון This is especially crucial for high-traffic areas, where the least disruptions could cause major inconveniences and delay.זה חיוני במיוחד באזורים סואנים, בהם שיבושים עלולים לגרום אי נוחות ועיכוב רב. סימולציית התחבורה מאפשרת לבדוק השפעות של שינויים במערכת התחבורה מבלי להיות זקוקים לכלים אנליטיים מסובכים. 
 
בפרויקט זה נשתמש בתוכנת TransModeler  ככלי לבניית הסימולציה. ל-TransModeler  מעבד פלט משוכלל, המאפשר להתאים התפלגות לנתונים המוכנסים למערכת ושיוך התפלגות זו למודל הרצוי. המעבד מכיל יישומים רבים המאפשרים ביצוע אנליזות וניתוחים סטטיסטיים בצורה גרפית והשוואות סטטיסטיות על פי הנתונים שנאספו במהלך הרצת הסימולציה.
 
התכנה מבצעת סימולציה עבור רשת תחבורה יחידה הכוללת את כל סוגי הרחובות המוגדרים לה. זרימת התנועה מיוצגת ע"י כלי הרכב והנהגים ונקבעת לפי תכונות התנהגותם מהמוצא ליעד. התוכנה משתמשת במגוון מודלים המדמים את התנהגות הנהגים על רשת התחבורה. מודלים אלה מבוססים על סוגים שונים של התנהגויות נהגים, הכוללות בחירת נתיב, האצה, תגובה לאמצעי בקרה וכו`. ביקושי התנועה נקבעים ע"י מטריצת מוצא - יעד . בנוסף להגדרות הרשת וביקושי התנועה, ניתן להגדיר בעזרת התכנה אמצעי בקרת תנועה (רמזורים, תמרורים וכו`), מסלולי תחבורה ציבורית ועוד.

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

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

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

 

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

 

     
 
3.3 נפחי תנועה בצומת
3.3.1 ספירות תנועה
להלן מוצגים נפחי התנועה [כלי רכב לשעה] בשעת שיא בוקר (7:00 - 8:00) בצמתים המרכיבים את הצומת המורחב. הספירות נערכו בתאריך 28.5.08 ע"י אי. פי. אי. ישראל בע"מ בעבור חברת "יפה נוף" ובמסגרת הפעילות השוטפת של צוות תכנית אב לתחבורה. מקור הנתונים הוא "ספירות תנועה במטרופולין יפה ובצפון לשנת 2008, כרך 1".

בתמונה: נפחי תנועה בצומת חורב שעת שיא בוקר שנת 2008 [כלי רכב\שעה]

 

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

 

3.3.2 סקר תנועה עוברת
חברת "תסקיר סקרים ומחקרים בע"מ" ביצעה עבור צוות תכנית אב לתחבורה חיפה סקר תנועה, שנועד לבחון היקף התנועה החוצה את אזור מרכז חורב. הסקר בוצע בתאריך 18.3.01 בין השעות 6:00-19:00 בשיטת זיווג לוחיות רישוי במדגם של 10% מכלי הרכב ב - 6 נקודות תצפית. כל כלי הרכב הנכנסים לאזור מרכז חורב בתחום שנפקד הינם כלי רכב עוברים היות ומספר כלי רכב החונים בתוך המתחם זניח. זמן המעבר של האזור קצר ביותר.
 

להלן מובאים תוצאות סקר התנועה בשעת השיא (7:00-8:00), אשר יהוו את הבסיס לבניית מטריצת ביקושי התנועה בצומת כיום.

טבלה: מטריצת פילוג נסיעות שעת שיא בוקר בצומת חורב שנת 2001 [כלי רכב\שעה]
 

מוצא/יעד מוריה ד`ישראלי פיק"א חורב פרויד גת
מוריה - - 180 497 336 -
ד`ישראלי 51 - 71 26 92 -
פיק"א 440 - - 33 845 -
חורב 737 - 342 - 728 -
פרויד 296 - 363 298 - -
גת 173 - 168 75 184 -

 

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

 

3.4 תחבורה ציבורית
בצומת חורב עוברים מספר קוים עירוניים של חברת "אגד" אשר להם השפעה על תפקוד הצומת.
בנוסף בסביבתו של הצומת ממוקמות 6 תחנות אוטובוס.

 

3.5 בעיות תחבורה בצומת חורב
צומת חורב הינו צומת בעייתי מבחינה תחבורתית. להלן בעיות התחבורה העיקריות בצומת חורב :
  • נפחי תנועה גדולים - בהיותו צומת מרכזי, עוברים בצומת מידי יום נפחי תנועה גדולים במספר כיוונים מנוגדים בו זמנית. לאור זאת יש קושי להזרים את התנועה בצומת בצורה כזאת שכל התנועות יתופעלו ברמת שירות טובה. זמן המחזור של הרמזורים הוא ארוך ותכניות הרמזורים צריכות להיות מתואמות ביניהם כך שלמעשה כל תתי הצמתים יתפקדו כצומת אחד גדול. 
  • פניות שמאלה ככיוונים ראשיים - חלק מהכיוונים הראשיים ביותר הם פניות שמאלה. במיוחד בולט הדבר בשעת שיא בוקר, כאשר הכיוונים הראשיים הם מרחוב חורב דרום לדרך פרויד ומדרך פיק"א לדרך פרויד (שני הכיוונים הם פניות שמאלה). פניות שמאלה דורשות פאזות נפרדות ברמזור ומקשות על תפעול הצומת. 
  • ריבוי תחנות אוטובוסים - סביב צומת חורב ישנן 6 תחנות אוטובוס בהן עוברים 10 קווי אוטובוס. כמות קווי האוטובוס והתחנות גורמים להפרעה בזרימת התנועה. לחלק מתחנות האוטובוס אין מפרץ תחנה או שהמפרץ אינו ארוך מספיק, לעתים קרובות נוצר מצב שאוטובוסים חוסמים נתיב תנועה. בנוסף, השתלבותם של האוטובוסים במעבר בין התחנה לנתיבי התנועה היא קשה לאור נפחי התנועה הגדולים וריבוי הצמתים המרומזרים.
  • חנייה בקרבת הצומת - מכיוון שצומת זה מהווה מרכז עסקים, ברחובות הסמוכים לצומת ובקרבתו יש מקומות חנייה וזאת למרות שמדובר ברחובות עורקיים (בהם ההמלצה היא לא לאפשר חנייה). תנועה רבה העוברת בדרכים עורקיות אלה מופרעת ע"י הרכבים החונים. החנייה גורמת עיכובים לנוסעים ומסכנת את כל משתמשי הדרך. יש לציין כי מתחת לקניון "מרכז חורב" יש חניון בתשלום שהכניסה אליו מרחוב צדדי. חניון זה משמש פתרון חלקי לבעיות החנייה בצומת.
  • צמתים סמוכים - אחת הבעיות במבנה צומת זה היא קרבתם של הצמתים. יתכן מצב שבו אורך הנתיב המאחסן את כלי הרכב אינו מספיק ועל כן תאום תכניות הרמזורים חשוב במיוחד על מנת למנוע חסימה של הצמתים. בנוסף, רמזורים השייכים לצומת מסוים עלולים להראות מצומת אחר ולגרום לבלבול ולסכנה למשתמשי הדרך.
  • איי תנועה קטנים להולכי רגל - בהיותו של הצומת בלב אזור פעילות מסחרי, מספר הולכי הרגל בו הם רבים. איי התנועה בין הנתיבים הינם קטנים ולא תמיד יכולים להכיל את מספר הולכי הרגל ולכן מסכנים אותם.
 
3.6 תכנית הרמזורים
תכניות הרמזורים תוכננו בעזרת תכנת ענבר ע"י "אמי מתום - מהנדסים ויועצים בע"מ" עבור חברת "יפה נוף" בשנת 2006.
 
תכנית הרמזורים של הצומת מורכבת משלוש תכניות נפרדות, כמו גם מתכנית גלים ירוקים עבור כל הצומת.
  
 
3.7 שינויים שחלו בצומת
בשנת 2006 הוחל, בתום עשורים של תוכניות, בביצוע מס` שינויים בצומת. בין השינויים שבוצעו:
  • הוספת נתיבים ברחוב חורב בקטע החוצה את הצומת בשני הכיוונים
  • הוספת נתיב פנייה שמאלה מכיוון רחוב חורב (מדרום) לדרך פרויד - על מנת להגדיל את קיבולת הפנייה שהיא עמוסה ביותר במיוחד בשעות הבוקר
  • הוספת נתיב פנייה שמאלה לבאים מרחוב פיק"א - על מנת להגדיל את קיבולת הפנייה שהיא עמוסה ביותר במיוחד בשעות הבוקר
  • שינוי והוספה של תחנות אוטובוס על מנת למנוע חסימת הצומת ע"י אוטובוסים. תחנה חדשה שהוספה היא ברחוב חורב 18 לכיוון דרום. בנוסף בוטלה עצירה של חלק מהקווים בתחנה ברחוב חורב 22 והיא הועברה לעצירות בתחנות חורב 18 וחורב 24
  • רימזור הפניות ימינה מרחוב גת ומדרך פרויד לרחוב חורב עקב ריבוי של הולכי רגל
 
מטרת סימולציה זו היא לדמות ככל האפשר את המערכת התנועתית בצומת חורב בחיפה בשעת השיא בין השעות 7:00 ל – 8:00 בבוקר. בעזרת הדמיה ממוחשבת של הצומת בתכנת TransModeler, נוכל לנתח את זרימת התנועה הנוכחית בצומת חורב, להציע חלופות תכנוניות ולנתח השפעות של שינויים עתידיים אפשריים בצומת. 

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

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

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

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

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

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

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

לפי הנחתנו, חשיבות ההתאמה של ספירות התנועה בצמתים רבה יותר ולכן חלק זה בפונקצית המטרה קיבל חשיבות גדולה פי 100.
 
פונקצית המטרה :
הפרמטרים המדודים :
Xhi - נפחי התנועה בכל כיוון אפשרי כפי שנמדדו בסקר התנועה העוברת בשנת 2001.
 i רץ על כל הכיוונים האפשריים בצומת. (לדוגמא i=2 מייצג תנועה ממוריה לחורב).
Yj - נפחי התנועה המדודים בכל תת צומת לפי ספירות התנועה משנת 2008.J  רץ על כל הכיוונים בכל תת צומת (לדוגמא j=1 מייצג תנועה בכיוון מערב שמאלה בצומת חורב פרויד).
W - מקדם השפעה אשר בעזרתו ניתן לקבוע מידת החשיבות של כל חלק בפונקצית המטרה לעומת החלק השני. מקדם זה נקבע ל- 100.
 
המשתנים :
 Xi - נפחי התנועה החזויים בכל כיוון בצומת בשנת 2008 אותם יש למצוא. הנחה ראשונית להפעלת המודל היא xi=xhi.
(Yj(x - נפחי התנועה בכל כיוון בכל תת צומת לפי ניתוח סקר התנועה העוברת. תוצאה תלויה במטריצת ביקושי התנועה בצומת.
 
להלן מטריצה המייצגת את נפחי התנועה בשעת שיא בוקר [כלי רכב לשעה] בכל כיוון כפי שהתקבלו מהרצת המודל לחיזוי ביקושי התנועה :

 

מוצא/יעד מוריה ד`ישראלי פיק"א חורב פרויד גת
מוריה - - 224 480 341 -
ד`ישראלי 137 - 37 19 1 -
פיק"א 396 - - 151 963 -
חורב 628 - 290 - 1007 -
פרויד 431 - 552 396 - -
גת 37 - 205 31 128 -
יש לציין, שנפחי תנועה אלה הינם משוערים בלבד והתקבלו לפי מודל אשר מתבסס על מספר הנחות שבוצעו.
 
4.3 תחבורה ציבורית
לתחבורה הציבורית השפעה רבה על זרימת התנועה בצומת כפי שמתואר בפרקים הקודמים. על מנת לדמות את התחבורה הציבורית במודל יש צורך לבנות את מסלולי הנסיעה של האוטובוסים, את תחנות העצירה ואת תדירויות הקווים העוברים בצומת. עקב בעיות בגרסת התכנה שבידנו, לא הצלחנו להגדיר את לוחות הזמנים של הקווים ואת תחנות העצירה שלהם. לפיכך, בסימולציה זו לא נלקחה בחשבון השפעת התחבורה הציבורית על אף חשיבותה הרבה.
 
4.4 פילוג כלי הרכב בצומת
פילוג כלי הרכב נקבע לפי נתוני ספירות התנועה בממוצע עבור כל הצומת. 
 
טבלא: פילוג כלי הרכב בצומת
סוג אחוז מכלי הרכב
רכב פרטי 92%
רכב מסחרי 3%
אוטובוסים 3%
משאיות 1%
אופנועים 1%

כלי הרכב הפרטיים חולקו אקראית לשלוש רמות : כלי רכב חדשים (33%), כלי רכב ישנים (43%) וכלי רכב ישנים מאוד (16%) משאיות חולקו אקראית לשני סוגים : חצי טריילר (0.7%) וטריילר שלם (0.3%).

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

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

תמונה: סימולציית צומת חורב

על המחבר
תגיות
הוספת תגובה
תגובות
2 תגובות
התמונה של אנונימי
אנונימי
Therefore, one strategy could be to have an AI ready when you start to notice swollen nipples. As soon as our patients start to experience the early phases of gynecomastia, they start working letrozole on the dosages said above. This is undesirable information, considering blood strain is already prone to be excessive throughout this cycle. We have discovered that trenbolone also can cause gynecomastia, albeit not from an increase in estrogen however from progesterone (4). When taking this cycle, it’s possible to expertise issue urinating, which can point out prostate enlargement. We also see trenbolone acetate filter out of the body quicker than enanthate due to its shorter half-life. When writing exams, you typically want to arrange things before every test and clean up afterward. With an androgenic ranking of just 37, in comparison with Testosterone’s 100, we are in a position to assume a much less potent androgenic impact overall. Don’t assume you'll have the ability to leap into a regular PCT cycle after using Nandrolone, and everything will return to regular in a quantity of weeks. Nandrolone (Deca and NPP) will go away metabolites behind that may stay in your system for months. Precisely how long you could keep suppressed is a matter of debate – some say as much as 18 months, but I’d say around half that point (most importantly – each guy is different!). Utilizing Arimidex or Aromasin to regulate progesterone conversion is a good suggestion. I’d use zero.5mg of Arimidex daily whereas working Deca or 10 mg of Aromasin day by day. Trenbolone is itself derived from Nandrolone – basically a modified model of Deca. If issues go downhill early on, you can cease and have that NPP leave your system inside days somewhat than weeks. From the increase in protein synthesis to the collagen and therapeutic joint effects, Nandrolone will accelerate your restoration course of. Lowered muscle soreness and quicker muscular repair get you back in the health club sooner, and most guys discover they'll scale back their turnaround time to no more than two days for a muscle group. Nandrolone is a superb bulking steroid, especially valued for low season bulking. This isn’t a steroid that’s going to have you putting on big mass in a single day, but regular high quality positive aspects are what you'll find a way to sit up for. Stacked with a moderate dose of testosterone, gains of 10-15lbs of high quality dimension is an affordable goal, with new users capable of goal for 25lbs. These drugs assist inhibit estrogen’s results, stimulate pure testosterone manufacturing, and prevent estrogen rebound. Dosages and durations must be primarily based on individual needs and steering from a healthcare skilled. Monitoring and Assist Throughout PCT, it's crucial to watch your body’s response. Regular blood work might help assess hormone ranges and adjust the protocol if necessary. Additionally, sustaining a wholesome lifestyle, including sufficient sleep, correct vitamin, and common exercise, can support the restoration process. Balancing the ratio of Masteron to Take A Look At is essential in attaining synergistic effects and maximizing the benefits of Best Weight Loss Steroid (Jobshop24.Com) stacking. This section will talk about the significance of discovering the proper steadiness and provide recommendations based on personal goals and experience. Thus, the one menace of gynecomastia forming is trenbolone, which reasonably will increase progesterone. However, we now have found this to be one of many better cycles for avoiding man-boobs. With Winstrol being a C17-alpha-alkylated steroid, it will trigger liver pressure whereas reducing HDL ldl cholesterol and raising LDL via the stimulation of hepatic lipase. During weeks 9 to 16, exchange take a look at enanthate with 200 mg of test prop every different day and 100 mg daily of trenbolone acetate. If you’re within the slicing phase, deca 50 would be a good choice as it actually works very well when mixed with testosterone. Deca isn't a painkiller and isn’t marketed as one, however it’s well-known for reducing joints and tendon discomfort, each common in athletes. Most anabolic roids can solely be used for chopping or bulking solely, but deca is different as a outcome of you can use it for each slicing and bulking. This is due to the very long Decanoate ester, which is attached to Nandrolone. This provides the drug a very long half-life with a very lengthy release time. Newer users can see features between 15 and 25 lbs in the occasion that they eat and prepare right. Naturally, this means you have to run Deca for an inexpensive time to get probably the most out of it. Sixteen weeks is healthier, and it’s not unusual for a 20 or 24-week cycle to be run or even longer. Deca is a long-acting ester that can take some time to kick into your cycle. Assume 4, 5, and even six weeks; that is why we regularly use Dianabol or one other fast kickstarter stacked with Deca. With the two primary Nandrolone esters having very totally different half-lives, the one you’re utilizing will decide your dosing schedule and the way usually you inject. Trenbolone is exclusive in the sense that it’s a dry compound, opposite to different bulking steroids, which are typically wet. This characteristic implies that trenbolone doesn’t convert to estrogen, so customers don't experience water retention or fats accumulation during a cycle. After completing a Check E and Deca cycle, your body’s pure testosterone production might be suppressed. To restore hormone balance and maintain your gains, proper post-cycle remedy (PCT) is essential. PCT sometimes begins two weeks after your last injection and lasts for 4-6 weeks. My aim is to do a clean bulk, attempting to add good size before my next present prep/cut. 16 weeks, may extend to 20 weeks depending how i feel and if BP stays steady. I would quite gain muscle slowly and never have unwanted effects than the rest. I minimize down the dose of Test because from what I've learn, usually the next dose of Test is not really needed with tren.
התמונה של אנונימי
אנונימי
Therefore, one strategy could be to have an AI ready when you start to notice swollen nipples. As soon as our patients start to experience the early phases of gynecomastia, they start working letrozole on the dosages said above. This is undesirable information, considering blood strain is already prone to be excessive throughout this cycle. We have discovered that trenbolone also can cause gynecomastia, albeit not from an increase in estrogen however from progesterone (4). When taking this cycle, it’s possible to expertise issue urinating, which can point out prostate enlargement. We also see trenbolone acetate filter out of the body quicker than enanthate due to its shorter half-life. When writing exams, you typically want to arrange things before every test and clean up afterward. With an androgenic ranking of just 37, in comparison with Testosterone’s 100, we are in a position to assume a much less potent androgenic impact overall. Don’t assume you'll have the ability to leap into a regular PCT cycle after using Nandrolone, and everything will return to regular in a quantity of weeks. Nandrolone (Deca and NPP) will go away metabolites behind that may stay in your system for months. Precisely how long you could keep suppressed is a matter of debate – some say as much as 18 months, but I’d say around half that point (most importantly – each guy is different!). Utilizing Arimidex or Aromasin to regulate progesterone conversion is a good suggestion. I’d use zero.5mg of Arimidex daily whereas working Deca or 10 mg of Aromasin day by day. Trenbolone is itself derived from Nandrolone – basically a modified model of Deca. If issues go downhill early on, you can cease and have that NPP leave your system inside days somewhat than weeks. From the increase in protein synthesis to the collagen and therapeutic joint effects, Nandrolone will accelerate your restoration course of. Lowered muscle soreness and quicker muscular repair get you back in the health club sooner, and most guys discover they'll scale back their turnaround time to no more than two days for a muscle group. Nandrolone is a superb bulking steroid, especially valued for low season bulking. This isn’t a steroid that’s going to have you putting on big mass in a single day, but regular high quality positive aspects are what you'll find a way to sit up for. Stacked with a moderate dose of testosterone, gains of 10-15lbs of high quality dimension is an affordable goal, with new users capable of goal for 25lbs. These drugs assist inhibit estrogen’s results, stimulate pure testosterone manufacturing, and prevent estrogen rebound. Dosages and durations must be primarily based on individual needs and steering from a healthcare skilled. Monitoring and Assist Throughout PCT, it's crucial to watch your body’s response. Regular blood work might help assess hormone ranges and adjust the protocol if necessary. Additionally, sustaining a wholesome lifestyle, including sufficient sleep, correct vitamin, and common exercise, can support the restoration process. Balancing the ratio of Masteron to Take A Look At is essential in attaining synergistic effects and maximizing the benefits of Best Weight Loss Steroid (Jobshop24.Com) stacking. This section will talk about the significance of discovering the proper steadiness and provide recommendations based on personal goals and experience. Thus, the one menace of gynecomastia forming is trenbolone, which reasonably will increase progesterone. However, we now have found this to be one of many better cycles for avoiding man-boobs. With Winstrol being a C17-alpha-alkylated steroid, it will trigger liver pressure whereas reducing HDL ldl cholesterol and raising LDL via the stimulation of hepatic lipase. During weeks 9 to 16, exchange take a look at enanthate with 200 mg of test prop every different day and 100 mg daily of trenbolone acetate. If you’re within the slicing phase, deca 50 would be a good choice as it actually works very well when mixed with testosterone. Deca isn't a painkiller and isn’t marketed as one, however it’s well-known for reducing joints and tendon discomfort, each common in athletes. Most anabolic roids can solely be used for chopping or bulking solely, but deca is different as a outcome of you can use it for each slicing and bulking. This is due to the very long Decanoate ester, which is attached to Nandrolone. This provides the drug a very long half-life with a very lengthy release time. Newer users can see features between 15 and 25 lbs in the occasion that they eat and prepare right. Naturally, this means you have to run Deca for an inexpensive time to get probably the most out of it. Sixteen weeks is healthier, and it’s not unusual for a 20 or 24-week cycle to be run or even longer. Deca is a long-acting ester that can take some time to kick into your cycle. Assume 4, 5, and even six weeks; that is why we regularly use Dianabol or one other fast kickstarter stacked with Deca. With the two primary Nandrolone esters having very totally different half-lives, the one you’re utilizing will decide your dosing schedule and the way usually you inject. Trenbolone is exclusive in the sense that it’s a dry compound, opposite to different bulking steroids, which are typically wet. This characteristic implies that trenbolone doesn’t convert to estrogen, so customers don't experience water retention or fats accumulation during a cycle. After completing a Check E and Deca cycle, your body’s pure testosterone production might be suppressed. To restore hormone balance and maintain your gains, proper post-cycle remedy (PCT) is essential. PCT sometimes begins two weeks after your last injection and lasts for 4-6 weeks. My aim is to do a clean bulk, attempting to add good size before my next present prep/cut. 16 weeks, may extend to 20 weeks depending how i feel and if BP stays steady. I would quite gain muscle slowly and never have unwanted effects than the rest. I minimize down the dose of Test because from what I've learn, usually the next dose of Test is not really needed with tren.
על המחבר

רק למשתמשים רשומים גישה מלאה לכל ישומי האתר !

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

ההרשמה והשימוש בתכני הפורטל ללא עלות !

הירשםהתחבר

לחצת על "סל המשרות"

רק למשתמשים רשומים גישה לסל המשרות

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

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

חזרה ללוח הדרושים | הירשם | התחבר

ניתן להשתמש בחצי המקלדת בכדי לנווט בין כפתורי הרכיב
",e=e.removeChild(e.firstChild)):"string"==typeof o.is?e=l.createElement(a,{is:o.is}):(e=l.createElement(a),"select"===a&&(l=e,o.multiple?l.multiple=!0:o.size&&(l.size=o.size))):e=l.createElementNS(e,a),e[Ni]=t,e[Pi]=o,Pl(e,t,!1,!1),t.stateNode=e,l=Ae(a,o),a){case"iframe":case"object":case"embed":Te("load",e),u=o;break;case"video":case"audio":for(u=0;u<$a.length;u++)Te($a[u],e);u=o;break;case"source":Te("error",e),u=o;break;case"img":case"image":case"link":Te("error",e),Te("load",e),u=o;break;case"form":Te("reset",e),Te("submit",e),u=o;break;case"details":Te("toggle",e),u=o;break;case"input":A(e,o),u=M(e,o),Te("invalid",e),Ie(n,"onChange");break;case"option":u=B(e,o);break;case"select":e._wrapperState={wasMultiple:!!o.multiple},u=Uo({},o,{value:void 0}),Te("invalid",e),Ie(n,"onChange");break;case"textarea":V(e,o),u=H(e,o),Te("invalid",e),Ie(n,"onChange");break;default:u=o}Me(a,u);var s=u;for(i in s)if(s.hasOwnProperty(i)){var c=s[i];"style"===i?ze(e,c):"dangerouslySetInnerHTML"===i?(c=c?c.__html:void 0,null!=c&&Aa(e,c)):"children"===i?"string"==typeof c?("textarea"!==a||""!==c)&&X(e,c):"number"==typeof c&&X(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(ea.hasOwnProperty(i)?null!=c&&Ie(n,i):null!=c&&x(e,i,c,l))}switch(a){case"input":L(e),j(e,o,!1);break;case"textarea":L(e),$(e);break;case"option":null!=o.value&&e.setAttribute("value",""+P(o.value));break;case"select":e.multiple=!!o.multiple,n=o.value,null!=n?q(e,!!o.multiple,n,!1):null!=o.defaultValue&&q(e,!!o.multiple,o.defaultValue,!0);break;default:"function"==typeof u.onClick&&(e.onclick=Fe)}Ve(a,o)&&(t.effectTag|=4)}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)Ll(e,t,e.memoizedProps,o);else{if("string"!=typeof o&&null===t.stateNode)throw Error(r(166));n=yn(yu.current),yn(bu.current),Jn(t)?(n=t.stateNode,o=t.memoizedProps,n[Ni]=t,n.nodeValue!==o&&(t.effectTag|=4)):(n=(9===n.nodeType?n:n.ownerDocument).createTextNode(o),n[Ni]=t,t.stateNode=n)}return null;case 13:return zt(vu),o=t.memoizedState,0!==(64&t.effectTag)?(t.expirationTime=n,t):(n=null!==o,o=!1,null===e?void 0!==t.memoizedProps.fallback&&Jn(t):(a=e.memoizedState,o=null!==a,n||null===a||(a=e.child.sibling,null!==a&&(i=t.firstEffect,null!==i?(t.firstEffect=a,a.nextEffect=i):(t.firstEffect=t.lastEffect=a,a.nextEffect=null),a.effectTag=8))),n&&!o&&0!==(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&vu.current)?rs===Qu&&(rs=Yu):(rs!==Qu&&rs!==Yu||(rs=Gu),0!==us&&null!==es&&(To(es,ns),Co(es,us)))),(n||o)&&(t.effectTag|=4),null);case 4:return wn(),Ol(t),null;case 10:return Zt(t),null;case 17:return It(t.type)&&Ft(),null;case 19:if(zt(vu),o=t.memoizedState,null===o)return null;if(a=0!==(64&t.effectTag),i=o.rendering,null===i){if(a)mr(o,!1);else if(rs!==Qu||null!==e&&0!==(64&e.effectTag))for(i=t.child;null!==i;){if(e=_n(i),null!==e){for(t.effectTag|=64,mr(o,!1),a=e.updateQueue,null!==a&&(t.updateQueue=a,t.effectTag|=4),null===o.lastEffect&&(t.firstEffect=null),t.lastEffect=o.lastEffect,o=t.child;null!==o;)a=o,i=n,a.effectTag&=2,a.nextEffect=null,a.firstEffect=null,a.lastEffect=null,e=a.alternate,null===e?(a.childExpirationTime=0,a.expirationTime=i,a.child=null,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null):(a.childExpirationTime=e.childExpirationTime,a.expirationTime=e.expirationTime,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,i=e.dependencies,a.dependencies=null===i?null:{expirationTime:i.expirationTime,firstContext:i.firstContext,responders:i.responders}),o=o.sibling;return Mt(vu,1&vu.current|2),t.child}i=i.sibling}}else{if(!a)if(e=_n(i),null!==e){if(t.effectTag|=64,a=!0,n=e.updateQueue,null!==n&&(t.updateQueue=n,t.effectTag|=4),mr(o,!0),null===o.tail&&"hidden"===o.tailMode&&!i.alternate)return t=t.lastEffect=o.lastEffect,null!==t&&(t.nextEffect=null),null}else 2*ru()-o.renderingStartTime>o.tailExpiration&&1t)&&vs.set(e,t)))}}function Ur(e,t){e.expirationTimee?n:e,2>=e&&t!==e?0:e}function qr(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=$t(Vr.bind(null,e));else{var t=Br(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=Fr();if(1073741823===t?r=99:1===t||2===t?r=95:(r=10*(1073741821-t)-10*(1073741821-r),r=0>=r?99:250>=r?98:5250>=r?97:95),null!==n){var o=e.callbackPriority;if(e.callbackExpirationTime===t&&o>=r)return;n!==Yl&&Bl(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?$t(Vr.bind(null,e)):Wt(r,Hr.bind(null,e),{timeout:10*(1073741821-t)-ru()}),e.callbackNode=t}}}function Hr(e,t){if(ks=0,t)return t=Fr(),No(e,t),qr(e),null;var n=Br(e);if(0!==n){if(t=e.callbackNode,(Ju&(Wu|$u))!==Hu)throw Error(r(327));if(lo(),e===es&&n===ns||Kr(e,n),null!==ts){var o=Ju;Ju|=Wu;for(var a=Yr();;)try{eo();break}catch(t){Xr(e,t)}if(Gt(),Ju=o,Bu.current=a,rs===Ku)throw t=os,Kr(e,n),To(e,n),qr(e),t;if(null===ts)switch(a=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,o=rs,es=null,o){case Qu:case Ku:throw Error(r(345));case Xu:No(e,2=n){e.lastPingedTime=n,Kr(e,n);break}}if(i=Br(e),0!==i&&i!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}e.timeoutHandle=Si(oo.bind(null,e),a);break}oo(e);break;case Gu:if(To(e,n),o=e.lastSuspendedTime,n===o&&(e.nextKnownPendingLevel=ro(a)),ss&&(a=e.lastPingedTime,0===a||a>=n)){e.lastPingedTime=n,Kr(e,n);break}if(a=Br(e),0!==a&&a!==n)break;if(0!==o&&o!==n){e.lastPingedTime=o;break}if(1073741823!==is?o=10*(1073741821-is)-ru():1073741823===as?o=0:(o=10*(1073741821-as)-5e3,a=ru(),n=10*(1073741821-n)-a,o=a-o,0>o&&(o=0),o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Uu(o/1960))-o,n=o?o=0:(a=0|l.busyDelayMs,i=ru()-(10*(1073741821-i)-(0|l.timeoutMs||5e3)),o=i<=a?0:a+o-i),10 component higher in the tree to provide a loading indicator or placeholder to display."+N(i))}rs!==Zu&&(rs=Xu),l=yr(l,i),f=a;do{switch(f.tag){case 3:u=l,f.effectTag|=4096,f.expirationTime=t;var w=Ar(f,u,t);ln(f,w); break e;case 1:u=l;var E=f.type,k=f.stateNode;if(0===(64&f.effectTag)&&("function"==typeof E.getDerivedStateFromError||null!==k&&"function"==typeof k.componentDidCatch&&(null===ms||!ms.has(k)))){f.effectTag|=4096,f.expirationTime=t;var _=Ir(f,u,t);ln(f,_);break e}}f=f.return}while(null!==f)}ts=no(ts)}catch(e){t=e;continue}break}}function Yr(){var e=Bu.current;return Bu.current=Cu,null===e?Cu:e}function Gr(e,t){eus&&(us=e)}function Jr(){for(;null!==ts;)ts=to(ts)}function eo(){for(;null!==ts&&!Gl();)ts=to(ts)}function to(e){var t=Fu(e.alternate,e,ns);return e.memoizedProps=e.pendingProps,null===t&&(t=no(e)),qu.current=null,t}function no(e){ts=e;do{var t=ts.alternate;if(e=ts.return,0===(2048&ts.effectTag)){if(t=br(t,ts,ns),1===ns||1!==ts.childExpirationTime){for(var n=0,r=ts.child;null!==r;){var o=r.expirationTime,a=r.childExpirationTime;o>n&&(n=o),a>n&&(n=a),r=r.sibling}ts.childExpirationTime=n}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=ts.firstEffect),null!==ts.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=ts.firstEffect),e.lastEffect=ts.lastEffect),1e?t:e}function oo(e){var t=qt();return Vt(99,ao.bind(null,e,t)),null}function ao(e,t){do lo();while(null!==gs);if((Ju&(Wu|$u))!==Hu)throw Error(r(327));var n=e.finishedWork,o=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(r(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=ro(n);if(e.firstPendingTime=a,o<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:o<=e.firstSuspendedTime&&(e.firstSuspendedTime=o-1),o<=e.lastPingedTime&&(e.lastPingedTime=0),o<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===es&&(ts=es=null,ns=0),1u&&(c=u,u=l,l=c),c=Ue(w,l),f=Ue(w,u),c&&f&&(1!==k.rangeCount||k.anchorNode!==c.node||k.anchorOffset!==c.offset||k.focusNode!==f.node||k.focusOffset!==f.offset)&&(E=E.createRange(),E.setStart(c.node,c.offset),k.removeAllRanges(),l>u?(k.addRange(E),k.extend(f.node,f.offset)):(E.setEnd(f.node,f.offset),k.addRange(E)))))),E=[];for(k=w;k=k.parentNode;)1===k.nodeType&&E.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w=t&&e<=t}function To(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function Co(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function No(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Po(e,t,n,o){var a=t.current,i=Fr(),l=su.suspense;i=jr(i,a,l);e:if(n){n=n._reactInternalFiber;t:{if(J(n)!==n||1!==n.tag)throw Error(r(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(It(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(r(171))}if(1===n.tag){var s=n.type;if(It(s)){n=Dt(n,s,u);break e}}n=u}else n=Al;return null===t.context?t.context=n:t.pendingContext=n,t=on(i,l),t.payload={element:e},o=void 0===o?null:o,null!==o&&(t.callback=o),an(a,t),Dr(a,i),i}function Oo(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Ro(e,t){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retryTime