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)) <= Capacity(p) ;
```

```
 CONSTRAINT:
 identifier: MeetDemand
 index domain: m
 definition: sum(p, 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 := ۹۰ [$/(۱۰۰۰*mile)];
```

```
 ENDPROCEDURE ;
```

```
 PROCEDURE
 identifier: MainExecution
 body:
 solve TransportModel;
```

```
 ENDPROCEDURE ;
```

```
ENDMODEL Main_Transport ;
```

منابع
-----

We are moving forward, from now on you can call us AIMMS", 
Kallrath, Joseph (2004). Modeling Languages in Mathematical Optimization. Kluwer Academic Publishing. ISBN 978-1-4020-7547-6.  

Roelofs, Marcel (2010). AIMMS Language Reference (PDF). lulu.com. ISBN 978-0-557-42456-6.  

```
Roelofs, Marcel (2010). AIMMS User's Guide (PDF). lulu.com. ISBN 978-0-557-06360-4.  

```

Paragon Decision Technology (2009). "AIMMS Open Solver Interface API"