![]() |
|
Note! |
Before using this information and the product it supports, be sure to read the general information under "Notices". |
IBM welcomes your comments. Reader's comments may be emailed to osl@us.ibm.com, or you sent comments to:
When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you.
Update to Fifth Edition (October 1997)
This edition applies to the Optimization Library, Version 2. of the IBM Optimization Library licensed program, number 5645-A61 and to all subsequent releases and modifications until otherwise indicated in new editions. In this document, IBM Optimization Library refers to all versions of the library for whatever platform.
References in this publication to IBM products, programs, or services do not imply that IBM intends to make these available in all countries in which IBM operates. Any reference to an IBM product, program, or service is not intended to state or imply that only IBM's product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any of IBM's intellectual property rights or other legally protectible rights may be used instead of the IBM product, program, or service. Evaluation and verification of operation in conjunction with other products, programs, or services, except those expressly designated by IBM, are the user's responsibility.
IBM may have patents or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to the IBM Director of Commercial Relations, IBM Corporation, Purchase, NY 10577.
A separate license is required for each machine on which the licensed program materials will be used. That is, a separate license for the IBM Optimization Library is required for each machine on which an application program incorporating subroutines from the library is to be run.
Portions of the GENQMD subroutine developed by J. Alan George and Joseph W.H. Liu of the University of Waterloo are incorporated into the Optimization Library and are used with the permission of the authors.
This book is intended to help the customer use the Optimization Library product. It contains information on how to set up, code, and run application programs containing calls to library subroutines. This book documents general-use programming interfaces in Part 3, and associated guidance information in Parts 1 and 2. General-use programming interfaces allow the customer to write programs that make use of the capabilities of Optimization Library modules. However, no macros are provided that assist a customer in writing programs that access these capabilities.
The following terms, denoted by an asterisk (*) in this publication, are trademarks of the IBM Corporation in the United States and/or other countries:
AIX MVS/XA
AIX/ESA OS/2
BookManager Personal System/2
Enterprise System PS/2
ESA RISC System/6000
S/3090 System/370
ES/4381 System/390
ES/9000 Virtual Machine/E
IBM VM/ESA
MVS/ESA VM/XA
MVS/SP 3090
The following terms, denoted by a double asterisk (**) in this publication, are trademarks of other companies as follows:
Apollo, HP |
Hewlett-Packard Comp |
The IBM* Optimization Library is a collection of high-performance mathematical subroutines for use by application programs that solve optimization problems. The library can be used with C and FORTRAN programs to find solutions to linear, mixed-integer, and quadratic programming problems. This book is a guide and reference manual for using Optimization Library modules in application programs.
This book includes:
This book is written for a wide set of users: scientists, mathematicians, engineers, statisticians, numerical analysts, computer scientists, operations researchers, and system programmers. It assumes a basic knowledge of mathematical optimization and numerical computation. It also assumes that the user is familiar with FORTRAN or C, and is familiar with the workstation operating systems.
There are some sections of this book that may require additional knowledge about the different areas of mathematical programming. If you are interested in learning more about mathematical programming and optimization, you can find a list of suggested readings in the bibliography at the back of this book.
"Guide Information", provides guidance information for using Optimization Library modules. It covers the tasks of learning, processing, installing, and diagnosing. The following chapters make up Part 1:
"Application Design Principles", contains information about mathematical programming that is specific to the Optimization Library. It contains the information necessary for you to understand the design principles used in developing the library. The first chapter helps you to become familiar with the necessary terminology and concepts. The succeeding chapters show you how this information relates to all the subroutines.
"Reference", provides reference information that you need to code the subroutine calling sequences. The subroutines are listed in alphabetic order. Each subroutine description begins with a description of the subroutine and any specific information you must have to use it.
Three appendixes are also provided:
Also provided are a glossary of terms and abbreviations and a bibliography of publications on mathematical background and software.
The following sections explain terminology, symbols, and the other information you will need to use this book.
All the library subroutines are described in the reference part of this book. The subroutine names are listed individually in the index and in "Optimization Library Subroutines", which contains pointers to detailed descriptions of all the subroutines.
An overview of the related publications is listed in the bibliography. The bibliography also lists mathematical publications that you may find useful for background information, and it provides the information needed to order each book from an independent source.
Special references are made throughout this book to mathematical background publications and to several software publications available through IBM and other companies. All the information about these items is listed in the bibliography. Each reference is made by giving the Author's name (or Author's names) which is a hypertext link to the entry in the Bibliography.
Standard data processing and mathematical terminology is used throughout the documentation. Terminology is generally consistent with that used for VS FORTRAN. Refer to the glossary for definitions of terms used in this document.
Because the library modules can be used with more than one programming language, the terms fullword and doubleword are used in place of the FORTRAN terms single precision and double precision. These terms are consistent with the IBM ESA/390 Principles of Operation manual.
Abbreviated names used in this book are defined below.
Short Name |
Full Name |
AIX/6000 |
Advanced Interactive Executive/6000 |
AIX/ESA |
Advanced Interactive Executive/Enterprise Systems Architecture |
APL2 |
A Programming Language 2 |
C/370 |
IBM C/370 Compiler and Library |
CMS |
Conversational Monitor System |
ESA* |
Enterprise Systems Architecture |
ES/3090* |
IBM Enterprise System/3090* Processor |
ES/9000* |
IBM Enterprise System/9000* Processor |
IAD |
Interactive Debug facility |
ICA |
Intercompilation Analysis |
ISPF |
Interactive System Productivity Facility |
JCL |
Job control language |
LP |
Linear programming |
MIP |
Mixed-integer programming |
MP |
Mathematical programming |
MPSX/370 |
Mathematical Program System Extended/370 |
MVS/ESA* |
Multiple Virtual Storage/Enterprise Systems Architecture |
MVS/SP* |
Multiple Virtual Storage/System Product |
MVS/XA* |
Multiple Virtual Storage/Extended Architecture |
OS/2 |
Operating System/2 |
PRPQ |
Programming Request for Price Quotation |
PS/2 |
Personal System/2 computer |
PL/I |
Programming Language/I |
QP |
Quadratic programming |
TSO |
Time Sharing Option |
VF |
Vector Facility |
VM/ESA* |
Virtual Machine/Enterprise Systems Architecture |
VM/SP HPO |
Virtual Machine/System Product High Performance Option |
VM/XA* |
Virtual Machine/Extended Architecture* |
VM/XA SP |
Virtual Machine/Extended Architecture System Product |
VS FORTRAN |
Virtual System Formula Translation |
XLC |
C Compiler |
XLF |
FORTRAN Compiler |
This book uses a variety of special fonts to distinguish between many mathematical and programming items. These are described below.
Special Font |
Example |
Description |
Italic lowercase |
n, dspace, rtcod, num |
A calling sequence argument or mathematical variable |
Italic lowercase |
x1 , am n , xj1 j2 |
An element of a vector, matrix, or sequence |
Bold italic lowercase |
x, y, z |
A vector or sequence |
Bold italic uppercase |
A, B, C |
A matrix |
Gothic uppercase |
A, B, C, AGB //SYSLIB DD ... |
An array |
The mathematical and programming notations used in this book are consistent with traditional mathematical and programming usage. These conventions are explained below, along with special abbreviations that are associated with specific values.
Item |
Description |
Ai * |
The ith row of A |
A* j |
The jth column of A |
|| x|| |
The norm of x |
| a | |
The absolute value of a |
a l b |
The inner product of vectors a and b |
x1, . . . , xn |
Elements from x1 to xn |
i = 1 , n |
i is assigned the values 1 to n |
y |
Vector y is replaced by vector x |
AT ; x T |
The transpose of matrix A; the transpose of vector x |
n |
|
A -1 |
The inverse of matrix A |
| A | |
The determinant of matrix A |
m by n matrix A |
Matrix A has m rows and n columns |
m x n matrix A |
Matrix A has m rows and n columns |
cB |
The elements of the vector c that are in an index set B, where B denotes the set of indices of the basic variables |
AB |
A square submatrix of the coefficient matrix A whose columns are indexed by the index set B defined above |
AN |
A submatrix of the coefficient matrix A whose columns are indexed by the index set N, where N denotes the set of indices of the nonbasic variables |
N\B |
The set resulting when set B is subtracted from set N. |
8 |
The 8 bit of the integer control variable Imodelmask is set (so Imodelmask = 256, see "Control Variable Bit Masks" for more information) |
1, 8 |
The 1 and 8 bits of Imodelmask are set, i.e., Imodelmask=257 |
RHS |
Right-hand side |
This section explains how to interpret the information in the subroutine descriptions in Part 3.
Provides a brief explanation of what the subroutine does. In addition, it may name any prerequisite subroutines and give relevant programming points to consider.
Shows the syntax for the FORTRAN and C calling sequences:
FORTRAN |
CALL subroutine-name(argument1,argument2,...) |
C |
subroutine-name(argument1,argument2,...); |
All library subroutine names begin with EKK, the component identifier, to help prevent naming conflicts. The syntax descriptions show the arguments in the order in which they are coded. You can tell which arguments are used as input and output by looking at the "On Entry" and the "On Return" sections.
Notes:
Lists the arguments that contain values that are passed to the subroutine. Each argument description gives the explanation of the argument, the valid input values, and the type of data required for that argument.
Note: |
Some arguments, such as dspace, the user-provided work area, can be both entry and return arguments. |
Lists arguments containing values that are passed back to your program from the subroutine, such as a return code. Each argument description gives the meaning of the argument, the return code explanations, and the form of data passed back to your program for the argument. Any arguments not listed in this section are unchanged.
Note: |
Some arguments, such as dspace, the user-provided work area, can be both entry and return arguments. |
Describe any general programming considerations and restrictions that apply to the arguments or the data for the arguments. References may be made to other parts of the book for further information.
Gives you a list of the sample programs, provided in Appendix B, that call the subroutine.
[ Top of Page | Previous Page | Next Page | Table of Contents ]