📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
Python Code for Knapsack Problem Optimization
نوع: محتوى تعليمي
C = 40 # knapsack capacity
I = range(len(values)) # creates an index for each item: 0,1,2,3,...
solver = Model("knapsack") # creates a knapsack solver
solver.verbose = 0 # setting this to 1 will print more information on the progress of the solver
x = [] # represents the binary decision variables for each item.
# for each items creates and appends a binary decision variable
for i in I:
x.append(solver.add_var(var_type = BINARY))
# creates the objective function
solver.objective = maximize(xsum(values[i] * x[i] for i in I))
# adds the capacity constraint to the solver
solver += xsum(weights[i] * x[i] for i in I) <= C
# solves the problem
solver.optimize()
Optimization Status Output
نوع: محتوى تعليمي
<OptimizationStatus.OPTIMAL: 0>
Explanation of mip Library Functions
نوع: محتوى تعليمي
يُنشئ المقطع البرمجي القائمة x لتخزين متغيرات القرار الثنائية للعناصر، وتُوفّر المكتبة mip في البايثون ما يلي:
• أداة ()add_var (var_type = BINARY) لإنشاء المتغيرات الثنائية وإضافتها إلى خوارزمية الحل.
• أداة ()maximize لمشكلات التحسين التي تحتاج لزيادة دالة موضوعية، أما مشكلات التحسين التي تتطلب تصغير الدالة الموضوعية، فتستخدم الأداة ()minimize.
• أداة ()xsum لإنشاء التعبيرات الرياضية التي تتضمن المجاميع (sums)، وفي المثال السابق تم استخدام هذه الأداة لحساب مجموع الوزن الإجمالي للعناصر في إنشاء قيد السعة وحله.
• أداة ()optimize لإيجاد حل يحسن الدالة الموضوعية في ظل الالتزام بالقيود، وتستخدم الأداة برمجة الأعداد الصحيحة المختلطة للنظر بكفاءة في توليفات القيم المختلفة لمتغيرات القرار ولإيجاد التوليفة التي تُحسّن الهدف.
• المعامل = + لإضافة قيود إضافية إلى خوارزمية الحل الموجودة.
Further Explanation of Decision Variables and Solution
نوع: محتوى تعليمي
في المقطع البرمجي أدناه تحتوي القائمة x على متغير ثنائي واحد لكل عنصر، وبعد حساب الحل سيكون كل متغير مساويًا للواحد إذا أُدرج العنصر في الحل، ويُساوي صفرًا بخلاف ذلك. تُستخدم المكتبة mip بناء الجملة x.[i] لإظهار القيمة الثنائية للعنصر ذي الفهرس i، وتحسب خوارزمية الحل متغير x، ثم تجد القيمة الإجمالية والوزن الإجمالي للعناصر المنتقاة عن طريق التكرار على متغير القرار x، وتجمع الأوزان والقيم لكل عنصر منتقى i، استنادًا إلى x[i]، وتُعرضها كما هو موضح في المقطع البرمجي التالي:
Calculating Total Weight and Value
نوع: محتوى تعليمي
total_weight = 0 # stores the total weight of the items in the solution
total_value = 0 # stores the total value of the items in the solution
Page Footer
نوع: METADATA
وزارة التعليم
Ministry of Education
285
2023 - 1447
🔍 عناصر مرئية
Ministry of Education Logo and Page Information
A stylized logo with Arabic text 'وزارة التعليم' and English text 'Ministry of Education', accompanied by the page number '285' and the corresponding Gregorian and Hijri years '2023 - 1447'.
📄 النص الكامل للصفحة
--- SECTION: Python Code for Knapsack Problem Optimization ---
C = 40 # knapsack capacity
I = range(len(values)) # creates an index for each item: 0,1,2,3,...
solver = Model("knapsack") # creates a knapsack solver
solver.verbose = 0 # setting this to 1 will print more information on the progress of the solver
x = [] # represents the binary decision variables for each item.
# for each items creates and appends a binary decision variable
for i in I:
x.append(solver.add_var(var_type = BINARY))
# creates the objective function
solver.objective = maximize(xsum(values[i] * x[i] for i in I))
# adds the capacity constraint to the solver
solver += xsum(weights[i] * x[i] for i in I) <= C
# solves the problem
solver.optimize()
--- SECTION: Optimization Status Output ---
<OptimizationStatus.OPTIMAL: 0>
--- SECTION: Explanation of mip Library Functions ---
يُنشئ المقطع البرمجي القائمة x لتخزين متغيرات القرار الثنائية للعناصر، وتُوفّر المكتبة mip في البايثون ما يلي:
• أداة ()add_var (var_type = BINARY) لإنشاء المتغيرات الثنائية وإضافتها إلى خوارزمية الحل.
• أداة ()maximize لمشكلات التحسين التي تحتاج لزيادة دالة موضوعية، أما مشكلات التحسين التي تتطلب تصغير الدالة الموضوعية، فتستخدم الأداة ()minimize.
• أداة ()xsum لإنشاء التعبيرات الرياضية التي تتضمن المجاميع (sums)، وفي المثال السابق تم استخدام هذه الأداة لحساب مجموع الوزن الإجمالي للعناصر في إنشاء قيد السعة وحله.
• أداة ()optimize لإيجاد حل يحسن الدالة الموضوعية في ظل الالتزام بالقيود، وتستخدم الأداة برمجة الأعداد الصحيحة المختلطة للنظر بكفاءة في توليفات القيم المختلفة لمتغيرات القرار ولإيجاد التوليفة التي تُحسّن الهدف.
• المعامل = + لإضافة قيود إضافية إلى خوارزمية الحل الموجودة.
--- SECTION: Further Explanation of Decision Variables and Solution ---
في المقطع البرمجي أدناه تحتوي القائمة x على متغير ثنائي واحد لكل عنصر، وبعد حساب الحل سيكون كل متغير مساويًا للواحد إذا أُدرج العنصر في الحل، ويُساوي صفرًا بخلاف ذلك. تُستخدم المكتبة mip بناء الجملة x.[i] لإظهار القيمة الثنائية للعنصر ذي الفهرس i، وتحسب خوارزمية الحل متغير x، ثم تجد القيمة الإجمالية والوزن الإجمالي للعناصر المنتقاة عن طريق التكرار على متغير القرار x، وتجمع الأوزان والقيم لكل عنصر منتقى i، استنادًا إلى x[i]، وتُعرضها كما هو موضح في المقطع البرمجي التالي:
--- SECTION: Calculating Total Weight and Value ---
total_weight = 0 # stores the total weight of the items in the solution
total_value = 0 # stores the total value of the items in the solution
--- SECTION: Page Footer ---
وزارة التعليم
Ministry of Education
285
2023 - 1447
--- VISUAL CONTEXT ---
**IMAGE**: Ministry of Education Logo and Page Information
Description: A stylized logo with Arabic text 'وزارة التعليم' and English text 'Ministry of Education', accompanied by the page number '285' and the corresponding Gregorian and Hijri years '2023 - 1447'.
Table Structure:
Headers: N/A
Data: No data points, it's a logo and textual metadata.
Key Values: 285, 2023, 1447
Context: Provides source identification and page numbering for the textbook.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
ما هي الأداة المستخدمة في مكتبة `mip` لإنشاء متغيرات قرار ثنائية وإضافتها إلى خوارزمية الحل؟
الإجابة: الأداة المستخدمة هي `add_var(var_type = BINARY)`.
الشرح: تُستخدم الأداة `add_var` مع تحديد `var_type = BINARY` لتعريف المتغيرات التي يمكن أن تأخذ قيمتين فقط (0 أو 1)، وهي ضرورية في مسائل مثل مشكلة حقيبة الظهر حيث نقرر إما أخذ العنصر أو عدم أخذه.
تلميح: ابحث عن اسم الأداة التي تقوم بإنشاء متغيرات من نوع ثنائي.
لحل مشكلة تحسين تسعى إلى زيادة دالة موضوعية، أي أداة في مكتبة `mip` تُستخدم؟
الإجابة: تُستخدم الأداة `maximize`.
الشرح: عندما يكون الهدف هو العثور على أكبر قيمة ممكنة للدالة الموضوعية (مثل زيادة الربح الإجمالي)، يتم استخدام الدالة `maximize` في مكتبة `mip`.
تلميح: ما هي الكلمة التي تعبر عن زيادة شيء ما؟
ما هو الغرض من الأداة `xsum` في مكتبة `mip` عند استخدامها في سياق مشكلة حقيبة الظهر؟
الإجابة: تُستخدم الأداة `xsum` لإنشاء التعبيرات الرياضية التي تتضمن المجاميع (sums)، وفي هذا السياق تُستخدم لحساب مجموع الأوزان الإجمالية للعناصر المختارة.
الشرح: في مشكلة حقيبة الظهر، نحتاج إلى حساب الوزن الإجمالي للعناصر التي سنختارها. الأداة `xsum` تساعد في جمع حاصل ضرب قيمة كل عنصر بمتغير القرار الخاص به (إما 0 أو 1)، مما يعطينا الوزن أو القيمة الإجمالية.
تلميح: فكر في كيف تجمع مكتبة `mip` قيم متعددة لإنشاء تعبير رياضي واحد.
ماذا يمثل كل متغير ثنائي في القائمة `x` بعد حل مشكلة حقيبة الظهر باستخدام مكتبة `mip`؟
الإجابة: كل متغير ثنائي في القائمة `x` يمثل قرارًا بشأن عنصر معين: إذا كان المتغير يساوي 1، فهذا يعني أن العنصر أُدرج في الحل (تم اختياره)؛ وإذا كان يساوي 0، فهذا يعني أن العنصر لم يُدرج (لم يُختر).
الشرح: المتغيرات الثنائية (BINARY) مصممة لتمثيل خيارات 'نعم' أو 'لا'. في مشكلة حقيبة الظهر، 'نعم' تعني اختيار العنصر و'لا' تعني عدم اختياره.
تلميح: ما هي طبيعة المتغيرات التي استخدمناها لتمثيل اختيار العناصر؟
كيف يتم حساب القيمة الإجمالية والوزن الإجمالي للعناصر المنتقاة بعد الحصول على الحل في مشكلة حقيبة الظهر؟
الإجابة: يتم حساب القيمة الإجمالية والوزن الإجمالي عن طريق التكرار على متغيرات القرار `x`، وجمع الأوزان والقيم لكل عنصر `i` مضروبة في قيمة متغير القرار الخاص به `x[i]`.
الشرح: لكل عنصر، نضرب وزنه/قيمته في قيمة متغير القرار المقابل له (0 أو 1). إذا كان المتغير 1، فإن الوزن/القيمة الكاملة للعنصر تُضاف إلى المجموع. إذا كان المتغير 0، فإن الوزن/القيمة تُضاف بصفر.
تلميح: فكر في العلاقة بين قيمة العنصر ووزنه، وقرار إدراجه في الحقيبة.