Graphical User Interface. MPL is an integrated model development system that offers full support for all standard Windows features, including dialog boxes, mouse support, pull-down menus, graphics, toolbar, and on-line help. Furthermore, the new version of MPL, supports advanced Windows graphical features such as tree windows, long filenames for models, illustrative icons for each type of window, and context sensitive help.
Direct link to Windows DLL solvers. MPL can set up the matrix and then send it to the solver directly through memory. Solvers that are supported in MPL as Windows DLL include, CPLEX, XPRESS, OSL, XA, CONOPT, LSGRG2, and FrontMP. MPL can also handle legacy DOS solvers through a DOS window.
Database Connection. MPL can import both indexes and data directly from a database. After the model has been solved, MPL can also export the solution back to the database. Furthermore, MPL can easily be called directly from other Windows applications, including databases. Supported databases include Access, Paradox, FoxPro, and Dbase and any ODBC compatible database.
Manage models through projects. If you are using MPL to work on multiple models, that use different files and option settings, you can use projects to manage the models. Projects are used to store information about items such as, open model files and windows, the default working directory, and current option settings.
Model Definitions window. MPL allows you to view defined items from the model formulation in an easy to browse tree window. You can expand and collapse each branch to show only the elements you are interested in. You can display the contents for each item, such as elements for an index or solution values for a variable, simply by selecting it in the tree.
Message window. While MPL is running it can send various progress information to a message window. What is displayed is selected by the user and can include status window messages, MPL input lines, performance statistics, warning messages, SQL statements, and iteration log information from the solver.
Context sensitive help. MPL supports Windows context sensitive help for dialog boxes. To display the help, simply select the question mark button in the upper right corner of the dialog box and then click on the item you want help for. A small window will popup with a short explanation of the item you selected.
Multiple input formats. In addition to the modeling language, MPL can read multiple other input formats, including MPS. MPS files and native input formats for solvers such as CPLEX. MPL will automatically detect the format, when reading the input file, and switch to the correct language. MPL can also be used to generate several different solver input formats. This ensures that models created in MPL can be solved with nearly all industrial strength optimization packages available on the market today.
Helpful error messages. MPL makes it easy to correct mistakes in your formulation. An error window pops up containing the erroneous line in the model file where the error is described in plain English. After you have read the message, the program automatically locates the line in the model file and moves the cursor to it.
Meaningful names. You can use meaningful names of any length for variables and constraints, so the formulation is easy to read and understand. You can also, for additional clarity, use explanations and general comments throughout the model file.
Free format constraints. With MPL you can write variables and constants on both sides of the constraints. This means that you do not have to convert the constraints to a standard format before entering them.
Arithmetic in the input. You can use fractions, products, percentages, and mathematical functions in the model file. This flexibility not only allows clearer formulation, but also automatically results in the highest possible accuracy. Full use of parentheses is also allowed.
Separation of data from the model. With MPL you can read in data from external data files in both sparse and dense data formats. The data files can be created either using the text editor in MPL or be exported from other programs such as spreadsheets and databases. For example, to read in data file containing a price list you would simply enter:
price[product] := datafile(price.dat);
Data entered at run-time. Named data constants can be given a value interactively at run-time. You are prompted for the value when the model file is read. This feature can be very useful when you want to run the same model several times with different data values.
Summation over vector variables. In MPL you can work with vector variables of up to eight dimensions concisely and effectively. For example, to add the produc-tion cost for all months and products, you simply type:
SUM(month,product: ProdCost * Production);
Expansion of structured constraints. Models generally have many similarly structured constraints. In MPL you can enter these constraints in a single line that is then expanded to a list of constraints. For example, to enter 12 constraints, one for each month, you would type:
[month=Jan..Dec] : Inventory = Inventory[month-1] + Production - Sales;
Macro definitions. Macro definitions in MPL allow you to define a part of a constraint or formula that is frequently used as a macro. You can then refer to it in the model by entering just the macro name. In some cases macros can be used to eliminate unnecessary equality constraints and thereby reduce the size of the problem for the solver.
Include files. MPL allows you to include external files to the model formulation, using a simple include command. Include files can also be a great advantage when you want to solve a number of closely related models containing common data or model statements.