COIN-OR::LEMON - Graph Library

source: lemon-0.x/doc/getstart.dox @ 2391:14a343be7a5a

Last change on this file since 2391:14a343be7a5a was 2391:14a343be7a5a, checked in by Alpar Juttner, 13 years ago

Happy New Year to all source files!

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