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, 14 years ago

Fixed the mailinglist link and removed the gui section.

File size: 8.5 KB
Line 
1/**
2\page getstart How to start using LEMON
3
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
9difficulties don't hesitate to <a href="mailto:etik-ol@cs.elte.hu">ask</a>.
10
11
12\section requirementsLEMON Hardware and software requirements
13
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.
17
18You will need a recent C++ compiler. Our primary target is the GNU C++
19Compiler (g++), from version 3.3 upwards. We also checked the Intel C++
20Compiler (icc). Microsoft Visual C++ .NET 2003 was also reported to
21work (but not the earlier versions). If you want to develop with LEMON
22under Windows you could consider using Cygwin.
23
24In this description we will suppose a Linux environment and GNU C++ Compiler.
25
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
35\section downloadLEMON How to download LEMON
36
37You can download LEMON from the LEMON web site:
38http://lemon.cs.elte.hu/download.html .
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.
44
45
46\section installLEMON How to install LEMON
47
48In order to install LEMON you have to do the following steps.
49
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:
54
55\verbatim
56tar xvzf lemon-0.3.1.tar.gz
57cd lemon-0.3.1
58./configure
59make
60make check   #(This is optional, but recommended. It runs a bunch of tests.)
61make install
62\endverbatim
63
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
67pass the \c --prefix=DIRECTORY flag to \c ./configure, for example:
68
69\verbatim
70./configure --prefix=/home/username/lemon
71\endverbatim
72
73In what follows we will assume that you were able to install to directory
74\c /usr/local, otherwise some extra care is to be taken to use the
75library.
76
77We briefly explain these commands below.
78
79\verbatim
80tar xvzf lemon-0.3.1.tar.gz
81\endverbatim
82This command untars the <tt>tar.gz</tt> file into a directory named <tt>
83lemon-0.3.1</tt>.
84
85\verbatim
86cd lemon-0.3.1
87\endverbatim
88Enters the directory.
89
90\verbatim
91./configure
92\endverbatim
93Does some configuration (creates makefiles etc).
94
95\verbatim
96make
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.
101
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.
108
109\verbatim
110make install
111\endverbatim
112This will copy the directory structure to its final destination (e.g. to \c
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
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
134the GLPK headers and libraries are not under the same prefix (which is
135unlikely).
136
137\verbatim
138--with-glpk-libdir=DIR
139\endverbatim
140The directory where the GLPK libraries are located. This is only useful when
141the GLPK headers and libraries are not under the same prefix (which is
142unlikely).
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).
205
206\section helloworld My first program using LEMON
207
208If you have installed LEMON on your system you can paste the
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.
212
213\dontinclude hello_lemon.cc
214\skip include
215\until }
216
217First let us briefly explain how this program works.
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
222After some convenience typedefs we create a graph and add three nodes to it.
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
235If your installation of LEMON into directory \c /usr/local was
236successful, then it is very easy to compile this program with the
237following command (the argument <tt>-lemon</tt> tells the compiler
238that we are using the installed library LEMON):
239
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
245this directory that you can run by the command
246\verbatim
247./hello_lemon
248\endverbatim
249
250
251If everything has gone well then the previous code fragment prints
252out the following:
253
254\verbatim
255Nodes: 2 1 0
256
257Edges: (0,2) (1,2) (0,1) (2,1) (1,0) (2,0)
258\endverbatim
259
260Congratulations!
261
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
265\ref demoprograms "Demo Programs" page!
266
267
268*/
Note: See TracBrowser for help on using the repository browser.