אוטומיזציה ומציאת מספר אופטימלי

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים אקסטרים אוטומיזציה ומציאת מספר אופטימלי

מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • מאת
    תגובות
  • #83147
    eyalido
    משתתף

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

    #83148
    Idan Dor
    משתתף

    שלום עידו, בתור אחד שיש לו סקריפט כזה (שכנראה נשחרר מתישהו אם יהיה לנו כח לזה) אתה צריך לעשות את השלבים הבאים:
    1)השגת אסמבלר (אני משתמש ב FASM) שעובד בהרצה שקטה(כאילו הרצה עם subprocess).
    2)הכנת תוכנה שמקמפלת ומעבירה את הקבצים מהתקיית קודים לתקיית survivors.
    3)תסתכל בקוד של הדיבאגר שיואב פירסם, אני לא זוכר בדיוק איך אבל אפשר להריץ אותו בהרצה שקטה.
    4)הכנת קטע קוד שמשנה את המשתנים שאתה רוצה ורק אותם לקודים מסוימים.
    5)הכנת קטע קוד שיאפשר לך לקרוא/להעתיק/לשמור מידע מקובץ ה CSV של תוצאות המנוע.
    6)אני ממליץ לשמור את התוצאות ופשוט להיכנס אחרי זה לאקסל, למיין את המידע לפי משהו מסויים, ולבחור את המשתנים שאתה רוצה ידנית בהתאם לתוצאה הרצוייה.

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

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

    מכווה שזה עוזר ואם יש לך עוד שאלות אז תשאל.
    עידן מ SilentError

    #83149
    eyalido
    משתתף

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

    #83150
    Yoav
    משתתף

    העקרון לשימוש במנוע דרך סקריפט הוא כזה:
    קודם כל תלחץ פעמיים על הקובץ silent.bat, ותתנסה בשימוש במנוע בעזרת האופציות השונות.
    אחר כך, כדאי לשים לב שהקובץ silent.bat מכיל בסך הכל פקודה אחת (שמפעילה את המנוע בצורה שקטה אם מריצים אותה מהpath הנכון). הדרך לתקשר עם המנוע היא לפתוח process בעזרת הפקודה שמפעילה את המנוע, ואז לרשום לprocess כל פעם את האופציות שרוצים להרצה ולחכות לתשובה. אם אתה משתמש בפייתון, מומלץ להסתכל על המודול subprocess, ובמיוחד על subprocess.Popen.

    #83151
    eyalido
    משתתף

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

    #83152
    Yoav
    משתתף

    בכיף 🙂

מוצגות 6 תגובות – 1 עד 6 (מתוך 6 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.