AMPL

لغة AMPL ( لغة برمجة رياضية ) هي لغة نمذجة جبرية لوصف وحل المسائل عالية التعقيد في الحوسبة الرياضية واسعة النطاق (مثل مسائل التحسين والجدولة واسعة النطاق). [ 1 ] طُوّرت هذه اللغة على يد روبرت فورير ، وديفيد جاي، وبرايان كيرنيغان في مختبرات بيل . تدعم AMPL عشرات برامج الحل ، سواءً كانت مفتوحة المصدر أو تجارية ، بما في ذلك CBC و CPLEX و FortMP و MOSEK و MINOS و IPOPT و SNOPT و KNITRO وLGO. تُمرّر المسائل إلى برامج الحل كملفات nl . تُستخدم AMPL من قِبل أكثر من 100 عميل من الشركات، بالإضافة إلى الوكالات الحكومية والمؤسسات الأكاديمية. [ 2 ]

إحدى مزايا لغة AMPL هي تشابه تركيبها النحوي مع الترميز الرياضي لمسائل التحسين . وهذا يسمح بتعريف مسائل التحسين تعريفًا موجزًا ​​وسهل القراءة . تقبل العديد من برامج الحل الحديثة المتوفرة على خادم NEOS (الذي كان يُستضاف سابقًا في مختبر أرغون الوطني ، ويُستضاف حاليًا في جامعة ويسكونسن، ماديسون [ 3 ] ) مدخلات AMPL. ووفقًا لإحصائيات NEOS، تُعد AMPL الصيغة الأكثر شيوعًا لتمثيل مسائل البرمجة الرياضية.

سمات

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

تتوفر الإجراءات وبيانات تدفق التحكم في لغة AMPL لـ

  • تبادل البيانات مع مصادر بيانات خارجية مثل جداول البيانات وقواعد البيانات وملفات XML والملفات النصية
  • مهام المعالجة المسبقة واللاحقة للبيانات المتعلقة بنماذج التحسين
  • بناء خوارزميات هجينة لأنواع المشاكل التي لا تتوفر لها حلول فعالة مباشرة.

لدعم إعادة الاستخدام وتبسيط بناء مشاكل التحسين واسعة النطاق، يسمح AMPL بفصل النموذج والبيانات.

يدعم برنامج AMPL مجموعة واسعة من أنواع المشاكل، من بينها:

يستدعي برنامج AMPL برنامج حل في عملية منفصلة، ​​وهذا ما يوفر المزايا التالية:

  • يمكن للمستخدم مقاطعة عملية الحل في أي وقت
  • لا تؤثر أخطاء المُحلِّل على المُفسِّر
  • يمكن استخدام نسخة 32 بت من برنامج AMPL مع برنامج حل 64 بت والعكس صحيح.

يتم التفاعل مع برنامج الحل من خلال واجهة nl محددة جيدًا .

التوافر

يتوفر برنامج AMPL للعديد من أنظمة التشغيل الشائعة ذات 32 و64 بت ، بما في ذلك لينكس ، وماك أو إس ، وسولاريس ، وإيه آي إكس ، وويندوز . [ 5 ] يُعدّ برنامج الترجمة برنامجًا احتكاريًا تديره شركة AMPL Optimization LLC. ومع ذلك، توجد العديد من الخدمات عبر الإنترنت التي توفر إمكانيات مجانية للنمذجة والحل باستخدام AMPL. [ 6 ] [ 7 ] كما تتوفر نسخة مجانية للطلاب بوظائف محدودة، ونسخة مجانية كاملة الميزات للدورات الأكاديمية. [ 8 ]

توفر AMPL أيضًا واجهات برمجة تطبيقات مفتوحة المصدر تُمكّن من التكامل مع لغات البرمجة العامة. وتتوفر واجهات برمجة التطبيقات الرسمية للغات Python وR وC++ وC# وMATLAB وJava، مما يسمح للمستخدمين بإنشاء النماذج وتحديثها وحلها برمجيًا. [ 9 ]

يمكن استخدام AMPL من داخل برنامج Microsoft Excel عبر وظيفة SolverStudio الإضافية لبرنامج Excel.

مكتبة حلول AMPL (ASL)، التي تتيح قراءة ملفات nl وتوفر التفاضل التلقائي، هي مكتبة مفتوحة المصدر. وتُستخدم في العديد من برامج الحلول لتنفيذ اتصال AMPL.

توفر مكتبة AMPL/MP مكتبة أخرى مفتوحة المصدر لبناء حلول البرمجة الخطية، والبرمجة المختلطة، وبرمجة القيود ، لتحل محل مكتبة ASL في الحالات التي لا تتطلب التفاضل التلقائي. [ 10 ]

تاريخ الحالة

يعرض هذا الجدول خطوات مهمة في تاريخ AMPL.

سنةأبرز النقاط
1985تم تصميم وتنفيذ AMPL [ 1 ]
1990تم نشر ورقة بحثية تصف لغة نمذجة AMPL في مجلة علوم الإدارة [ 11 ].
1991يدعم AMPL البرمجة غير الخطية والتفاضل التلقائي
1993حصل روبرت فورير وديفيد جاي وبريان كيرنيغان على جائزة ORSA/CSTS [ 12 ] من جمعية بحوث العمليات الأمريكية ، وذلك لكتاباتهم حول تصميم أنظمة البرمجة الرياضية ولغة نمذجة AMPL
1995امتدادات لتمثيل الهياكل الخطية المجزأة والشبكية
1995بنى البرمجة النصية
1997دعم مُحسّن لحلول المعادلات غير الخطية
1998يدعم AMPL مسائل نظرية التكاملية
2000الوصول إلى قواعد البيانات العلائقية وجداول البيانات
2002دعم برمجة القيود [ 4 ]
2003تأسست شركة AMPL Optimization LLC على يد مخترعي لغة AMPL، روبرت فورير، وديفيد جاي، وبرايان كيرنيغان. وقد تولت الشركة الجديدة تطوير ودعم لغة نمذجة AMPL من شركة لوسنت تكنولوجيز .
2005تم افتتاح مجموعة جوجل الخاصة بلغة نمذجة AMPL [ 13 ]
2008تم تقديم Kestrel: واجهة AMPL لخادم NEOS
2012حصل روبرت فورير وديفيد جاي وبريان كيرنيغان على جائزة INFORMS Impact لعام 2012 باعتبارهم مبتكري إحدى أهم لغات النمذجة الجبرية. [ 14 ]
2012أصبح كتاب AMPL متاحًا مجانًا عبر الإنترنت [ 15 ]
2013تتوفر بيئة تطوير متكاملة جديدة متعددة المنصات (IDE) لـ AMPL [ 16 ]
2015مكتبة الحلول الجديدة MP [ 10 ]
2017تُصبح لغة AMPL متاحة ضمن لغات برمجة مختلفة من خلال واجهات برمجة التطبيقات (APIs) . [ 9 ]

نموذج توضيحي

تُستخدم مسألة نقل من جورج دانتزيج لتقديم نموذج AMPL كمثال. تجد هذه المسألة جدول الشحن الأقل تكلفة الذي يلبي متطلبات الأسواق والإمدادات في المصانع. [ 17 ]

تحديد النباتات ؛ تحديد الأسواق ؛# سعة المصنع p في الحالات param السعة { p في المصانع # الطلب في السوق m في الحالات param الطلب { m في الأسواق # المسافة بآلاف الأميال param Distance { Plants , Markets };# تكلفة الشحن بالدولار لكل صندوق لكل ألف ميل (معامل الشحن # تكلفة النقل بآلاف الدولارات لكل حالة param TransportCost { p in Plants , m in Markets } : = Freight * Distance [ p , m ] / 1000 ;# كميات الشحن في الحالات var shipment { Plants , Markets } >= 0 ;# إجمالي تكاليف النقل بآلاف الدولارات تقليل التكلفة : مجموع { p في المصانع ، m في الأسواق } تكلفة النقل [ p ، m ] * الشحنة [ p ، m # راقب حد العرض في المصنع p بحيث يكون العرض { p في المصانع }: مجموع { m في الأسواق } الشحنة [ p ، m ] <= السعة [ p # تلبية الطلب في السوق m بشرط أن يكون الطلب { m في الأسواق }: مجموع { p في المصانع } الشحنة [ p ، m ] >= الطلب [ m بيانات ؛مجموعة النباتات : = سياتل سان دييغو ؛ مجموعة الأسواق : = نيويورك شيكاغو توبيكا ؛​​​param Capacity : = seattle 350 san - diego 600 ;param Demand : = new - york 325 chicago 300 topeka 275 ;param Distance : new - york chicago topeka : = seattle 2.5 1.7 1.8 san - diego 2.5 1.8 1.4 ;param Freight : = 90 ;

حلول

فيما يلي قائمة جزئية بالبرامج التي تدعم AMPL: [ 18 ]

حل المشكلاتأنواع المشاكل المدعومة
أبوبتالبرمجة غير الخطية للأعداد الصحيحة المختلطة
أرتليس نيتروالبرمجة الخطية والتربيعية وغير الخطية
بونمينالبرمجة غير الخطية للأعداد الصحيحة المختلطة
BPMPDالبرمجة الخطية والتربيعية
عملة معدنية أو هيئة الإذاعة الكنديةالبرمجة المختلطة بالأعداد الصحيحة
عملة معدنية أو شريحة CLPالبرمجة الخطية
كونوبتالبرمجة غير الخطية
كوين [ 19 ]البرمجة غير الخطية المختلطة للأعداد الصحيحة (MINLP)
مجمعالبرمجة الخطية، والبرمجة التربيعية، والبرمجة المخروطية من الدرجة الثانية ، والبرمجة المختلطة للأعداد الصحيحة
مُحسِّن CPLEX CP [ 20 ]برمجة الإيقاف
فلترالبرمجة غير الخطية
FortMPالبرمجة الخطية والتربيعية والبرمجة الخطية المختلطة
Gecode [ 21 ]برمجة الإيقاف
اختبار IPOPTالبرمجة غير الخطية
JaCoP [ 22 ]برمجة الإيقاف
LGO [ 23 ]التحسين غير الخطي العالمي والمحلي
lp_solve [ 24 ]البرمجة الخطية والبرمجة الخطية المختلطة
مينوسالبرمجة الخطية وغير الخطية
مينتوالبرمجة المختلطة بالأعداد الصحيحة
موسكالبرمجة غير الخطية، والبرمجة الخطية المختلطة، والبرمجة التربيعية، والبرمجة التربيعية المختلطة، والبرمجة المقيدة تربيعيًا ، والبرمجة غير الخطية المخروطية والمحدبة
محرك الأوكتيراكتجميع أنواع مسائل التحسين بدون حدود تفاضلية أو تكاملية، بما في ذلك المسائل غير المتصلة ذات الدوال الأولية الدنيا والقصوى .
SCIPالبرمجة المختلطة بالأعداد الصحيحة
سنوبتالبرمجة غير الخطية
سولوم [ 25 ]البرمجة الخطية والبرمجة الخطية المختلطة
WORHPالبرمجة غير الخطية
XAالبرمجة الخطية والبرمجة الخطية المختلطة
إكسبريسالتحسين الخطي والتربيعي المحدب ونظائرهما ذات الأعداد الصحيحة المختلطة

انظر أيضاً

مراجع

  1. 1 2 فورير، روبرت ؛ جاي، ديفيد م؛ كيرنيغان، برايان و (2003). AMPL: لغة نمذجة للبرمجة الرياضية . الولايات المتحدة الأمريكية: دار نشر دوكسبوري/بروكس/كول. ISBN 978-0-534-38809-6.
  2. "وظيفة شاغرة" . مؤرشف من الأصل بتاريخ 11 سبتمبر 2011. تم الاطلاع عليه بتاريخ 29 يوليو 2011 .
  3. "حول" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  4. فورير ، روبرت ؛ جاي، ديفيد م . (2002). "توسيع لغة النمذجة الجبرية لدعم البرمجة المقيدة" . مجلة INFORMS للحوسبة . 14 (4): 322-344 . CiteSeerX 10.1.1.8.9699 . doi : 10.1287/ijoc.14.4.322.2825 . 
  5. "المنصات" . شركة AMPL Optimizations Inc. مؤرشفة من الأصل في 14 مايو 2022. تم الاطلاع عليها في 1 نوفمبر 2019 .
  6. "خادم NEOS للتحسين" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  7. "جرب AMPL!" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  8. "تنزيلات AMPL" . مؤرشف من الأصل بتاريخ 26 مايو 2015. تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  9. 1 2 "واجهات برمجة تطبيقات AMPL" . تحسين AMPL . تم الاسترجاع في 11 سبتمبر 2025 .
  10. 1 2 "AMPL/MP" . تحسين AMPL . تم الاسترجاع في 11 سبتمبر 2025 .
  11. فورير، روبرت ؛ جاي، ديفيد م.؛ كيرنيغان، برايان و. (1990). "لغة نمذجة للبرمجة الرياضية" (ملف PDF) . علوم الإدارة . 36 (5): 519-554-583. doi : 10.1287/mnsc.36.5.519 .
  12. INFORMS. "ICS - INFORMS" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 7 أكتوبر 2006. تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  13. "مجموعات جوجل" .
  14. إنفورمز. "جائزة إنفورمز للتأثير" . مؤرشفة من الأصل بتاريخ 22 أكتوبر 2013. تم الاطلاع عليها بتاريخ 11 أغسطس 2015 .
  15. "كتاب AMPL: دليل شامل لبناء نماذج التحسين، للمبتدئين أو ذوي الخبرة" . تم الاطلاع عليه في 5 مارس 2021 .
  16. "مجموعات جوجل" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  17. دانتزيج، جورج (2016) [1963]. "3. صياغة نموذج برمجة خطية" . البرمجة الخطية وتوسعاتها . مطبعة جامعة برينستون. ص 32-62 . ISBN  978-1-4008-8417-9.
  18. "المُحلِّلات - AMPL" . مؤرشف من الأصل في 27 فبراير 2014. تم الاطلاع عليه في 21 يناير 2018 .
  19. "Couenne" . مؤرشف من الأصل في 29 أكتوبر 2013. تم الاطلاع عليه في 27 أكتوبر 2013 .
  20. "mp/solvers/ilogcp at master · ampl/mp · GitHub" . GitHub . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  21. "mp/solvers/gecode at master · ampl/mp · GitHub" . GitHub . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  22. "mp/solvers/jacop at master · ampl/mp · GitHub" . GitHub . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  23. "LGO - AMPL" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  24. "استخدام دالة lpsolve من AMPL" . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  25. "mp/solvers/sulum at master · ampl/mp · GitHub" . GitHub . تم الاطلاع عليه بتاريخ 11 أغسطس 2015 .
  26. "الموقع الرسمي لـ GLPK" . تم الاطلاع عليه بتاريخ 17 سبتمبر 2020 .