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