2LP(ID:8038/)Linear Programming LanguageLinear programming language Ken McAloon and Carol Tretkoff Logic Based Systems Lab, CUNY Graduate Center and Brooklyn College References: The 2LP programming language The 2LP language is a constraint logic programming language with C like syntax. The data type continuous is introduced in order to capture the modeling methods of linear programming. Constraints on continuous variables define a polyhedral set called the feasible region. The representation of this convex body (by means of the simplex method) includes a distinguished vertex, called the witness point. Typically, at the end of a program, this vertex will be the solution to an optimization problem. Other structural information and communication routines are also connected with the polyhedral set. This collection forms an ?object? to use object-oriented programming (OOP) terminology. 2LP supports these constructs and has its own interpreter. On the other hand, object-oriented programming as in C++ enables one to extend a language with new data types without writing an interpreter for the expanded language. However, in order to support full algebraic modeling and to support the logical connectives in a structured way, the language approach is the most natural one. For the other approach to linear programming and constraint programming, see [31] and [32]. 2LP is different from algebraic modeling languages such as GAMS [11] and AMPL [17] in several ways. First, it is a logical control language as well as a modeling language and so supports search methods not usually available to the MIP modeler. Second, it can directly code disjunctive programs and avoid recoding as a MIP model. Third, 2LP supports parameter passing, procedure based modularity and other structured programming constructs. Fourth, the data types int and double in 2LP are the same as in CyC++ and so the 2LP model can be passed pointers to data directly from CyC++ avoiding a detour through a data file. As a programming language, 2LP is designed to be embedded in the larger programming scheme of things. The architecture provides for a very modular linkage between the logical control and the mathematical constraint solver. As a result, 2LP supports use of optimization libraries such as Cplex. This means that 2LP can be used for applications that require state-of-the-art optimization software and the system can move with changes in the mathematical programming world. Resources
|