בעיה בכנאפה ב- Excel VBA - פקודות מאקרו קלות של Excel

תוכן העניינים

להלן נבחן תוכנית ב Excel VBA זֶה פותר מופע קטן של א בעיית תרמיל.

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

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

ב- Excel בעיה זו נראית כך:

1. ראשית, אנו מצהירים על חמישה משתנים מסוג Double עם הגבלת שמות, משקל, ערך, totalWeight ו- maximumValue.

גבול עמום ככפול, משקל ככפול, ערך ככפול, סה"כ משקל כפול, מקסימום ערך ככפול

2. לאחר מכן, אנו מצהירים על חמישה משתנים מסוג מספר שלם עם שמות i, j, k, l, m.

Dim i, j, k, l, m כמספר שלם

3. אנו מאתחלים שני משתנים. אנו מאתחלים את הגבול המשתנה עם הערך של תא D6. אנו מאתחלים את המשתנה maximumValue עם ערך 0.

limit = טווח ("D6"). ערך
מקסימום ערך = 0

4. לאחר מכן, אנו בודקים כל פתרון אפשרי. אנו יכולים לכלול פריט (1) או להשאיר אותו בחוץ (0). אנו מתחילים 5 לולאות Next. אחד לכל פריט.

עבור i = 0 עד 1
עבור j = 0 עד 1
עבור k = 0 עד 1
עבור l = 0 עד 1
עבור m = 0 עד 1

5. אנו מחשבים את המשקל והערך של פתרון אפשרי.

משקל = 12 * i + 2 * j + 1 * k + 1 * l + 4 * m
ערך = 4 * i + 2 * j + 2 * k + 1 * l + 10 * m

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

אם ערך> מקסימום ערך ומשקל <= גבול אז

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

טווח ("B4"). ערך = i
טווח ("C4"). ערך = j
טווח ("D4"). ערך = k
טווח ("E4"). ערך = l
טווח ("F4"). ערך = מ
totalWeight = משקל
maximumValue = ערך

8. אל תשכח לסגור את הצהרת ה- If.

סוף אם

9. אל תשכח לסגור את 5 הלולאות For Next.

 מ 'הבאה
הבא l
ק
י הבא
הבא i

Excel VBA בודק כל פתרון אפשרי בצורה כזו וכתוצאה מכך הפתרון האופטימלי יופיע בשורה 4. זכור, 1 פירושו שאנחנו כוללים פריט, 0 פירושו שאנחנו משאירים אותו בחוץ.

10. לבסוף, כתוב totalWeight ו- maximumValue של הפתרון האופטימלי לתא B6 ו B8 בהתאמה.

טווח ("B6"). Value = totalWeight
טווח ("B8"). Value = maximumValue

11. בדוק את התוכנית.

תוֹצָאָה:

מסקנה: אופטימלי לכלול את ארבעת הפריטים האחרונים עם ערך מקסימלי של 15. פתרון זה עם משקל כולל של 2 + 1 + 1 + 4 = 8 אינו חורג מהגבול של 15.

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

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

wave wave wave wave wave