Deployment of Decision Support Applications

Home

Deployment of AIMMS applications

Once the development of an AIMMS model is completed, it can be deployed

 AIMMS offers features to support each of these deployment scenarios.

Graphical End-User Applications

With an AIMMS End-User license, you can offer the end-users of your application the functionality that you have developed. 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.

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.

Application security for end-user applications and components

Whether you have created a graphical end-user application using AIMMS or an AIMMS-based optimization component, in both deployment scenarios a number of security aspects play an important role.

  • 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 security features built in that address the issues raised above.

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 use. The source code of your model can be protected by using an encryption scheme based upon your own unique customer code.

Application licensing

In addition, 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.

User management

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.

AIMMS optimization components

To accommodate the integration of an AIMMS model as an optimization component within other stand-alone, server or web applications, AIMMS offers both

  • a C/C++ API, and
  • a COM object.

Using these interfaces, AIMMS components can be easily integrated into applications written in programming languages such as C/C++, C#, Visual Basic or Java.

AIMMS interfaces

Both 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. If these conditions are not met sparse, row-oriented, data exchange may be a better 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.

Multi-agent technology

An agent is a software program that independently performs a task on behalf of its user. A multi-agent system is a community of agents that communicate through messages to accomplish individual and/or common goals. These agents are sometimes referred to as intelligent agents or decision agents to reflect their decision-making role within the community.

The computing paradigm underlying multi-agent systems is that of parallel computing and non-deterministic computing: agents can reside on different processors, and the order of execution is not predetermined due to the asynchronous communication between agents.

The following types of problems that lend themselves to being analyzed and solved by agent technology:

  • An automated auction run by autonomous bidding and market clearing agents, both of which operate in accordance with a set of market rules.
  • Distributed problem solving for e.g. a complicated supply-chain planning model that can be divided up into many distinct decision phases. Worker agents can evaluate alternative parameter settings for each of the decision phases, while control agents can observe the overall solution quality by combining the combined results of all decision phases.
  • Massive parallelization of very large problems. By using many agents at once, and letting each agent run on its own processor, it may be possible to find one or more good alternative solutions in a matter of hours. Solving the same problem without the use of agents, could take weeks or even months before the same overall solution quality is obtained. 

AIMMS offers an multi-agent technology in which the agents are AIMMS session running an instance of a specific AIMMS project. When there are multiple such agents, their corresponding AIMMS sessions will be running on one or more computers within a local area network. 

AIMMS provides several facilities for designing and running a multi-agent system using the concepts described in above. The design facilities consist of two extensive dialog boxes:

  • one for the overall designer of a multi-agent application, and
  • one for the designer of a specific agent with its own particular agent role.

An example of one of these dialog boxes is shown to the right.

Once an AIMMS agent community has been designed and implemented, the community can be started by letting some of the agents send messages to other agents.

AIMMS web services

The AIMMS agent technology also allows the generation of model-specific web services. Once a agent role has been defined, AIMMS can generate a WSDL file and a configuration file, which allows a generic AIMMS-provided web service handler to call the AIMMS agent through a problem-specific web service.  It supports full asynchronous messaging between a community of AIMMS agents, and any external application that implements a Web Service according to an AIMMS-generated WSDL description of the service. Per AIMMS 3.8 this is based on the platform-independent RPC (Remote Procedure Call)-technology. 

The web services generated by AIMMS allow multi-dimensional input data to be passed to, or multi-dimensional output data to be retrieved from the associated AIMMS agent. AIMMS web services also allow attachments to be sent along with the web service requests, e.g. to pass XML data in a customer-specific format from and to AIMMS agents. Such customer specific XML data can be read and/or written using the XML mapping feature of AIMMS.

Using advanced functionality of the agent technology, multiple AIMMS agents can be used to service incoming requests. AIMMS allows the implementation of both stateless and session-oriented web services.  

 Customer Quotes  “AIMMS is our product of choice for both prototyping and fielding customized models. We prefer the algebraic modeling style for ease of development and maintenance of our process and blending models. We save time and get the applications deployed into the refineries much quicker where they can begin making money.”
Steven Kleinman, BP, Chicago, USA - Supply Chain Specialist