كيفية إنشاء وحدات ماكرو Visual Basic باستخدام Excel Solver في Excel 97

ملخص

توضح هذه المقالة كيفية استخدام Microsoft Excel Solver في Microsoft Excel 97 لإنشاء وحدات ماكرو Microsoft Visual Basic. يعد Microsoft Excel Solver Microsoft Excel الإضافية.

بالإضافة إلى ذلك، تتضمن هذه المقالة معلومات حول كيفية إنشاء وحدات الماكرو وكيفية تصميم ماكرو وكيفية العمل مع قيود ماكرو. تتناول هذه المقالة أيضا اللوغاريتم والأساليب المستخدمة من قبل Microsoft Excel Solver. توفر القائمة التالية كافة المواضيع المطروحة في المقالة.

مقدمة

تتضمن هذه المقالة معلومات حول Microsoft Excel Solver.

مزيد من المعلومات

وصف Solver Microsoft Excel

يعد Microsoft Excel Solver Solver Excel Microsoft الإضافية Microsoft Excel يساعدك على تحديد قيمة مثلى لصيغة في خلية مستهدفة معينة في ورقة عمل Microsoft Excel. Microsoft Excel يعدل القيم الأخرى الخلايا المرتبطة بالخلية الهدف باستخدام معادلة. بعد إنشاء معادلة وتحديد مجموعة من معلمات أو قيود للمتغيرات في المعادلة، يحاول Microsoft Excel Solver حلول مختلفة للتوصل إلى إجابة تفي بكافة القيود. يستخدم Microsoft Excel Solver العناصر التالية لمعادلة "حل":
  • والهدف هو الخلية الهدف -الخلية الهدف. أنها الخلية الموجودة في نماذج ورقة العمل التي سيتم تصغير، تكبير، أو تعيينها إلى قيمة معينة.
  • الخلايا المتغيرة -يتم تغيير خلايا متغيرات القرار. تؤثر هذه الخلايا على قيمة الخلية الهدف. يتم تغيير هذه الخلايا بواسطة Microsoft Excel Solver العثور على الحل الأمثل للخلية الهدف.
  • القيود -قيود تفرض قيود على المحتويات الخلايا. على سبيل المثال، قد تكون خلية واحدة في نموذج ورقة عمل مقيد إلى قيمة عدد صحيح، بينما يجوز تقييد أقل من قيمة المعطاة إلى خلية أخرى.
يمكن أتمتة الإنشاء ومعالجة نماذج Microsoft Excel Solver باستخدام Microsoft Visual Basic for Applications (VBA) الماكرو. توضح هذه المقالة كيفية استخدام ماكرو VBA اللغة باستخدام Microsoft Excel Solver في Microsoft Excel 97. تفترض هذه المقالة أنك معتاد على لغة VBA ومحرر Microsoft Visual Basic ل Microsoft Excel 97. الأمثلة المستخدمة في هذا المقال متوفرة للتحميل موقع Microsoft التالي على الويب:ملاحظة: يمكنك أيضا استخدام وحدات الماكرو والأمثلة الموضحة في هذه المقالة في إصدارات Microsoft Excel 5.0 و 7.0.

العودة إلى أعلى

كيفية استخدام دالات Microsoft Excel Solver في ماكرو VBA

لاستخدام الوظائف الإضافية ل Microsoft Excel Solver في ماكرو VBA، يجب الإشارة الإضافية من مشروع VBA من المصنف الذي يحتوي على وحدات الماكرو. إذا كانت لا تشير الأداة الإضافية ل Microsoft Excel Solver، ستتلقى خطأ التحويل البرمجي التالية عند محاولة تشغيل الماكرو:
خطأ في التحويل البرمجي: الفرعي أو الدالة غير معرفة.
للإشارة إلى Microsoft Excel الوظيفة الإضافية solver لوحدات الماكرو في المصنف الخاص بك، اتبع الخطوات التالية:
  1. افتح المصنف الخاص بك.
  2. من القائمة أدوات ، أشر إلى
    الماكرو، ثم انقر فوق محرر Visual Basic.
  3. من القائمة أدوات ، انقر فوق
    مراجع.
  4. في قائمة المراجع المتوفرة ، انقر لتحديد خانة الاختيار Solver.xls ، ومن ثم انقر فوق موافق.

    ملاحظة: إذا لم تشاهد Solver.xls في المراجع المتوفرة
    ، انقر فوق استعراض. في مربع الحوار إضافة مرجع ، موقع وحدد ملف Solver.xla، وثم انقر فوق فتح. عادة ما يتم العثور على الملف Solver.xla في المجلد الفرعي Office\Office\Library\Solver مايكروسوفت C:\Program.
أنت الآن جاهز لاستخدام وظائف Microsoft Excel Solver في ماكرو VBA.

العودة إلى أعلى

كيفية تصميم ماكرو VBA الذي ينشئ ويحل نموذج Microsoft Excel Solver بسيطة

على الرغم من أن Microsoft Excel Solver تقدم وظائف عديدة، أساسية لإنشاء وحل نموذج الوظائف الثلاث التالية:
  • دالة SolverOK
  • دالة سولفيرسولفي
  • دالة SolverFinish

دالة سولفيروك

تعريف الدالة سولفيروك نموذج Microsoft Excel Solver أساسية. الدالة سولفيروك بشكل عام الوظيفة الأولى التي ستستخدمها لإنشاء النموذج الخاص بك ل Microsoft Excel Solver. سولفيروك الدالة المكافئ للنقر فوق Solver في القائمة " أدوات "، ثم تحديد الخيارات الموجودة في مربع الحوار Solver Parameters . المثال التالي هو بناء جملة الدالة سولفيروك :
سولفيروك (سيتسيل، ماكسمينفال، فالويوف، بيتشانجي)
توضح المعلومات التالية بناء جملة الدالة سولفيروك :
  • سيتسيل تحديد الخلية الهدف.
  • ماكسمينفال يناظر ما إذا كنت تريد حل الخلية الهدف لقيمة القصوى (1) أو قيمة الحد أدنى (2) قيمة معينة (3).
  • فالويوف تعيين القيمة التي يتم مطابقتها الخلية الهدف. في حالة تعيين ماكسمينفال إلى 3، يجب تحديد هذه الوسيطة. في حالة تعيين ماكسمينفال إلى 1 أو 2، يمكنك حذف هذه الوسيطة.
  • بيتشانجي تحديد خلية أو نطاق من الخلايا التي يتم تغييرها.
الشكل 1 بربط وسيطات الدالة سولفيروك مع المعلمات في مربع الحوار Solver Parameters .


الشكل 1. معلمات مقترنة باستخدام الوسائط سولفيروك

 Figure 1. Parameters that are associated with the SolverOK arguments

دالة سولفيرسولفي

حل الدالة سولفيرسولفي الطراز باستخدام المعلمات التي قمت بتحديدها باستخدام الدالة سولفيروك . يكافئ النقر فوق الحل في Solver Parameters تنفيذ الدالة سولفيرسولفي
في مربع الحوار. المثال التالي هو بناء جملة الدالة سولفيرسولفي :
سولفيرسولفي (أوسيرفينيش، شوريف)

توضح المعلومات التالية بناء جملة الدالة سولفيرسولفي :
  • أوسيرفينيش يشير إلى ما إذا كنت تريد أن يقوم المستخدم بإنهاء حل الطراز.

    لإرجاع النتائج دون عرض مربع الحوار Solver نتائج ، تعيين هذه الوسيطة إلى TRUE. لإرجاع النتائج وعرض مربع الحوار Solver نتائج تعيين هذه الوسيطة إلى خطأ
  • شوريف يحدد الماكرو الذي يتم استدعاؤه عند إرجاع Microsoft Excel Solver حل وسط.

    يجب استخدام الوسيطة شوريف فقط عندما يتم تمرير TRUE لوسيطة ستيبثرو الدالة سولفيروبشنز .

دالة سولفيرفينيش

دالة سولفيرفينيش يشير إلى كيفية التعامل مع النتائج وما هو نوع التقرير لإنشاء بعد اكتمال عملية الحل. المثال التالي هو بناء جملة الدالة سولفيرفينيش :
سولفيرفينيش (كيبفينال، ريبورتاراي)

توضح المعلومات التالية بناء جملة الدالة سولفيرفينيش :
  • كيبفينال يشير إلى كيفية التعامل مع النتائج النهائية. إذا كان KeepFinal 1، يتم الاحتفاظ الحل النهائي القيم في الخلايا المتغيرة، استبدال القيم. إذا كان كيبفينال 2، يتم تجاهل القيم الحل النهائي، وتتم استعادة القيم السابقة.
  • ريبورتاراي يحدد صفيف التي تشير إلى نوع التقرير سيتم إنشاء Microsoft Excel عند الوصول إلى الحل. إذا تم تعيين ريبورتاراي إلى 1، ينشئ Microsoft Excel "تقريرا الإجابة". في حالة التعيين إلى 2، Microsoft Excel يقوم بإنشاء "تقرير حساسية"، ومجموعة إلى 3 Microsoft Excel يقوم بإنشاء "تقرير حدود". لمزيد من المعلومات حول هذه التقارير، راجع قسم "كيفية إنشاء تقارير عن حلول".
الشكل رقم 2. خيارات النتائج Microsoft Excel Solver المقترنة مع الوسائط سولفيرفينيش

 Figure 2. Solver results options that are associated with SolverFinish arguments

توضح هذه المقالة كيفية إنشاء نموذج Microsoft Excel Solver بسيطة بشكل تفاعلي. الخطوة الأولى إنشاء ورقة العمل الخاصة بنموذج. ورقة العمل تحتوي على بعض الخلايا بيانات وخلية واحدة على الأقل تحتوي على صيغة. تعتمد هذه الصيغة على الخلايا الأخرى الموجودة في ورقة العمل. بعد إعداد ورقة العمل الخاصة بك، انقر فوق
Solver في القائمة أدوات . في مربع الحوار Solver Parameters ، حدد الخلية الهدف والقيمة التي كنت للحل، النطاق من الخلايا التي يتم تغييرها والقيود. انقر فوق حل لبدء عملية الحل. بعد عثر Microsoft Excel Solver على حل، تظهر النتائج في ورقة العمل الخاصة بك ويعرض Microsoft Excel Solver مربع رسالة يطالبك إذا كنت تريد الاحتفاظ بالنتائج النهائية أو إذا كنت تريد تجاهل هذه. عند النقر فوق أحد الخيارات التالية، ينتهي Microsoft Excel Solver.

يوضح الشكل 3 طراز بسيطة التي يمكنك إنشاؤها باستخدام الخطوات التالية.

الشكل 3. نموذج بسيط: نموذج "الجذر التربيعي"

 Figure 3. A simple model: The Square Root model

في هذا المثال، تغيير الخلية A1، التي تحتوي على الصيغة، = A1 ^ 2 إلى قيمة التي ستجعل الخلية A2 يساوي قيمة 50. وبعبارة أخرى، إيجاد الجذر التربيعي 50. لا توجد أي قيود في الطراز الجذر التربيعي. الماكرو Find_Square_Root يحقق المهام التالية:
  • إعداد نموذج سيحل قيمة الخلية A2 القيمة 50 بتغيير قيمة الخلية A1.
  • حل الطراز.
  • حفظ النتائج النهائية لورقة العمل دون عرض مربع الحوار Solver نتائج .
إنشاء نموذج Microsoft Excel Solver هذا الماكرو بسيطة ويحل دون أي تدخل من المستخدم. توضح التعليمة البرمجية التالية الماكرو Find_Square_Root :
    Sub Find_Square_Root()
' Set up the parameters for the model.
' Set the target cell A2 to a value of 50 by changing cell A1.
SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=50, _
ByChange:=Range("A1")

' Solve the model but do not display the Solver Results dialog box.
SolverSolve UserFinish:=True

' Finish and keep the final results.
SolverFinish KeepFinal:=1

End Sub

الماكرو Find_Square_Root2 ، نسخة معدلة من الماكرو Find_Square_Root . إذا كنت تستخدم الدالة InputBox ، يطالبك الماكرو Find_Square_Root2 القيمة التي تريد حلها للخلية الهدف. بعد إدخال قيمة، الماكرو Find_Square_Root2 تعيين هذه المعلمة كقيمة الوسيطةفالويوف سولفيروك، إلى حل المشكلة، وحفظ النتائج في الجذر التربيعي المتغير، ثم يتجاهل الحل واسترداد القيمة في ورقة العمل إلى حالته الأصلية. أساسا، الماكرو Find_Square_Root2 يوضح كيفية حفظ النتائج في متغير واحد أو أكثر وثم استعادة الخلايا المتغيرة إلى قيمتها الأصلية.


توضح التعليمة البرمجية التالية الماكرو Find_Square_Root2 :
    Sub Find_Square_Root2()
Dim val
Dim sqroot

' Request the value for which you want to obtain the square root.
val = Application.InputBox( _
prompt:="Please enter the value for which you want " & _
"to find the square root:", Type:=1)

' Set up the parameters for the model.
SolverOK SetCell:=Range("A2"), MaxMinVal:=3, ValueOf:=val, _
ByChange:=Range("A1")

' Do not display the Solver Results dialog box.
SolverSolve UserFinish:=True

' Save the value of cell A1 (the changing cell) before you discard
' the results.
sqroot = Range("a1")

' Finish and discard the results.
SolverFinish KeepFinal:=2

' Show the result in a message box.
MsgBox "The square root of " & val & " is " & Format(sqroot, "0.00")

End Sub

العودة إلى أعلى

كيفية إنشاء تقارير عن حلول

يوفر Microsoft Excel Solver عدة أنواع من التقارير التي تصف كيفية تغيير النتائج وكيفية إغلاق القيود الواردة إلى القيم الهامة. يتم وضع كل تقرير في ورقة عمل منفصلة في المصنف الخاص بك. هذه التالية هي أنواع التقارير التي تقدم Microsoft Excel Solver:
  • يسرد التقرير الإجابات -"التقرير المتعلق بالإجابات" الخلية الهدف والخلايا المتغيرة مع القيم الأصلية والنهائية المقابلة والقيود، ومعلومات حول القيود.
  • تقرير حساسية -"التقرير المتعلق بحساسية" يوفر معلومات حول مدى حساسية الحل إلى التغييرات الصغيرة في الصيغة في الخلية الهدف.
  • يسرد تقرير حدود -"التقرير المتعلق بحدود" الخلية الهدف والخلايا المتغيرة مع القيم الخاصة بها والحدود الدنيا والعليا والقيم المستهدفة.
لإنشاء تقارير للنماذج الخاصة بك، حدد صفيف من القيم ريبورتاراي وسيطة للدالة سولفيرفينيش . لمزيد من المعلومات حول الوسيطة ريبورتاراي ، راجع المقطع "سولفيرفينيش (كيبفينال، ريبورتاراي)". على سبيل المثال، إذا كنت تريد إنشاء "تقرير حدود" النموذج الذي يقوم بإنشاء ماكرو Find_Square_Root2 ولا يحل، تعديل دالة سولفيرفينيش في الماكرو حيث يبدو مشابهاً للمثال التالي:
    SolverFinish KeepFinal:=2, ReportArray:= Array(3)
لإنشاء تقارير متعددة، تعديل دالة سولفيرفينيش حيث يبدو مشابهاً لنموذج التعليمات البرمجية التالية:
    SolverFinish KeepFinal:=2, ReportArray:= Array(1,2)
العودة إلى أعلى

كيفية استخدام وظائف Microsoft اكسسيلسولفير في ماكرو الحلقات

في العديد من الحالات، أنها لفكرة جيدة أن Microsoft Excel Solver حل الخلية الهدف لقيم متعددة. بشكل عام يمكن إنجاز هذا باستخدام إحدى بنيات الحلقات متوفرة باستخدام VBA.


يوضح الماكرو Create_Square_Root_Table كيف يعمل Microsoft Excel Solver في ماكرو حلقات. إنشاء ماكرو Create_Square_Root_Table جدول في ورقة عمل جديدة. يقوم بإدراج رقم واحد من خلال عشر سنوات والجذر التربيعي المقابلة لكل رقم. إنشاء ماكرو Create_Square_Root_Table الجدول باستخدام تكرار حلقي التكرار خلال الأرقام من 1 إلى 10 وحل الخلية الهدف في الطراز الجذر التربيعي لقيمة التي تطابق عدد التكرار. توضح التعليمة البرمجية التالية الماكرو Create_Square_Root_Table :
    Sub Create_Square_Root_Table()
' Add a new worksheet to the workbook.
Set w = Worksheets.Add

' Put the value 2 in cell C1 and the formula =C1^2 in cell C2.
w.Range("C1").Value = 2
w.Range("C2").Formula = "=C1^2"

' A loop that will make 10 iterations, starting with the number 1,
' and finishing at the number 10.
For i = 1 To 10

' Set the Solver parameters that indicate that Solver should
' solve the cell C2 for the value of i (where i is the number
' of the iteration) by changing cell C1.
SolverOk SetCell:=Range("C2"), ByChange:=Range("C1"), _
MaxMinVal:=3, ValueOf:=i

' Do not display the Solver Results dialog box.
SolverSolve UserFinish:=True

' Save the value of i in column A and the results of the
' changing cell in column B.
w.Cells(i, 1) = i
w.Cells(i, 2) = Range("C1")

' Finish and discard the final results.
SolverFinish KeepFinal:=2

Next

' Clear the range C1:C2
w.Range("C1:C2").Clear

End Sub


إنشاء ماكرو Create_Square_Root_Table الجدول المبين في الشكل 4.


الشكل رقم 4. الإخراج الذي تم إنشاؤه بواسطة الماكرو Create_Square_Root_Table


Figure 4. Output that is generated by the Create_Square_Root_Table macro

العودة إلى أعلى

كيفية التعامل مع القيود

قيد قيد على المحتويات خلية واحدة أو أكثر. يمكن أن يكون نموذج واحد أو عدة من القيود. يتم تعيين قيد مجموعة من أوجه عدم المساواة أو مجموعة من تحقيق المساواة إزالة تركيبات معينة من القيم للمتغيرات القرار من الحل. على سبيل المثال، قد يتطلب قيد خلية واحدة تكون أكبر من الصفر وأن خلية أخرى تحتوي على قيمة عدد صحيح فقط.

الطراز الجذر التربيعي التي ناقشناها حتى الآن هو نموذج بسيط لا يحتوي على أية قيود. يوضح الشكل 5 نموذج يستخدم القيود. والغرض من هذا النموذج العثور على أفضل مزيج من منتجات لأقصى ربح.

الشكل 5. خلط المنتج مع تناقص هامش الربح

Figure 5. Product mix with diminishing profit margin

على سبيل المثال، إذا كانت شركة تصنيع أجهزة التلفاز والاستريو ومكبرات الصوت، وتستخدم أجزاء جرد عامة مصادر الطاقة والأقماع مكبر الصوت وهكذا. الأجزاء الموجودة في العرض المحدود. كان الهدف تحديد المزيج الأكثر ربحية المنتجات للبناء. إنقاص الربح الخاص بك كل وحدة بالتخزين لأن حوافز سعرية إضافية مطلوبة لتحميل قناة التوزيع. الأس تناقص الغلة من 0.9. يتم استخدام هذا الأس لحساب الربح حسب المنتج في نطاق G11:I11.

هدفك العثور على أقصى ربح (الخلية G14). هي القيم التي سيتم تغيير للبحث عن أقصى ربح عدد الوحدات التي تبنيها. يمثل النطاق G9:G11 الخلايا المتغيرة في هذا النموذج. القيد الخاص بك فقط هو عدد الأجزاء التي تستخدمها لا يمكن أن يتجاوز عدد الأجزاء تكون في متناولهم. باستخدام Microsoft Excel Solver، يظهر هذا القيد ك E3:E7 < = B3:B7. إذا كنت تريد إنشاء نموذج Microsoft Excel Solver هذا بشكل تفاعلي، تبدو مشابهة لتلك الموجودة في الشكل 6 معلمات Microsoft Excel Solver.

الشكل 6. خلط Microsoft Excel Solver parameters للمنتج باستخدام نموذج "تقلص هامش الربح"

Figure 6. Microsoft Excel Solver parameters for the product mix with Diminishing Profit Margin model

لإنشاء حل "توافق المنتج" مع طراز "تقلص هامش الربح"، ستستخدم دالة جديدة الدالة SolverAdd ، بالإضافة إلى دالات Microsoft Excel Solver VBA التي تم وصفها سابقا. إضافة دالة SolverAdd القيد للطراز. يكافئ النقر فوق إضافة تنفيذ الدالة SolverAdd
زر في مربع الحوار Solver Parameters . على
الدالة SolverAdd على بناء الجملة التالي:
SolverAdd (CellRef، علاقة، فورمولاتيكست)

توضح المعلومات التالية بناء جملة الدالة SolverAdd :
  • مراجع CellRef خلية واحدة أو أكثر تشكل الجانب الأيسر للقيد.
  • علاقة هي العلاقة الحسابية بين اليسار واليمين جوانب قيد.
  • علاقة يمكن أن تكون قيمة بين 1 و 5 كما في المثال التالي:
    • كانت أقل من أو يساوي القيمة 1 (< =).
    • فو 2 يساوي (=).
    • القيمة 3 أكبر من أو يساوي (> =).
    • القيمة 4 عددا صحيحاً.
    • هو القيمة 5 الثنائي (قيمة صفر أو واحد).
  • فورمولاتيكست مراجع خلية واحدة أو أكثر تشكل الجانب الأيمن من constraint.* *
* * عند تحديد نطاق من الخلايا فورمولاتيكست وسيطة للدالة SolverAdd ، لاحظ ما إذا كان المرجع المطلق أو النسبي. وبشكل عام، يجب عليك تحديد مرجع مطلق لوسيطة فورمولاتيكست . ومع ذلك، إذا قمت بتحديد مراجع نسبية لوسيطة فورمولاتيكست ، تدرك أن المرجع بالنسبة إلى الخلية الهدف والخلايا النشطة لا.

ملاحظة: في Microsoft Excel، استخدم إصدارات 5.0 و 7.0، التدوين R1C1 عند تحديد خلية أو نطاق من الخلايا باستخدام وسيطة فورمولاتيكست . وفي المقابل، في Microsoft Excel 97، استخدام منهج نمط A1 لتحديد وسيطة فورمولاتيكست .

الشكل 7. الحقول المرتبطة
الوسائط SolverAdd

 Figure 7. Fields that are associated with the SolverAdd arguments

الماكرو Maximum_Profit الذي يقوم بإنشاء نموذج "توافق المنتج" مع طراز تناقص الغلة. تنفيذ الماكرو هذه الوظائف أو الوسائط التالية:

  • دالة سولفيروك للحد الأقصى قيمة الخلية الهدف وتحديد الخلايا لتغيير.
  • إضافة دالة SolverAdd القيد للطراز.
  • دالة سولفيرسولفي وجد حلاً دون عرض
    نتائج solver مربع الحوار.
  • ترجع الدالة سولفيرفينيش النتائج النهائية لورقة العمل.
توضح التعليمات البرمجية التالية النسبة Maximum_Profit ماكرو:
    Sub Maximum_Profit()
' Set up the parameters for the model.
' Determine the maximum value for the sum of profits in cell G14
' by changing the number of units to build in cells G9:I9.
Solverok setcell:=Range("G14"), maxminval:=1, _
bychange:=Range("G9:I9")

' Add the constraint for the model. The only constraint is that the
' number of parts used does not exceed the parts on hand--
' E3:E7<=B3:B7
SolverAdd CellRef:=Range("E3:E7"), Relation:=1, _
FormulaText:="$B$3:$B$7"

' Do not display the Solver Results dialog box.
SolverSolve UserFinish:=True

' Finish and keep the final results.
SolverFinish KeepFinal:=1

End Sub


ملاحظة: في Microsoft Excel، استخدم إصدارات 5.0 و 7.0، التدوين R1C1 عند تحديد خلية أو نطاق من الخلايا باستخدام وسيطة فورمولاتيكست . وفي المقابل، في Microsoft Excel 97، استخدام منهج نمط A1 لتحديد وسيطة فورمولاتيكست .

عند تشغيل الماكرو Maximum_Profit ، سيجد Microsoft Excel Solver حلاً بناء 160 أجهزة التليفزيون وأجهزة الاستريو 200 80 متحدثاً لربح أقصى مبلغ 14,917 دولار.


العودة إلى أعلى

كيفية تغيير وحذف القيود

يمكن تغيير القيود في الطراز الخاص بك برمجياً أو حذفها. تحديد قيود لها حججهم CellRef و علاقة .

لتغيير برمجياً قيداً موجود، استخدم الدالة سولفيرتشانجي . المثال التالي هو بناء جملة الدالة سولفيرتشانجي :
سولفيرتشانجي (CellRef، علاقة، فورمولاتيكست)
لاحظ أن الوسائط الخاصة بالدالة سولفيرتشانجي هي نفسها التي يمكنك استخدامها مع الدالة SolverAdd .

إذا أردت تغيير القيد في "توافق المنتج" مع طراز تناقص الغلة، قد استخدم الدالة سولفيرتشانجي . على سبيل المثال، حاليا القيد المحدد أن عدد الأجزاء المستخدمة أقل من أو يساوي عدد الأجزاء من ناحية (E3:E7 < = B3:B7). إذا أردت تغيير هذا القيد حيث يكون عدد الأجزاء المستخدمة أقل من أو يساوي العدد أجزاء (العدد المتوقع من أجزاء الحاضرة) بالإضافة إلى عدد من الأجزاء المطلوبة. سيبدو هذا القيد الجديد E3:E7 < = D3:D7. الماكرو التالي سيتغير القيد موجود E3:E7 < = B3:B7 إلى E3:E7 < = D3:D7 وحلها لإيجاد حل.

توضح التعليمة البرمجية التالية الماكرو Change_Constraint_and_Solve :
    Sub Change_Constraint_and_Solve()
' Change the constraint.
SolverChange CellRef:=Range("E3:E7"), Relation:=1, _
FormulaText:="$D$3:$D$7"

' Return the results and display the Solver Results dialog box.
SolverSolve UserFinish:=False

End Sub


لأنه يتم تعريف قيود CellRef والوسائط علاقة ، يمكنك فقط تغيير وسيطة فورمولاتيكست للقيد باستخدام الدالة سولفيرتشانجي . في حالة عدم تطابق CellRef وقيم علاقة قيداً موجودة، يجب حذف القيد وثم إضافة قيد المعدلة. لحذف قيد، استخدم الدالة سولفيرديليتي . المثال التالي هو بناء جملة الدالة سولفيرديليتي :


سولفيرديليتي (CellRef، علاقة، فورمولاتيكست)



ملاحظة يتم وسيطات الدالة سولفيرديليتي لتلك التي تستخدمها ب SolverAdd ووظائف سولفيرتشانجي .


الماكرو التالي يوضح كيفية حذف وإضافة قيد. في هذا المثال، الماكرو Change_Constraint_and_Solve2 إزالة القيد E3:E7 < = B3:B7 من "توافق المنتج" مع تناقص الغلة النموذج وإضافة قيد جديد. القيد الجديد تعديل القيد الأصلي، حيث يتم عكسها الجانب الأيمن والأيسر للقيد.

توضح التعليمة البرمجية التالية الماكرو Change_Constraint_and_Solve2 :
    Sub Change_Constraint_and_Solve2()
' Reverse the left and right sides of the constraint...
' Delete the constraint E3:E7<=B3:B7 and add the
' constraint B3:B7>=E3:E7.
SolverDelete CellRef:=Range("E3:E7"), Relation:=1, _
FormulaText:="$B$3:$B$7"
SolverAdd CellRef:=Range("B3:B7"), Relation:=3, _
FormulaText:="$E$3:$E$7"

' Return the results and display the Solver Results dialog box.
SolverSolve UserFinish:=False

End Sub


ملاحظة: في Microsoft Excel، استخدم إصدارات 5.0 و 7.0، التدوين R1C1 عند تحديد خلية أو نطاق من الخلايا باستخدام وسيطة فورمولاتيكست . وفي المقابل، في Microsoft Excel 97، استخدام منهج نمط A1 لتحديد وسيطة فورمولاتيكست .

العودة إلى أعلى

كيفية تحميل وحفظ النماذج الخاصة بك

عند حفظ المصنف الخاص بك، يتم حفظ آخر المعلمات التي حددتها في مربع الحوار Solver Parameters مع المصنف. لذلك، عند فتح المصنف، يتم المعلمات نفسه عندما قمت بحفظ المصنف الأخير.

يمكنك تعريف أكثر من مسألة لورقة عمل. تتكون كل مشكلة من الخلايا والقيود التي تقوم بإدخالها في مربعات الحوار Solver Options معلمات Solver . لأن المشكلة الأخيرة فقط حفظ ورقة العمل، سوف تفقد كافة المشاكل الأخرى ما لم تحفظها بشكل صريح. تريد حفظها، انقر فوق حفظ النموذج في مربع الحوار Solver Options . وبنفس الطريقة، إذا كنت ترغب في استعادة معلمات تم حفظه مسبقاً، انقر فوق تحميل النموذج في مربع الحوار Solver Options .

يتم تخزين نماذج solver في نطاق من الخلايا في ورقة عمل. الخلية الأولى في النطاق يحتوي على صيغة الخلية الهدف. تحتوي الخلية الثانية في النطاق على الصيغة الذي يعرف الخلايا التي يتم تغييرها في النموذج. الخلية الأخيرة في النطاق يحتوي على صفيف تمثل الخيارات المعينة في مربع الحوار Solver Options . الخلايا بين الخلية الثانية وآخر خلية تحتوي على الصيغ التي تمثل القيود الموجودة في الطراز.

يوضح الشكل 8 نموذجا للموظف الجدولة. افترض أنك تعمل شركة مصنعة صغيرة. يظهر هذا الجدول كل موظف الأجر بالدفع وعدد الساعات التي يتم جدولتها وعدد المتوقع لوحدات إنتاج كل موظف في ساعة واحدة. هدفك هو الوفاء بحصة معينة لعدد الوحدات المنتجة مع تقليل تكلفة العمالة.

الشكل 8. الوضع الجدولة الموظف
l
 Figure 8. Employee Scheduling model

عوامل إضافية (أو قيود) أنه يجب مراعاة الحد الأدنى/الحد الأقصى عدد ساعات العمل أي موظف واحد وعدد الوحدات التي ترغب في إنتاج. إذا كان لأسبوع محدد، تحتاج لإنتاج وحدات 3975 وتريد كل موظف للعمل بين 30 و 45 ساعة، سيبدو معلمات Microsoft Excel Solver مشابهة لتلك الموضحة في الجدول التالي:

المعلمةنطاق الخلاياالوصف
الخلية الهدف$D$12تكلفة العمالة.
الخلايا المتغيرة$C$2:$C$8عدد ساعات العمل للموظف الواحد.
قيود$C$ 2: $C$ 8 < = 45الحد الأقصى عدد الساعات في الموظف هو 45.
$C$ 2: $C$ 8 > = 30الحد الأدنى للساعات كل موظف هو 35.
$G ر 12 = 3975هو عدد وحدات 3975.


تكون أهدافك لحل لتكلفة العمالة الأمثل على أساس أسبوعي لحفظ كل طراز أسبوعيا، وحتى تتمكن من تحميل أي طراز الأسبوعية عند الحاجة إليها.

في ماكرو، يمكن حفظ معلمات Microsoft Excel Solver لنموذج وتحميلها باستخدام دالات سولفيرلواد سولفيرسافي على التوالي. سولفيرسافي ودالات سولفيرلواد لها بناء الجملة التالي:

سولفيرسافي (سافارا)

سولفيرلواد (لواداريا)


سولفيرسافي ومهام سولفيرلواد يكون وسيطة واحدة فقط الوسائط لواداريا وسافارا على التوالي. تحديد الوسيطات نطاق في ورقة عمل حيث يتم تخزين معلومات الطراز.

الماكرو التالي New_Employee_Schedule ، يوضح كيفية إنشاء حل وحفظ نموذج استناداً إلى إدخال المستخدم. تتم مطالبة المستخدم بتوفير تاريخ الطراز وعدد وحدات لإنتاج الحد الأدنى والحد الأقصى عدد الساعات لكل موظف. ثم يتم استخدام هذه البيانات لإنشاء النموذج. حل الطراز وحفظها ثم مع مدخلات المستخدم.

توضح التعليمة البرمجية التالية الماكرو New_Employee_Schedule :
    Sub New_Employee_Schedule()    
' Prompt the user for the date of the model, the units to produce,
' and the maximum and minimum number of hours per employee.
ModelDate = Application.InputBox( _
Prompt:="Date of Model:", Type:=2)
Units = Application.InputBox( _
Prompt:="Projected Number of Units:", Type:=1)
MaxHrs = Application.InputBox( _
Prompt:="Maximum Number of Hours Per Employee:", Type:=1)
MinHrs = Application.InputBox( _
Prompt:="Minimum Number of Hours Per Employee:", Type:=1)

' Clear any previous Solver settings.
SolverReset

' Set the target cell, D12, to a minimum value by changing
' the range, C2:C8.
SolverOk SetCell:=Range("$D$12"), MaxMinVal:=2, _
ByChange:=Range("C2:C8")

' Add the constraint that number of hours worked <= MaxHrs.
SolverAdd CellRef:=Range("C2:C8"), Relation:=1, FormulaText:=MaxHrs

' Add the constraint that number of hours worked >=MinHrs.
SolverAdd CellRef:=Range("C2:C8"), Relation:=3, FormulaText:=MinHrs

' Add the constraint that number of units produced = Units.
SolverAdd CellRef:=Range("G12"), Relation:=2, FormulaText:=Units

' Solve the model and keep the final results.
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1

' Save the input values for ModelDate, MaxHrs, MinHrs, and Units
' in columns I:L.
Set ModelRange = Range("I2:R2").CurrentRegion.Offset( _
Range("I2:R2").CurrentRegion.Rows.Count).Resize(1, 1)
ModelRange.Resize(1, 4) = Array("'" & Format(ModelDate, "m/d/yy"), _
Units, MaxHrs, MinHrs)

' Save the model parameters to the range M:R in the worksheet.
SolverSave SaveArea:=ModelRange.Offset(, 4).Resize(1, 6)

End Sub

ملاحظة: في Microsoft Excel، استخدم إصدارات 5.0 و 7.0، التدوين R1C1 عند تحديد خلية أو نطاق من الخلايا باستخدام وسيطة فورمولاتيكست . وفي المقابل، في Microsoft Excel 97، استخدام منهج نمط A1 لتحديد وسيطة فورمولاتيكست .

الشكل 9 يوضح كيفية ظهور معلومات الطراز المحفوظة في ورقة العمل.

الرقم 9. معلومات النموذج التي تم حفظها بواسطة الماكرو New_Employee_Schedule

Figure 9. Model information that is saved by the New_Employee_Schedule macro

حفظ الماكرو New_Employee_Schedule كل طراز جديد إلى ورقة العمل. يمكن تحميل ماكرو Load_Employee_Schedule أحد هذه الطرازات المحفوظة. مطالبة المستخدم للنموذج تحميل الماكرو وثم يبحث العمود الأول فيما يتعلق بالتاريخ الطراز. إذا تم العثور على تاريخ طراز، الماكرو Load_Employee_Schedule تحميل نموذج المقابلة أنه يحل وثم يحتفظ النتائج النهائية.

توضح التعليمة البرمجية التالية الماكرو New_Employee_Schedule:
    Sub Load_Employee_Schedule()    
' Prompt for the date of the model.
ModelDate = Application.InputBox( _
Prompt:="Date of Model to Load:", Type:=2)

' Locate the date in column I.
Set DateRange = Range("I2").CurrentRegion.Resize(, 1)
r = Application.Match(ModelDate, DateRange, 0)

If IsError(r) Then
' Display a message if the model date is not found
MsgBox "Cannot find a model with the date " & ModelDate
Else
' If the model date is found, load the model into Solver,
' solve the model, and keep the final results.
SolverLoad LoadArea:=DateRange.Offset(r - 1, 4).Resize(1, 6)
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If

End Sub

يقدم الماكرو New_Employee_Schedule الدالة سولفيريسيت . يمكن استخدام الدالة سولفيريسيت بحذف كافة الخلايا التحديدات والقيود في
مربع الحوار solver Parameters وإعادة تعيين كافة الإعدادات في سولفيريسيت تحتوي الدالة على أية وسائط.

العودة إلى أعلى

كيفية العثور على مزيد من المعلومات حول Microsoft Excel Solver

توفر المصادر التالية مزيد من المعلومات حول كيفية استخدام الأداة الإضافية ل Microsoft Excel Solver.

  • للحصول على تعليمات حول رسائل معينة solver، راجع
    أنظمة الخطوط الأمامية.
  • للحصول على تلميحات حول بناء للقراءة، راجع نماذج يمكن التحكم فيها،
    أنظمة الخطوط الأمامية.
  • لمزيد من المعلومات حول Solver حدود القيود و، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

    75714 حدود solver للقيود

  • للعديد من الأمثلة التي تستخدم Microsoft Excel Solver الإضافية في Microsoft Excel، راجع ملف عينة Solvsamp.xls.
  • المثال التالي هو الموقع الافتراضي لنموذج الملف المضمن مع Microsoft Excel 97:
    \Program Files\Microsoft Office\Office\Examples\Solver\SolvSamp.xls
  • المثال التالي هو الموقع الافتراضي لنموذج الملف المضمن مع Microsoft Excel 7.0:
    \MSOffice\Excel\Examples\Solver\SolvSamp.xls
  • المثال التالي هو الموقع الافتراضي لنموذج الملف المضمن مع Microsoft Excel 5.0:
    \Excel\Examples\Solver\SolvSamp.xls
العودة إلى أعلى

كيفية التعرف على المزيد حول اللوغاريتم والأساليب المستخدمة من قبل Microsoft Excel Solver

يستخدم Microsoft Excel Solver رمز التحسين غير الخطية "العامة خفض متدرج" (GRG2) الذي تم تطويره من قبل ليون لاسدون، جامعة تكساس في أوستن، والآن وارين، جامعة ولاية كليفلاند.

للحصول على معلومات إضافية حول الخوارزمية المستخدمة من قبل Microsoft Excel Solver، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

82890 solver الاستخدامات العامة المنخفض



مشاكل خطي وعدد صحيح استخدام أسلوب يعالجون بحدود على المتغيرات، وأسلوب الفرع وربط، تنفذها جون واطسون ودان فيلسترا، الجبهة سيستمز لمزيد من المعلومات حول عملية الحل الداخلية المستعملة من قبل Solver، يمكن الاتصال:

Frontline Systems, Inc.P.O. Box 4288
Incline Village, NV 89450-4288
(702) 831-0300
Web site: http://www.frontsys.com
Electronic mail: info@frontsys.com



تحديدات من التعليمات البرمجية ل Microsoft Excel Solver حقوق النشر 1990 و 1991، 1992 و 1995 بأنظمة الخطوط الأمامية، وأجزاء Inc. 1989 حقوق النشر بواسطة أساليب الأمثل، شركة

ملاحظة: Microsoft Excel الوظيفة الإضافية solver الموضح في هذه المقالة هو توفير "كما هي" ولا نضمن أن يمكن استخدامه في كافة الحالات. على الرغم من أن تساعد أخصائيو الدعم لدى Microsoft مع التثبيت والوظائف الموجودة في هذه الوظيفة الإضافية، لن يقوموا بتعديل الوظيفة الإضافية لتوفير وظائف جديدة.


أية ضمانات. يتم توفير هذا البرنامج "كما-،" دون تقديم ضمان من أي نوع، وأي استخدام لهذا البرنامج المنتج على مسؤوليتك الخاصة.


العودة إلى أعلى
خصائص

رقم الموضوع: 843304 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات