سامانه مدل‌سازی چندبعدی تعاملی پیشرفته

AIMMS (مخفف Advanced Interactive Multidimensional Modeling System به معنی سامانه مدل‌سازی چندبعدی تعاملی پیشرفته) یک سیستم نرم‌افزاری طراحی شده برای مدل سازی و حل مشکلات از نوع مقیاس بزرگ بهینه‌سازی و برنامه‌ریزی است. آن شامل یک زبان مدل سازی جبری و محیط توسعه یکپارچه برای هر دو مدل ویرایشی که اولی ایجاد یک رابط کاربر گرافیکی در اطراف این مدل، و دومی یک محیط کاربر نهایی گرافیکی است می‌باشد. AIMMS به چندین حل کننده از طریق حل کننده واسطه باز AIMMS بستگی دارد، با حل کننده واسطه بازCOIN-OR گیج نشده است که برخلاف AIMMS OSI یک پروژه متن باز هستند. حل کننده‌های پشتیبانی شده عبارتند از: CPLEX, Gurobi MOSEK, CBC, Conopt, MINOS, IPOPT, SNOPT, KNITRO و CP Optimizer.
AIMMS به عنوان یکی از پنج زبان مهم مدل سازی جبری در نظر گرفته می‌شود. (دیگران: AMPL, GAMS, LINDO / LINGO و MPL)، و خالقش (یوهانس J. Bisschop) برای کار خود را در این زبان با جایزه تاثیر گذار INFORMS تقدیر شده است.
ویژگی‌ها
ویژگی‌های AIMMS مخلوطی از سبک‌های برنامه‌نویسی اعلانی و ضروری است. فرمولاسیون مدل‌ها بهینه‌سازی از طریق عناصر اعلانی زبان مانند مجموعه و شاخص‌ها صورت می‌گیرید، به خوبی پارامترهای عددی و چند بعدی، متغیرها و محدودیت‌ها، که به تمام زبان‌های مدل سازی جبری معمول هستند و برای توضیحات مختصر از بسیاری مشکلات در حوزه بهینه‌سازی ریاضی اجازه می‌دهد. واحدهای اندازه‌گیری به صورت بومی در زبان پشتیبانی می‌شوند، و تجزیه و تحلیل واحدهای کامپایل برای تشخیص خطاها مدل سازی به کار گرفته می‌شوند.
روش‌ها و اظهارات کنترل جریان در AIMMS برای موارد زیر در دسترس هستند
تبادل اطلاعات با منابع داده خارجی مانند صفحات گسترده، پایگاه داده، XML و فایل‌های متنی
قبل داده و پس از پردازش وظایف در اطراف مدل بهینه‌سازی
کاربران دست زدن به رویداد رابط
ساخت و ساز از الگوریتم ترکیبی برای نوع مشکل برای حل آن هیچ مستقیم کارآمد در دسترس هستند.
برای حمایت از استفاده مجدد از قطعات مدل سازی مشترک، AIMMS اجازه می‌دهد تا طراحان به سازماندهی مدل خود را در کتابخانه مدل کاربر.
پشتیبانی AIMMS از طیف گسترده‌ای از انواع مسائل بهینه‌سازی ریاضی:
برنامه‌ریزی خطی
برنامه‌نویسی درجه دوم
برنامه‌ریزی غیر خطی
برنامه‌نویسی مختلط عدد صحیح
برنامه‌ریزی غیر خطی عدد صحیح مختلط
بهینه‌سازی جهانی
مشکلات مکمل (MPECs)
برنامه‌نویسی تصادفی
بهینه‌سازی قوی
برنامه‌نویسی محدودیت
مدل نمونه
یک مشکل حمل و نقل از George Dantzig برای ارائه یک مدل AIMMS مورد استفاده قرار می‌گیرد.
MAIN MODEL Main_Transport
DECLARATION SECTION
QUANTITY:
identifier: QuantityLength
base unit: mile ;
QUANTITY:
identifier: QuantityCurrency
base unit: $ ;
SET:
identifier: Plants
index: p ;
SET:
identifier: Markets
index: m ;
PARAMETER:
identifier: Capacity
index domain: p ;
PARAMETER:
identifier: Demand
index domain: m ;
PARAMETER:
identifier: Distance
index domain: (p,m)
unit: 1000 * mile ;
PARAMETER:
identifier: Freight
unit: $/(۱۰۰۰ * mile) ;
PARAMETER:
identifier: TransportCost
index domain: (p,m)
unit: 1000 * $
definition: Freight * Distance(p,m) ;
VARIABLE:
identifier: Shipment
index domain: (p,m)
range: nonnegative ;
CONSTRAINT:
identifier: SatisfyCapacity
index domain: p
definition: sum(m, Shipment(p,m))
= Demand(m) ;
VARIABLE:
identifier: TotalCost
unit: 1000 * $
definition: sum((p,m), TransportCost(p,m)*Shipment(p,m)) ;
MATHEMATICAL PROGRAM:
identifier: TransportModel
objective: TotalCost
direction: minimize
constraints: AllConstraints
variables: AllVariables ;
ENDSECTION ;
PROCEDURE
identifier: MainInitialization
body:
Plants := data { seattle, san-diego ;
Markets := data { new-york, Chicago, topeka ;
Capacity(p) := data { seattle: 350, san-diego: 600 ;
Demand(m) := data { new-york: 325, Chicago: 300, topeka: 275 ;
Distance(p,m) := data
{ (seattle, new-york): 2.5, (seattle, Chicago): 1.7, (seattle, topeka): 1.8,
(san-diego, new-york): 2.5, (san-diego, Chicago): 1.8, (san-diego, topeka): 1.4 ;
Freight := ۹۰ ;
ENDPROCEDURE ;
PROCEDURE
identifier: MainExecution
body:
solve TransportModel;
ENDPROCEDURE ;
ENDMODEL Main_Transport ;