Department of Electrical & Computer Engineering & Computer Science Systems Modeling & Information Technology Laboratory (SMIT Lab) University of Maryland, The Institute for Systems Research Deliverable Name: Preventive Maintenance Scheduling Model and Generic Implementation, Mathematical Programming Modeling Languages and Solvers Task ID: 877.001 Task Title: Models, Algorithms and Software Development for Intelligent Preventive Maintenance in Semiconductor Fabs. Authors: Jose Ramirez, Jason Crabtree, Emmanuel Fernandez March 29, 2002 DRAFT 1 – Introduction.............................................................................................................................. 3 1.1 – Summary of PM Scheduling Model ............................................................................................. 3 1.2 – Summary of Modeling Languages and Solvers........................................................................... 5 2 – Model Description Languages (MDL) .................................................................................... 6 2.1 – AMPL (A Mathematical Programming Language) ................................................................... 7 2.1.1 – Platform Support ......................................................................................................................................8 2.1.2 – License Information .................................................................................................................................8 2.1.3 – Additional Information .............................................................................................................................8 2.2 – IBM EasyModeler.......................................................................................................................... 9 2.2.1 – Platform Support ......................................................................................................................................9 2.2.2 – License Information .................................................................................................................................9 2.2.3 – Additional Information ........................................................................................................................... 10 2.3 – ILOG Optimization Programming Language (OPL) Studio .................................................. 10 2.3.1 – Platform Support .................................................................................................................................... 10 2.3.2 – License Information ............................................................................................................................... 10 2.4 – LINGO .......................................................................................................................................... 10 2.4.1 – Platform Support .................................................................................................................................... 11 2.4.2 – License Information ............................................................................................................................... 11 2.5 – Other Commercially Algebraic MDL’s ..................................................................................... 12 2.5.1 – Additional Information ........................................................................................................................... 12 2.6 – Mathematical Programming System (MPS) Files .................................................................... 13 2.6.1 – Additional Information ........................................................................................................................... 13 3 – Solvers..................................................................................................................................... 15 3.1 – IBM Optimization Solutions and Library (OSL) ..................................................................... 15 3.1.1 – Library.................................................................................................................................................... 15 3.1.2 – Solutions................................................................................................................................................. 15 3.1.3 – Platform Support .................................................................................................................................... 16 3.1.4 – License Information ............................................................................................................................... 16 3.1.5 – Additional Information ........................................................................................................................... 16 3.2 – ILOG CPLEX .............................................................................................................................. 17 3.2.1 – Component Libraries .............................................................................................................................. 17 3.2.2 – Optimizers .............................................................................................................................................. 17 3.2.3 – Platform Support .................................................................................................................................... 17 3.2.4 – License Information ............................................................................................................................... 18 3.2.5 – Additional Information ........................................................................................................................... 18 3.3 – LINDO .......................................................................................................................................... 18 3.3.1-Platform Support ....................................................................................................................................... 18 3.3.2-License Information .................................................................................................................................. 19 3.3.3-Additional Information ............................................................................................................................. 20 4 – Final Comments ..................................................................................................................... 20 References .................................................................................................................................... 21 Appendix A ................................................................................................................................... 23 2 1 – Introduction This work reported here is part of the research project being conducted in optimal preventive maintenance (PM) scheduling for semiconductor fabs, specifically the generic implementation of the PM scheduling model. The focus of the report is on model description languages (MDL) and solvers for mathematical programming that can be used to define and solve the scheduling model. The most prevalent languages and solvers in industry and academia are discussed in detail and the pros and cons of each are given. Before delving into the modeling languages and solvers, a brief overview of the PM scheduling model is provided below. 1.1 – Summary of PM Scheduling Model The PM scheduling model is a mixed integer program (MIP) that seeks to optimize the short term scheduling of PM tasks on a family of tools [14, 15]. Optimal performance is achieved by increasing the overall availability of the set of tools and by reducing the overall PM costs (parts & labor) and accumulations of work in process (WIP) at each tool during a finite scheduling period. Scheduling periods are usually set at one to two weeks (shorter periods eliminate the need for optimization while longer periods introduce large uncertainties). The two figures below illustrate the overall framework of an implementation of the PM scheduling software. Figure 1 is a flowchart showing the steps the software implementation proceeds through when solving the PM model. The highlighted section shows the steps that involve the modeling languages and solvers discussed in this report. In these steps, data for the model is formatted and passed along with the model to the solver. The solver then performs the optimization and returns the solution. Figure 2 shows the software architecture divided into the two key parts; the customizable portion and the generic portion. The customizable portion consists of the company specific components that need tailoring to a particular company’s software systems (e.g. MES system). The generic portion consists of the transportable components, which are the core of the software package. The generic portion is the focus of this report. The components in the generic portion include the model generating and data formatting modules. Note that the solver is in fact company dependent, but is included in the generic portion since the software will integrate with most all solvers. The IBM OSL solver and MPS model format are given as examples in the figure. 3 Begin .ini file; .tool file; .item file; System Initialization and selecting a machine Family Specifying a planning horizon TMS database Dispatch report Resource Data File Generating consolidated tasks vector set {v} Chamber configuration Computing availability loss and resources requirement for each task vector. Reading in TMS database, performing data filtering Reading in projected WIP from WDS Generating MIP model instance in a standard format SIMPLEX and Branch-and-Bound algorithms are used in the default solver Invoking OSL default solver to solve the MIP model Reading in projected resource Parsing model solution and interpreting the result to users TMS End Figure 1: PM Scheduling Software Process Flow Generic Portion Customizable Portion RPC(Remote Procedures Call) Connection Data Preprocessing WDS Interfaces TMS Model generating model.mps Solution Parsing Front-end Optimization Solver (OSL) Back-end Figure 2: PM Scheduling Software Architecture 4 The PM scheduling model was successfully implemented at an SRC member company during student summer internships in 2001. The software created during the internships integrated the scheduling model with the existing fab systems (e.g. Tool Maintenance System, Wafer Dispatch Systems) and provided an interface for the user to interact with the software. However, the implementation created during these internships was customized in many ways to that particular member company’s environment. The goal is therefore to now create a generic implementation of the PM scheduling model such that it is transportable to other companies. The major obstacle to this goal and the reason for this report is the proper formulation of the PM scheduling model for use in any company environment. 1.2 – Summary of Modeling Languages and Solvers In practical mathematical programming, the general approach is to formulate and solve problems using optimization software. There is a specific sequence of events that characterize this process: “ 1. Formulate a model – the abstract system of variables, objectives, and constraints that represent the general form of the problem to be solved. 2. Collect data that defines one or more specific problem instances. 3. Generate a specific objective function and constraint equations from the model and data. 4. Solve the problem – run a program (solver) that applies some algorithm to find optimal values of the variables. 5. Analyze the results. 6. Refine the model and data and repeat as necessary” [2]. Of special attention are steps 1, 2, 3 and 4 that directly involve the use of some computer language to describe the mathematical problem and the use of a specific computer program (which implements some solving algorithm) to find a solution according to the description given in the step 1. The following sections describe in greater detail the software used in steps 1 to 4. The first section presents the basic issues related to Model Description Languages and gives details about state of the art of commercial products in this area. These products include AMPL, IBM EasyModeler, ILOG OPL Studio and LINGO. In the second part, details on solvers are presented that include basic definitions and the most popular software in academic and commercial applications. 5 2 – Model Description Languages (MDL) A Model Description Language is a computer language capable of describing, in a “data independent” way, Linear Programming (LP), Mixed Integer Programming (MIP), and Quadratic Programming (QP) models. Generally, in MDL’s the model description is presented before specify the related data used in the problem. It will produce independence between the model and data files. In other words, that means a separation of the statement of the model structure from the data that are used with it. The objective of this approach is preserving the model statements in cases that the set of data vary from one simulation to other. This characteristic of independence facilitate the design of integrate environments for systems optimization and modeling. There are different types of MDL’s available, but of particular interest is the algebraic modeling language, which is “a popular variety, based on the use of traditional (i.e. algebraic) mathematical notation to describe objective and constraint functions. An algebraic language provides computer readable equivalents of mathematical notations that would be familiar to those people who have studied algebra or calculus.”[2]. Familiarity is one of key issues in algebraic modeling languages; another is their applicability to a particularly wide variety of problems such as: linear, nonlinear, and integer programming models. There are also other modeling systems based on representations instead of algebraic modeling languages. Some alternative forms include [5]: Block-Schematic Diagrams: used to depict linear constraint matrices as collections of structured submatrices also called blocks. Activity Specifications: In this case the model is described or modeled with respect to the activities or variables related, and their effects, according with the constraints in the problem, in the inputs and outputs of the system. Netforms: with this modeling methodology the system is presented as a graph or network diagram involving flows and allocations. In general, an MDL is designed to facilitate the migration from the mathematical or modeler’s form of the problem in to the algorithm’s form. Then, a specialized compiler is in charge of translating the modeler’s form in to the algorithm’s form (that is the form to be solved in the computer system) according to a specific syntax of the MDL used. The principal objective of the MDL is help to make mathematical programming more economical and reliable. It is particularly useful for the development of new models and for documentation of models that are subject to change. There are many MDL’s [1] available commercially. Some of them are AMPL, IBM EasyModeler, ILOG OPL, and LINGO. They are each of special interest for different reasons. First, in the case of AMPL [2], [5], [13], that is one of the most popular algebraic modeling languages used both in academic and commercial applications [19]. Another given 6 is IBM EasyModeler [12] that produces as result a Mathematical Programming System file that can be used by different solvers. ILOG OPL [6], [20], is a product supported by one of the leading companies in the optimization software market. Finally, LINGO from LINDO Systems, Inc. [4], [17], presents an interesting characteristic of cost-benefits (according to the scale of the problem, see tables 2 and 3) with respect to the other products. These reasons lead us to give a more detailed description of these systems. 2.1 – AMPL (A Mathematical Programming Language) AMPL [13] is a comprehensive algebraic modeling language (computer language) for constrained optimization problems, including linear programming, mixed integer programming, and nonlinear programming. Some of the AMPL applications includes: production description, distribution and scheduling. AMPL can be used in mathematical programming problems from small to large-scale. Its popularity is product of the use of familiar algebraic notation as well as an interactive and integrated command environment, designed to facilitate the formulation of models, communication with a wide variety of solvers (CPLEX, OSL, MINOS, XPRESS, etc), and examine solutions through reports As other MDLs, one of the objectives of AMPL is to accelerate the prototyping and development of models. AMPL was developed by Robert Fourer [10] from Northwestern University and David M. Gay [16] and Brian W. Kernighan [8], [9], [13] (involved in the development of the first standard for C language) from Bell Laboratories. This product provides a graphical user interface (GUI) so that the user has an integrated environment where is possible to handle all the details in the model, solver, and data involved in the problem. It is important to remark that the AMPL environment allows handling of the data and model in independent files. An important characteristic of AMPL is its communication with different solvers. In this case, AMPL is compatible with many of them, including: CPLEX, MINOS, BPMPD, CONOPT, DONLP2, FortMP, LP_SOLVE, MOSEK, NPSOL, OSL, and XPRESS. Also, AMPL includes ILOG CPLEX v.7.0 as a solver, integrated in the modeling-solving environment. The user therefore has all the necessary tools to solve different LP, QP, and MIP problems in one package. 7 2.1.1 – Platform Support PC/Windows 95, 97,98, NT, 2000 and compatible systems. Sun Microsystems SPARC-based workstations, or equivalent: SunOS 4.1.x (Solaris1.1), Solaris 2.3 or later. Hewlett-Packard PA-RISC workstations: HP-UX Silicon Graphics workstations: IRIX IBM RS-6000 workstations: AIX Digital Equipment (DEC) workstations: OSF/1 v3 Cray Research supercomputers: UNICOS. 2.1.2 – License Information This product is offered in commercial and student versions. The principal difference between both versions is the number of constraints, variables, and integer variables which is restricted to 300 in each case for the free student version. The commercial version does not have these limitations. The price of this product is as follows (note that there is special price for academic use): Table 1: AMPL Commercial License prices* Windows 95/98 Price Windows NT Price UNIX First install $3300 First install $4300 First install Second install $3100 Second install $4100 Second install Third or more $2700 Third or more Third or more $3700 installs installs installs Academic Edition $1000 Academic Edition $1000 Academic Edition Price $4300 $4100 $3700 $1000 *Source: Optimal Solution Technologies, Inc., see [3] . 2.1.3 – Additional Information Additional details about AMPL can be found in [5], [13] and [18]. For references about AMPL syntax and technical questions, [2] is a valuable reference. 8 2.2 – IBM EasyModeler IBM EasyModeler is a MDL composed of [12]: A special compiler that translates a mathematical model developed in the EasyModeler language into ANSI C code. A set of data standards that facilitate feeding data into the code, to generate a model instance, and get results. A OSL driver (OSL is a solver developed by IBM) A dynamic subroutine library which includes interfaces to OSL. Basically, EasyModeler works in the following way: using the set of instructions from EasyModeler Model Description Language, the user can write the mathematical programming problem. Then, a C code is generate by EasyModeler applications that can be produce, with an adequate compiler, an executable file. The executable file use the data files related to the problem and finally generate a special file denominated Mathematical Programming System (MPS) which contains the model detail or description with the data needed, both in one file. This file can be used in wide variety of solvers [1] such as IBM OSL Solutions, PCx, XA, LAMPS, etc. Also, it is important to mention that EasyModeler has been successfully used in the implementation of the Optimal Scheduling of Preventive Maintenance project in one liason company. 2.2.1 – Platform Support IBM AIX PC / Windows 95, 97, 98, NT, 2000 and compatible systems Sun Solaris 2.2.2 – License Information EasyModeler, once marketed by IBM as a Program Product, was withdrawn from marketing a couple of years ago. However, there are some companies that already use EasyModeler as an MDL in their optimization problems. For those customers that already have some version of EasyModeler, Mr. Stefano Gliozzi (stefano_gliozzi @ it.ibm.com), Sell & Support Practice Senior Consultant for IBM Italy, is currently in charge of providing technical support and maintaining and enhancing the code that is being used as an Asset in IBM Global Services activities (see appendix A). 9 2.2.3 – Additional Information Also, EasyModeler is used in some SRC/ISMT member companies. 2.3 – ILOG Optimization Programming Language (OPL) Studio ILOG Optimization Programming Language (OPL STUDIO) “is a third-generation algebraic modeling system. It supports both mathematical programming and constraint programming to represent both planning and operational decisions” [6]. OPL has Component Libraries and database support that allow it to build and deploy an optimization application. Custom applications can be generated using Visual Basic and C/C++ using the Component Library of OPL. In the same way as AMPL, OPL Studio can provide an integrated and graphical environment with model, data, and solver details. OPL Studio uses ILOG CPLEX to solve LP, MIP, and QP problems. OPL Studio uses an algebraic modeling system, so that it is possible to represent the optimization problem in terms of the decision variables and constraints. The OPL syntax includes high-level notation that represents abstract concepts such as sets, summations, or for-all statements. This syntax closely resembles the mathematical notation used to describe the optimization problem. 2.3.1 – Platform Support PC/Windows 95, 97, NT, 2000 and compatible systems. PC/Linux Workstation/Unix 2.3.2 – License Information The actual price for a commercial license of OPL Studio is $10,000* *Source: ILOG, Inc. Information obtained by communication with an sales representative on 3/14/2002. 2.4 – LINGO LINGO, from LINDO Systems Inc.[4], is a tool designed to make building and solving linear, nonlinear, and integer optimization models easier. LINGO provides an integrated environment that includes an MDL for expressing optimization models, a adequate environment for building and editing problems, and a set of built-in solvers. 10 LINGO’s modeling environment can be used to build, solve, and analyze models. For custom applications LINGO comes with callable Direct Link Library (DLL) and Object Linking and Embedding (OLE) interfaces for in Windows platforms that can be called from user written applications. LINGO can also be called directly from an Excel macro or database application. 2.4.1 – Platform Support PC/Windows 95, 97, NT, 2000 and compatible systems. PC/Linux Workstation/Unix 2.4.2 – License Information There are academic and commercial licenses available for this product, the prices are detailed as follows [4]: Table 2: LINGO-Optimization Modeling Language and Solver – EDUCATIONAL PRICES* Version Base Price Nonlinear option Barrier Option Constraints Variables Integers Nonlinear Variables Super LINGO $245 $75 $75 1,000 2,000 200 200 Hyper LINGO $495 $150 $150 4,000 8,000 800 800 Industrial LINGO $795 $240 $240 16,000 32,000 3,200 3,200 Extended LINGO $1,195 $360 $360 unlimited unlimited unlimited unlimited Platforms: Available for platforms other than Windows upon request. *Source: LINDO Systems, Inc. See [4] 11 Table 3: LINGO-Optimization Modeling Language and Solver – STANDARD PRICES* Version Base Price Nonlinear option Barrier Option Constraints Variables Integers Nonlinear Variables Super LINGO $495 $150 $150 1,000 2,000 200 200 Hyper LINGO $995 $300 $300 4,000 8,000 800 800 Industrial LINGO $2,995 $900 $900 16,000 32,000 3,200 3,200 Extended LINGO $4,995 $1,500 $1500 unlimited unlimited unlimited unlimited Platforms: Available for platforms other than Windows upon request. *Source: LINDO Systems, Inc. See [4] 2.5 – Other Commercially Algebraic MDL’s Other commercially distributed algebraic modeling languages are: General Algebraic Modeling System (GAMS): one of the first algebraic languages [24], [25], [26]. Mathematical Programming Language (MPL): characterized by for its graphical interface and interface with different database formats [23]. Advanced Integrated Multidimensional Modeling Software (AIMMS): is another popular algebraic MDL that provides a graphical user interface environment. Also it has a GAMS compatible mode, such as it can supplement its own language [22], [27]. 2.5.1 – Additional Information Further information about the different options in MDL’s can be found in [1]. Finally, the most part of the products presented in this section have the characteristic to manipulate the data and model information independently (different files for each part) inside of an integrated environment of optimization: a graphical user interface where the user can manipulate and review the model, data and results files. For example, in AMPL the model description is coded in the AMPL language and the data can be provides from different kind of sources [1]: databases, spreadsheets and text files. Similar situation is presented in ILOG OPL Studio, EasyModeler and LINGO. There is another form to express data and model description that has been used widely and that is the denominated Mathematical Programming System or MPS format. As we will see in the Solvers section the IBM OSL products need to receive the model and data information in a MPS file to produce the solution. 12 2.6 – Mathematical Programming System (MPS) Files MPS [11] is a modeling and data format, originally introduced by IBM, to express linear and integer programs in a standard way. MPS format was named after an early IBM LP product and has been used as a standard ASCII medium among most of the commercial LP solvers. Essentially the most part of commercial LP codes accepts this format as a method of defining a model and data. The MPS format is column oriented (as opposed to entering the model as equations) and everything (variables, rows, etc.) gets a name. Fields start in column 1, 5, 15, 25, 40 and 50. Sections of an MPS file are marked by so-called header cards, which are distinguished by starting in column 1. Although it is typical to use upper case throughout the file, many MPS readers will accept mixed case. The names chosen for the individual entities (constraints or variables) are not important to the solver. An example of a MPS file presented in [28] is shows in the figure 2.1. Note that the data and model information is included in the last part of the file (figure 2.1). The new MDL applications come with the ability to independently manage data files and model files. This feature simplifies and gives more reliability in the problem solving. Even though MPS used to have the model description and the data to use in the problem, it can be used with different solvers (CPLEX, OSL, etc) as a way to describe a mathematical problem. 2.6.1 – Additional Information Further details about the MPS file format and use can be found in [11]. 13 ************************************************************************ * The data in this file represents the following problem: * Minimize or maximize Z = x1 + 2x5 - x8 * Subject to: * * 2.5 <= 3x1 + x2 - 2x4 - x5 x8 * 2x2 + 1.1x3 <= 2.1 * x3 + x6 = 4.0 * 1.8 <= 2.8x4 -1.2x7 <= 5.0 * 3.0 <= 5.6x1 + x5 + 1.9x8 <= 15.0 * * where: * 2.5 <= x1 * 0 <= x2 <= 4.1 * 0 <= x3 * 0 <= x4 * 0.5 <= x5 <= 4.0 * 0 <= x6 * 0 <= x7 * 0 <= x8 <= 4.3 * ************************************************************************ NAME EXAMPLE ROWS N OBJ G ROW01 L ROW02 E ROW03 G ROW04 L ROW05 COLUMNS COL01 OBJ 1.0 COL01 ROW01 3.0 ROW05 5.6 COL02 ROW01 1.0 ROW02 2.0 COL03 ROW02 1.1 ROW03 1.0 COL04 ROW01 -2.0 ROW04 2.8 COL05 OBJ 2.0 COL05 ROW01 -1.0 ROW05 1.0 COL06 ROW03 1.0 COL07 ROW04 -1.2 COL08 OBJ -1.0 COL08 ROW01 -1.0 ROW05 1.9 RHS RHS1 ROW01 2.5 RHS1 ROW02 2.1 RHS1 ROW03 4.0 RHS1 ROW04 1.8 RHS1 ROW05 15.0 RANGES RNG1 ROW04 3.2 RNG1 ROW05 12.0 BOUNDS LO BND1 COL01 2.5 UP BND1 COL02 4.1 LO BND1 COL05 0.5 UP BND1 COL05 4.0 UP BND1 COL08 4.3 ENDATA Figure 2.1: MPS File format example. 14 3 – Solvers A solver is a computer program or software package that solves a mathematical program (MP). Common mathematical programs are linear programs (LP), mixed-integer programs (MIP), and quadratic programs (QP). Generally the solver can be either developed by hand using a set of functions and/or procedures for code generation in some high level language like C/C++ or Visual Basic, or it can be a standalone application which doesn’t requires code generation from the user and is fed with some mathematical description of the problem (usually an MDL). Some examples of the most prevalent commercially available solvers are given below. 3.1 – IBM Optimization Solutions and Library (OSL) IBM OSL [7] products provide access to mathematical optimization tools used to solve optimization problems with LP, MIP, and QP. OSL can be used in two different forms: as a Library of callable functions or as standalone applications, also called Solutions. 3.1.1 – Library The OSL Library [16] includes 250 user callable functions in C/C++ for manipulating models, solving the optimization problems, controlling the algorithms, and analyzing the results. This Library has solvers for linear programs, mixed integer programs, quadratic programs, and quadratic integer programs. The Library can be extended using Optimization Library Stochastic Extensions or Optimization Library Parallel Extensions. The first one solves stochastic programming problems with its own procedures and those in the Optimization Library. To solve stochastic programs, both the Optimization Library and the Optimization Library Stochastic Extensions are required. The second one includes procedures that enable transparent parallelization of serial programs. This product works with but does not include the Optimization Library. 3.1.2 – Solutions The OSL Solutions are independent or stand alone applications used for LP, MIP, and QP problems. Each Solutions Package receives a mathematical description or programming of the problem as an input and produces a solution as an output. They provide most of the functionality of the complete library without requiring the user to write and compile driver programs by hand. 15 3.1.3 – Platform Support OSL is supported in the following platforms or operative systems: PC/Windows 95, 97, NT, 2000 and compatible systems PC/Linux Workstation/Unix IBM S/390 & IBM AS400 & IBM SP 3.1.4 – License Information IBM offers either commercial or academic licenses for OSL. In both versions there is no limit in the number of constraints, variables, integer variables and nonzero variables. The principal difference is that the academic/student version license is free but needs to be renewed every six months and can’t be used in commercial applications. OSL is distributed through authorized vendors and its approximate price is as follows [3],[7]: Table 4: IBM OSL License price Product Optimization Library Stochastic Extensions Parallel Extensions LP Solutions MIP Solutions MIP Solutions QP Solutions Stochastic Solutions Price $9100 $12000 $2500 $3000 $3000 $3000 $3000 $3000 *Source: Optimal Solution Technologies, Inc., See [3] 3.1.5 – Additional Information More details about IBM OSL can be found at [7] and [16]. 16 3.2 – ILOG CPLEX ILOG CPLEX [6], [21] is another solver widely used for optimization. This product is manufactured by ILOG Inc., a French company specializing in design software components for optimization engines, business rule engines, and interactive user-interface engines. CPLEX is categorized as an optimization engine. Similar to OSL, CPLEX is used to solve linear (LP), mixed-integer (MIP), and quadratic programming (QP) problems. Some of the applications mentioned for CPLEX includes: chain planning, telecommunication network design, and transportation logistics. This product has been designed to speed-up the development of mathematical programming for large scale problems. Important features attributed to ILOG CPLEX are its high performance in large scale and real world optimization problems, robustness, reliability, and flexibility. Also similar to IBM OSL, ILOG CPLEX can be used through callable libraries, called Component Libraries for applications development, or with specific standalone software applications, also called Optimizers (CPLEX Interactive Optimizers). Both options included in the called CPLEX Base Development System [6]. 3.2.1 – Component Libraries The CPLEX Component Libraries provide C/C++ and Java programming interfaces. They allow C/C++, Java, Visual Basic, and FORTRAN developers to embed ILOG CPLEX technology directly in custom applications using a set of routines for defining, solving, analyzing, querying, and creating reports for mathematical programming problems and solutions. 3.2.2 – Optimizers The set of standalone CPLEX Optimizers are: CPLEX Simplex (used for LP problems), CPLEX Barrier (used for LP or QP problems), and CPLEX Mixed Integer (used for MIP problems). All these products include a command-line utility that allows users to read and write problem files and tune the performance of all ILOG CPLEX algorithms for their specific problem. 3.2.3 – Platform Support CPLEX is supported in the following platforms or operative systems: PC/Windows 95, 97, 98, 2000, Me, NT, PC/Linux Workstation/Unix IBM S/390 & IBM AS400 & IBM SP 17 3.2.4 – License Information CPLEX is offer to commercial use at approximate $11.000* in the suite version that includes both Component Libraries and Optimizers. *Source: ILOG, Inc., Information obtained by communication with sales representative on 3/14/2002. 3.2.5 – Additional Information More details about ILOG CPLEX can be found at [6] and [21]. 3.3 – LINDO LINDO is a solver manufactured by LINDO Systems, Inc., This product allows to solve linear, integer, and quadratic problems. Providing an interactive environment (including a graphical user interface) LINDO gives the user the ability to define the problems in a straightforward “equation” style. LINDO has been widely used as optimization engine in: businesses, colleges, universities, and government agencies. Also, LINDO [17] provides, in addition to its graphical interface, the necessary DLL (Direct Link Library) for Windows based applications development. This characteristic gives the ability to generate custom applications using Visual C/C++, Visual Basic, or any programming language that supports DLL on the Windows platform. Also related to software development, LINDO offers LINDO API (Application Programming Interface), which allows a major flexibility in the generation of custom optimization applications. With the API, it is possible produce simple applications, web applications, and interface the LINDO solvers with Matlab developments. For other platforms, LINDO provides object libraries to generate code in FORTRAN and C. Any custom application that uses calls to the LINDO solver requires a separate license. 3.3.1-Platform Support PC / Windows 95, 98, NT, 2000. Linux SPARC/Solaris Silicon Graphics IBM RS/6000 18 3.3.2-License Information Tables 5 and 6 show the list prices for LINDO in the academic and standard licenses [4]. Note that depending of the scale of the problem to solve, the final price of the product changes. Table 5: LINDO API-The Premier Optimization Engine Educational/Academic version* Version Base Price* Nonlinear option* Barrier Option* Constraints Variables Integers Nonlinear Variables Super LINDO API $195 N/A N/A 1,000 2,000 200 N/A Hyper LINDO API $395 N/A N/A 4,000 8,000 800 N/A Industrial LINDO API $695 N/A N/A 16,000 32,000 3,200 N/A Extended LINDO API $995 N/A N/A unlimited unlimited unlimited N/A Platforms: Windows, Linux, and most popular UNIX platforms * Prices and details taken from [4]. Table 6: LINDO API-The Premier Optimization Engine Standard version Version Base Price* Nonlinear option* Barrier Option* Constraints Variables Integers Nonlinear Variables Super LINDO API $395 N/A N/A 1,000 2,000 200 N/A Hyper LINDO API $795 N/A N/A 4,000 8,000 800 N/A Industrial LINDO API $2,395 N/A N/A 16,000 32,000 3,200 N/A Extended LINDO API $3,995 N/A N/A unlimited unlimited unlimited N/A Platforms: Windows, Linux, and most popular UNIX platforms * Prices and details taken from [4]. 19 3.3.3-Additional Information More details about LINDO can be found at [4] and [17]. 4 – Final Comments An important issue for both MDL’s and Solvers is data compatibility. Most of the aforementioned optimization packages include compatibility with databases (for reading and writing files), spreadsheets, and text files. Also, most of them can read standard MPS files to pass the model and data to the solver or process separate model and data files through an integrated environment.. In the case of MDL’s, AMPL has the ability to translate the actual AMPL model description into a MPS format using the export capabilities of this product. Thus, it is possible to migrate problems from one solver to other, e.g. from ILOG CPLEX to IBM OSL. In effect, the work required in code generation is facilitated by mean of a high level language like AMPL and finally solved using the solver of choice. Also, instead of translating a model into the standard MPS format for use on many solvers, the optimization software industry provides many drivers for different solvers so that one can use different solvers with a specific MDL. Therefore, the added functionality of the specific language is not lost in the conversion to the MPS format. For example, a driver that allows AMPL models to be used directly with IBM OSL is available for free [5]. 20 References [1] Fourer, Robert. Linear Programming Software Survey. OR/MS Today, August 2001.. [2] Robert Fourer, David M. Gay, and Brian W. Kernighan. AMPL: A Modeling Language for Mathematical Programming. Duxbury Press – Brooks-Cole Publishing Company, 1993 [3] Optimal Solutions Technologies, Inc., web site http://www.optimize.com [4] LINDO Systems, Inc., web site http://www.lindo.com [5] AMPL web site: http://www.ampl.com [6] ILOG, Inc., web site: http://www.ilog.com [7] IBM, OSL Products web site: http://www-3.ibm.com/software/data/bi/osl/index.html [8] The Development of the C Language, electronic version at: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html [9] Brian W Kernighan web site: http://cm.bell-labs.com/who/bwk/ [10] Robert Fourer web site: http://iems.nwu.edu/~4er/ [11] MPS format, web site: http://www6.software.ibm.com/sos/features/featur11.htm#HDRMPSDATA [12] Gliozzi, Stefano. EasyModeler Asset User Guide. IBM-Italy, 1999. [13] Robert Fourer, David M. Gay and Brian W. Kernighan, A Modeling Language for Mathematical Programming." Management Science 36 (1990) 519-554. [14] Xiaodong Yao, Michael Fu, Steven Marcus, Emmanuel Fernandez. “Optimization of Preventive Maintenance Scheduling for Semiconductor Manufacturing Systems: Models and Implementation", SRC Pub: P003267. Also in Proceedings of the 2001 IEEE International Conference on Control Applications, Mexico City, September 5-7, 2001, pp. 407-411. [15] Xiaodong Yao, Michael Fu, Steven Marcus, Emmanuel Fernandez. “Incorporating Production Planning into Preventive Maintenance Scheduling in Semiconductor Fabs", MASM 2001 Conference, Tempe, AZ. [16] Ming S. Hung, Walter O. Rom, and Allan D. Waren. Optimization with IBM OSL and Handbook for IBM OSL, The Scientific Press, 1993. 21 [17] Linus Schrage. Optimization Modeling With LINDO, 5th Edition, Brooks-Cole Publishing, 1997. [18] David M. Gay, Symbolic-Algebraic Computations in a Modeling Language for Mathematical Programming. Technical Report 00-3-02, Computing Sciences Research Center, Bell Laboratories, Murray Hill, NJ (2000). [19] J.J. Bisschop and Robert Fourer, New Constructs for the Description of Combinatorial Optimization Problems in Algebraic Modeling Languages. Computational Optimization and Applications 6 (1996) 83-116. [20] See http://www.ilog.com.sg/corporate/releases/sg/991101_intdatacorp.cfm [21] CPLEX Optimization, Inc., Using the CPLEX Callable Library, version 3.0. Incline Village, NV (1994). [22] J.J. Bisschop and R. Entriken, AIMMS: The Modeling System. Paragon Decision Technology, Haarlem, The Netherlands (1993). [23] B. Kristjansson, MPL Modelling System User Manual, Version 2.8. Maximal Software Inc., Arlington, VA (1993). [24] J.J. Bisschop and A. Meeraus, On the Development of a General Algebraic Modeling System in a Strategic Planning Environment. Mathematical Programming Study 20 (1982) 1-29. [25] A. Brooke, D. Kendrick and A. Meeraus, GAMS: A User's Guide, Release 2.25. Boyd & Fraser, The Scientific Press, Danvers, MA (1992). [26] GAMS web site: http://www.gams.com/ [27] AIMMS web site: http://www.aimms.com/ [28] MPS files format, examples: http://www6.software.ibm.com/sos/features/feat24DT.htm#HDRABDATA 22 Appendix A This is the email received from Stefano Gliozzi with respect to the actual state of IBM EasyModeler: ----- Original Message ----From: "Stefano Gliozzi" <stefano_gliozzi@it.ibm.com> To: "Jose A. Ramirez" <ramirejs@ECECS.UC.EDU> Cc: "Dr. Fernandez" <emmanuel@ECECS.UC.EDU> Sent: Monday, February 18, 2002 5:32 AM Subject: EasyModeler Information > Dear Mr Ramirez, > I apologize for the delay in my answer; EasyModeler, once marketed by IBM > as a Program Product, has been withdrown from marketing a couple of years > ago. I am currently mantaining and enhancing the code, that is being used > as an Asset in IBM Global Services activities (supported platforms: IBM > AIX, MS Windows (32) ans Sun Solaris; no Linux still - but it should be an > easy port). Therefore I will need some more time to understand who could be > in IBM US the correct person to interface you; I hope to be able to get > back with this information in a couple of weeks. > > On the other hand, I'll be more than happy to answer specific EasyModeler > questions and requirements that could make this piece of code useful in > your research. > > Best Regards, > Stefano Gliozzi > > Sell & Support Practice Senior Consultant > IBM Global Services - Business Innovation Services > Ph. +39-06-596-65477, Mobile +39-335-7389709 > Fax. +39-06-596-65084 > e-mail: stefano_gliozzi @ it.ibm.com > http://stefanogliozzi-it.userv.ibm.com/homepage.html > snail-mail: Via Sciangai, 53 - 00144 Roma - ITALY 23