COIN-OR::LEMON - Graph Library

source: lemon-0.x/doc/getstart.dox @ 2196:09af6d2b683b

Last change on this file since 2196:09af6d2b683b was 2167:7e109b222053, checked in by Akos Ladanyi, 18 years ago

Fixed the mailinglist link and removed the gui section.

File size: 8.5 KB
RevLine 
[1173]1/**
2\page getstart How to start using LEMON
3
[1519]4In this page we detail how to start using LEMON, from downloading it to
5your computer, through the steps of installation, to showing a simple
6"Hello World" type program that already uses LEMON. We assume that you
7have a basic knowledge of your operating system and \c C++ programming
8language. The procedure is pretty straightforward, but if you have any
[2167]9difficulties don't hesitate to <a href="mailto:etik-ol@cs.elte.hu">ask</a>.
[1175]10
[1637]11
[1514]12\section requirementsLEMON Hardware and software requirements
[1175]13
[1519]14In LEMON we use C++ templates heavily, thus compilation takes a
15considerable amount of time and memory. So some decent box would be
16advantageous. But otherwise there are no special hardware requirements.
[1514]17
[1519]18You will need a recent C++ compiler. Our primary target is the GNU C++
[1637]19Compiler (g++), from version 3.3 upwards. We also checked the Intel C++
20Compiler (icc). Microsoft Visual C++ .NET 2003 was also reported to
[1519]21work (but not the earlier versions). If you want to develop with LEMON
22under Windows you could consider using Cygwin.
[1514]23
[1637]24In this description we will suppose a Linux environment and GNU C++ Compiler.
[1514]25
[1637]26
27\subsection requirementsLP LP solver requirements
28
29The LEMON LP solver interface can use the GLPK (GNU Linear Programming Kit)
30and CPLEX solvers (was tested with CPLEX 7.5). If you want to use it you will
31need at least one of these. See \ref configureFlags how to enable these at
32compile time.
33
34
[1173]35\section downloadLEMON How to download LEMON
36
[1511]37You can download LEMON from the LEMON web site:
[1637]38http://lemon.cs.elte.hu/download.html .
[1519]39There you will find released versions in form of <tt>.tar.gz</tt> files.
40If you want a developer version (for example you want to contribute in
41developing the library LEMON) then you might want to use our Subversion
42repository. This case is not detailed here, so from now on we suppose that
43you downloaded a tar.gz file.
[1514]44
[1175]45
[1173]46\section installLEMON How to install LEMON
47
[1528]48In order to install LEMON you have to do the following steps.
[1173]49
[1519]50Download the tarball (named <tt>lemon-x.y.z.tar.gz</tt> where \c x,\c y
51and \c z are numbers indicating the version of the library: in our example
52we will have <tt>lemon-0.3.1.tar.gz</tt>) and issue the following
53commands:
[1511]54
[1519]55\verbatim
[1511]56tar xvzf lemon-0.3.1.tar.gz
57cd lemon-0.3.1
58./configure
59make
[1528]60make check   #(This is optional, but recommended. It runs a bunch of tests.)
[1511]61make install
[1519]62\endverbatim
[1511]63
[1519]64These commands install LEMON under \c /usr/local (you will
65need root privileges to be able to install to that
66directory). If you want to install it to some other place, then
[1528]67pass the \c --prefix=DIRECTORY flag to \c ./configure, for example:
68
69\verbatim
[2167]70./configure --prefix=/home/username/lemon
[1528]71\endverbatim
72
73In what follows we will assume that you were able to install to directory
[1519]74\c /usr/local, otherwise some extra care is to be taken to use the
75library.
[1511]76
[1514]77We briefly explain these commands below.
78
[1519]79\verbatim
[1514]80tar xvzf lemon-0.3.1.tar.gz
[1519]81\endverbatim
82This command untars the <tt>tar.gz</tt> file into a directory named <tt>
83lemon-0.3.1</tt>.
[1514]84
[1519]85\verbatim
[1514]86cd lemon-0.3.1
[1519]87\endverbatim
[1514]88Enters the directory.
89
[1519]90\verbatim
[1514]91./configure
[1519]92\endverbatim
[1514]93Does some configuration (creates makefiles etc).
94
[1519]95\verbatim
[1514]96make
[1519]97\endverbatim
98This command compiles the non-template part of LEMON into
99<b>libemon.a</b> file. It also compiles some benchmark and demo
100programs.
[1514]101
[1519]102\verbatim
103make check
104\endverbatim
105This is an optional step: it runs the test programs that we
106developed for LEMON to check whether the library works properly on
107your platform.
[1514]108
[1519]109\verbatim
[1514]110make install
[1519]111\endverbatim
[1514]112This will copy the directory structure to its final destination (e.g. to \c
[1519]113/usr/local) so that your system can access it. This command should
114be issued as "root", unless you provided a \c --prefix switch to
[1637]115the \c configure to install the library in non-default location.
116
117
118\subsection configureFlags Configure flags
119
120You can pass the following flags to \c ./configure (see \c ./configure --help
121for more):
122
123\verbatim
124--with-glpk[=PREFIX]
125\endverbatim
126Enable GLPK support (default). You should specify the prefix too if you
127installed it to some non-standard location (e.g. your home directory). If
128GLPK is not found, then GLPK support will be disabled.
129
130\verbatim
131--with-glpk-includedir=DIR
132\endverbatim
133The directory where the GLPK header files are located. This is only useful when
[1713]134the GLPK headers and libraries are not under the same prefix (which is
135unlikely).
[1637]136
137\verbatim
138--with-glpk-libdir=DIR
139\endverbatim
140The directory where the GLPK libraries are located. This is only useful when
[1713]141the GLPK headers and libraries are not under the same prefix (which is
142unlikely).
[1637]143
144\verbatim
145--without-glpk
146\endverbatim
147Disable GLPK support.
148
149\verbatim
150--with-cplex[=PREFIX]
151\endverbatim
152Enable CPLEX support (default). You should specify the prefix too if you
153installed it to some non-standard location (e.g. \c /opt/ilog/cplex75). If
154CPLEX is not found, then CPLEX support will be disabled.
155
156\verbatim
157--with-cplex-includedir=DIR
158\endverbatim
159The directory where the CPLEX header files are located. This is only useful
160when the CPLEX headers and libraries are not under the same prefix.
161
162\verbatim
163--with-cplex-libdir=DIR
164\endverbatim
165The directory where the CPLEX libraries are located. This is only useful when
166the CPLEX headers and libraries are not under the same prefix.
167
168\verbatim
169--without-cplex
170\endverbatim
171Disable CPLEX support.
172
173
174\section svnCheckout How to checkout LEMON form our Subversion repository
175
176You can obtain the latest version of LEMON from our Subversion repository. To
177do this issue the following command:
178\verbatim
179svn co https://lemon.cs.elte.hu/svn/hugo/trunk lemon
180\endverbatim
181Use "lemon" as username, the password is empty.
182
183
184\section svnCompile How to compile the source from the repository
185
186You can compile the code from the repository similarly to the packaged version,
187but you will need to run \c ./bootstrap before \c ./configure. See \c
188./bootstrap \c --help for options. For bootstrapping you will need the
189following tools:
190
191 - <a href="http://www.gnu.org/software/automake/">automake</a> (1.7 or newer)
192 - <a href="http://www.gnu.org/software/autoconf/">autoconf</a> (2.59 or newer)
193 - <a href="http://www.gnu.org/software/libtool/">libtool</a>
194 - <a href="http://pkgconfig.freedesktop.org/">pkgconfig</a>
195
196To generate the documentation, run \c make \c doc. You will need
197<a href="http://www.doxygen.org/">Doxygen</a> for this.
198
199You can pass the \c --enable-doc=full flag to \c ./configure to generate the
200internal documentation too.
201
202If you pass the \c --disable-doc flag to \c ./configure then the documentation
203won't be installed, when you run \c make \c install (this speeds things up a
204bit).
[1175]205
[1173]206\section helloworld My first program using LEMON
207
[1519]208If you have installed LEMON on your system you can paste the
[1520]209following code segment into a file (you can find it as \c
210demo/hello_lemon.cc in the LEMON package) to have a first working
211program that uses library LEMON.
[1173]212
[1640]213\dontinclude hello_lemon.cc
214\skip include
215\until }
[1175]216
[1514]217First let us briefly explain how this program works.
[1175]218
219ListGraph is one of LEMON's graph classes. It is based on linked lists,
220therefore iterating throuh its edges and nodes is fast.
221
[1713]222After some convenience typedefs we create a graph and add three nodes to it.
[1175]223Then we add edges to it to form a complete graph.
224
225Then we iterate through all nodes of the graph. We use a constructor of the
226node iterator to initialize it to the first node. The operator++ is used to
227step to the next node. Using operator++ on the iterator pointing to the last
228node invalidates the iterator i.e. sets its value to
229\ref lemon::INVALID "INVALID". This is what we exploit in the stop condition.
230
231We can also iterate through all edges of the graph very similarly. The
232\c target and
233\c source member functions can be used to access the endpoints of an edge.
234
[1520]235If your installation of LEMON into directory \c /usr/local was
[1713]236successful, then it is very easy to compile this program with the
[1520]237following command (the argument <tt>-lemon</tt> tells the compiler
238that we are using the installed library LEMON):
[1514]239
[1519]240\verbatim
241g++ hello_lemon.cc -o hello_lemon -lemon
242\endverbatim
243
244As a result you will get the exacutable \c hello_lemon in
[1514]245this directory that you can run by the command
[1519]246\verbatim
247./hello_lemon
248\endverbatim
[1514]249
250
[1519]251If everything has gone well then the previous code fragment prints
252out the following:
[1175]253
[1519]254\verbatim
[1175]255Nodes: 2 1 0
256
257Edges: (0,2) (1,2) (0,1) (2,1) (1,0) (2,0)
[1519]258\endverbatim
[1175]259
[1514]260Congratulations!
[1175]261
[1519]262If you want to see more features, go to the
263\ref quicktour "Quick Tour to LEMON",
264if you want to see see some demo programs then go to our
[1175]265\ref demoprograms "Demo Programs" page!
266
267
268*/
Note: See TracBrowser for help on using the repository browser.