Deployment of AIMMS applications
Once the development of an AIMMS model is completed, you can choose to deploy your model as a graphical end-user application using the GUI builder capabilities of AIMMS, or as an optimization component called by another application with its own front-end GUI. In either case, you can choose to deploy your application as a local stand-alone application, or as a server-based optimization application. This leads to the four deployment options shown below. AIMMS offers features to support each of these deployment options.
|AIMMS GUI||Other GUI|
|1. Stand-alone AIMMS applications||2. Local AIMMS optimization components|
3. Server-based AIMMS applications with AIMMS Clients: AIMMS PRO
|4. Server-based AIMMS optimization components|
With a stand-alone AIMMS application, you can offer the end-users of your application the full functionality that you have developed in AIMMS, including the Graphical User Interface (GUI). End-Users could for example load and modify data, perform optimization runs, and view and export the results; all from the GUI of your application. For this type of use, we offer AIMMS End-User licenses.
In addition, you can also use the freely distributable AIMMS Viewer to allow anyone to browse the saved results of an AIMMS-based optimization application through the GUI of the application. The Viewer does not allow entering or modifying data or performing optimization runs, but enables you to easily share your results with colleagues and customers.
To facilitate deploying your stand-alone AIMMS application to end-users, AIMMS offers a feature to wrap your entire application plus corresponding data into a single file: an AIMMSpack. We also offer an installation-free version of AIMMS, which enables users who do not have administrator rights on their computer to run an AIMMS application as a simple executable file.
By deploying your AIMMS model as an optimization component, you can make the benefits of your AIMMS optimization model available to end-users, while at the same time allowing the end-users to retain the existing IT application and GUI that they are familiar with. For this type of use, we offer AIMMS Component licenses.
AIMMS models can be integrated as an optimization component into many other applications, such as Excel, Oracle and SAP, but also into applications written in programming languages such as C/C++, C#, Visual Basic or Java. To integrate an AIMMS component, AIMMS offers several integration interfaces and technologies:
- Excel add-in (described in the Excel add-in User’s Guide)
- Web Services (described in the server-based section below)
- C/C++ API (Application Programming Interface)
- COM object
The C/C++ API and the AIMMS COM object expose interfaces for opening and closing AIMMS projects, assigning and retrieving multidimensional data declared in a model in either a dense or sparse manner, and running procedures declared in a model.
Dense data exchange in the form of passing arrays is convenient for 1- and 2-dimensional identifiers, where the total amount of data to be passed is relatively small. For other cases, AIMMS offers sparse, row-oriented data exchange as an option to prevent excessive memory requirements. Alternatively, all data exchange for multi-dimensional identifiers can be achieved by using AIMMS database connectivity features.
Because AIMMS also possesses a powerful and compact procedural language, AIMMS components cannot only be used to solve optimization models, but can also perform extensive data manipulations on behalf of the calling application. This is especially useful, whenever such data manipulations can be more easily expressed in AIMMS than would be possible the programming language in which the calling application is written.
For a full description of the AIMMS API, see the chapter on the AIMMS Programming Interface in the Language Reference.
For a full description of the AIMMS COM Object, see the AIMMS COM documentation.
Since June 2012, we offer a new product: AIMMS PRO, our Publishing and Remote Optimization platform to deploy AIMMS Applications in a matter of a few clicks. For more details, check out the AIMMS PRO section.
As a fourth deployment option, you can also choose to use another IT application instead of an AIMMS GUI as the front-end to the server-based architecture. This server-based architecture is described above, and brings the important benefits:
- The same server hardware and AIMMS licenses can serve many users and many AIMMS applications.
- Model maintenance and updating can be done centrally.
Any external application can communicate with the server via Web Service requests according to the AIMMS-generated WSDL description of the service, or via the AIMMS COM object. For this server-based deployment architecture, we offer AIMMS Component Network licenses for the server.
When you have created an AIMMS optimization model and want to deploy it to your clients, security aspects play an important role, such as:
- How can you protect the proprietary knowledge used in your model?
- How can you prevent the end-users of your application from modifying the project?
- How can you control the usage and/or distribution of your models?
- How can you distinguish between the various end-users and their level of authorization within your application?
AIMMS has several built-in features to address these security issues:
Encrypting your model contents
As developing a professional decision-support application may represent a considerable investment in time and money, AIMMS includes facilities to prevent unauthorized access to the underlying model. The source code of your model can be protected by using an encryption scheme based upon your own unique customer code.
To control the use of your application, AIMMS allows you to create your own application-specific VAR licenses that can be linked to a specific AIMMS license or to a range of AIMMS licenses. With such a VAR license you can either restrict the number of (concurrent) users or the lifespan of your application.
AIMMS also has integrated facilities for creating a database of your end-users, and linking this database to one or more AIMMS-based applications. The end-user database contains information (entered by you) on the level of authorization of all end-users within an application. Through these authorization levels you can specify such items as whether an end-user is allowed to access case data, view pages, modify data, and execute particular parts of the model.
For a full description of security functionalities in AIMMS see the chapter on Project Security in the User's Guide.