-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
218 lines (173 loc) · 8.38 KB
/
README
File metadata and controls
218 lines (173 loc) · 8.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
OPT++ 2.4
A Nonlinear Optimization Package in C++.
---------------------------------------------------------------------------
Authors: Juan C. Meza
Lawrence Berkeley National Laboratory
Patricia D. Hough
Sandia National Laboratories
Pamela J. Williams
Sandia National Laboratories
Ricardo A. Oliva
Sabio Labs
Bug Reports: http://software.sandia.gov/bugzilla
Contact: opt++-developers@software.sandia.gov
URLs: http://csmr.ca.sandia.gov/projects/opt++
http://www.nersc.gov/~meza/projects/opt++
Thanks to Sherae Daniel of the University of Maryland and Andrew
Rothfuss of Sandia National Labs for help with the GUI/XML interface.
Thanks also to Edward Walsh and Shane Brown, both of Sandia National
Labs, for their assistance in converting the build system to
autotools.
---------------------------------------------------------------------------
Description
OPT++ is a C++ library of nonlinear optimization algorithms. The
motivation for this package is to build an environment for the rapid
prototyping and development of new optimization algorithms. In
particular, the focus is on robust and efficient algorithms for
problems in which the function and constraint evaluations require the
execution of an expensive computer simulation.
Currently, OPT++ includes the classic Newton methods, a nonlinear
interior-point method, parallel direct search, a trust region -
parallel direct search hybrid, a generating set search, and a wrapper
to NPSOL. Between these methods, a wide range of problems can be
solved, e.g. with or without constraints, with or without analytic
gradients, simulation based, etc.
The package consists of the following subdirectories:
config The config directory contains the autotools
macros that are needed to successfully
configure and build OPT++.
docs Documentation for OPT++ resides in the docs
subdirectory. The most comprehensive form of
the documentation is HTML that can be built
using doxygen.
include The include subdirectory contains all of the
OPT++ header files. These files define the
data members and functions needed for both
problem setup and algorithm execution.
lib After they are built, the OPT++ and NEWMAT
libraries will be placed in the lib
subdirectory.
newmat11 Included and used by OPT++ is R.B. Davies's
matrix package, newmat11, with some minor
modifications required for the optimization
package. Changes to newmat are
print.C: printing routines taken from tmt.cxx
newmat.h: added two new member functions Dot
and Norm2 to ColumnVector
For package conditions of use, please refer to
the CONDITIONS_OF_USE file located in the
newmat11 directory.
src The src subdirectory contains all of the OPT++
source code. It is broken down into six
subdirectories.
Base: code for all of the base
classes
Constraints: code for definition and
manipulation of constraints
GSS: code for the Generating Set
Search algorithm
Newton: code for the Newton-based
optimization algorithms
PDS: code for the Parallel Direct
Search algorithm
UserInterface code for the XML interface
Utils: code for miscellaneous
operations performed in OPT++
tests The tests subdirectory contains a variety of
regression tests and examples. These reside
the tests/constraints, tests/hock, tests/npsol,
tests/parallel, tests/uncon, and tests/xml
subdirectories.
OPT++ has been copyrighted by Sandia Corporation and is freely
distributed under GNU Lesser General Public License. Please see the
COPYRIGHT and the GNU_LGPL files in this directory for more
information.
---------------------------------------------------------------------------
Installation - The Basics
The installation procedure is based on the GNU Autotools. You should
be able to configure OPT++ for your particular system and then type
make in the top level directory. There is also a set of regression
tests that you can build and run.
If you are in a real hurry or one of the truly impatient, the
following 3 commands lines should get you going on most systems.
1) cd optpp-2.4
2) ./configure
3) make >& make.log
4) make check >& makecheck.log
5) make install
Note that the final step will install OPT++ in /usr/local, and thus,
you must have root privileges in order to execute that step
successfully. Be sure to examine the make.log and check.log files to
ensure that the build was successful and that the regression tests
passed. Report any problems via Bugzilla
(http://software.sandia.gov/bugzilla).
For additional options and further details about configuring,
building, and using OPT++, please see the INSTALL file in the
top-level OPT++ directory or the complete HTML documentation.
You can obtain the HTML documentation in one of two ways. The first
is to download the tar file, docs.tgz, from the OPT++ web page
(http://csmr.ca.sandia.gov/projects/opt++) and follow the included
instructions. This tar file contains the pre-built HTML files. The
alternative is to build the documentation with doxygen. To do this,
modify step 2 above to the following:
./configure --enable-html-docs
The HTML documentation will then automatically be built in step 3 if
doxygen is installed on your system. To access it, use your favorite
browser to open the file docs/html/index.html.
---------------------------------------------------------------------------
Known Issues
Alas, there a few issues that we are aware of:
1) BLAS: The m4 macro that we obtained to detect BLAS
libraries is a few years old, so there are a couple of
cases where they are not detected correctly.
- Intel compilers (icpc/icc) - The Math Kernel
Libraries (MKL) are not detected. If you want to
make use of the BLAS from MKL, you will have to set
the BLAS_LIBS environment variable to the
appropriate path.
- MAC OS X - The BLAS are implemented a little
differently on the MAC. In particular, they are
implemented as frameworks and thus not detected as
libraries. If you want to use the native MAC
implementation, set the LDFLAGS environment variable
to "-framework vecLib".
- SUN compilers (CC/cc) - Depending on which version
of the compilers you have, you may or may not have a
problem. The macro does not take into account some
recent changes associated with the newer
implementations. If there are problems, they will
show up at link time. In that case, try setting the
BLAS_LIBS environment variable to
"/opt/SUNWspro/lib/libsunperf.so".
We will work on correcting these issues.
2) NPSOL: We had problems linking in NPSOL on the MAC
platform. Try explicitly setting your FLIBS environment
variable to "-L/sw/lib -lfrtbegin -lg2c -lm -lgcc". That
may or may not do the trick.
We also had problems linking NPSOL with the GNU 4.0.2
compilers. We will keep working on both these issues.
3) XML/GUI: The XML and GUI interface has not been updated
yet, so it is currently not available with this version.
We will get this finished and distribute a patch file as
quickly as we can.
4) PGI Compilers: In our testing, we found that autotools was
adding an invalid item to the list of libraries when using
the PGI compilers. This causes the build of the test
problems to break. We have not yet isolated the problem,
but in the the meantime, it is an easy fix. If "make
check" fails, go into the "Makefile" in each of the test
directories (tests/constraints, tests/hock, tests/npsol,
tests/parallel, and tests/uncon) and search for "FLIBS".
Delete the first entry in the list, "-lm'"...it is that
extra single quote that is the culprit. Then try "make
check" again.
---------------------------------------------------------------------------
WARNING: This is RESEARCH code, and we all know what that means!
While it should run on most UNIX platforms with ANSI-compliant C++/C
compilers, there are no guarantees. On the bright side, we are happy
to improve the reliability of the code. Please report bugs to the
authors via Bugzilla (http://software.sandia.gov/bugzilla). Please
include complete information about your system (the output from the
command "uname -a" and the compiler/version), the exact error messages
generated, and any output produced. If possible, a small piece of
code that generates the bug would be most helpful.