rev |
line source |
alpar@9
|
1
|
alpar@9
|
2 GNU Linear Programming Kit FAQ
|
alpar@9
|
3
|
alpar@9
|
4 Summary: Frequently Asked Questions about the GNU Linear Programming Kit
|
alpar@9
|
5
|
alpar@9
|
6 Author: Dr. Harley Mackenzie <hjm@hardsoftware.com>
|
alpar@9
|
7
|
alpar@9
|
8 Posting-Frequency: Monthly
|
alpar@9
|
9
|
alpar@9
|
10 Language: English
|
alpar@9
|
11
|
alpar@9
|
12 $Date: 2004/01/09 05:57:57 $
|
alpar@9
|
13
|
alpar@9
|
14 $Revision: 1.6 $
|
alpar@9
|
15
|
alpar@9
|
16
|
alpar@9
|
17
|
alpar@9
|
18 Introduction
|
alpar@9
|
19
|
alpar@9
|
20 Q. What is GPLK?
|
alpar@9
|
21
|
alpar@9
|
22 A. GLPK stands for the GNU Linear Programming Kit. The GLPK package is
|
alpar@9
|
23 a set of routines written in ANSI C and organized in the form of a
|
alpar@9
|
24 callable library. This package is intended for solving large-scale
|
alpar@9
|
25 linear programming (LP), mixed integer linear programming (MIP), and
|
alpar@9
|
26 other related problems.
|
alpar@9
|
27
|
alpar@9
|
28 The GLPK package includes the following main components:
|
alpar@9
|
29
|
alpar@9
|
30 * implementation of the simplex method,
|
alpar@9
|
31
|
alpar@9
|
32 * implementation of the primal-dual interior point method,
|
alpar@9
|
33
|
alpar@9
|
34 * implementation of the branch-and-bound method,
|
alpar@9
|
35
|
alpar@9
|
36 * application program interface (API),
|
alpar@9
|
37
|
alpar@9
|
38 * GNU MathProg modeling language (a subset of AMPL),
|
alpar@9
|
39
|
alpar@9
|
40 * GLPSOL, a stand-alone LP/MIP solver.
|
alpar@9
|
41
|
alpar@9
|
42
|
alpar@9
|
43 Q. Who develops and maintains GLPK?
|
alpar@9
|
44
|
alpar@9
|
45 A. GLPK is currently developed and maintained by Andrew Makhorin,
|
alpar@9
|
46 Department for Applied Informatics, Moscow Aviation Institute, Moscow,
|
alpar@9
|
47 Russia. Andrew's email address is <mao@mai2.rcnet.ru> and his postal
|
alpar@9
|
48 address is 125871, Russia, Moscow, Volokolamskoye sh., 4, Moscow
|
alpar@9
|
49 Aviation Institute, Andrew O. Makhorin
|
alpar@9
|
50
|
alpar@9
|
51
|
alpar@9
|
52 Q. How is GLPK licensed?
|
alpar@9
|
53
|
alpar@9
|
54 A. GLPK is currently licensed under the GNU General Public License
|
alpar@9
|
55 (GPL). GLPK is free software; you can redistribute it and/or modify it
|
alpar@9
|
56 under the terms of the GNU General Public License as published by the
|
alpar@9
|
57 Free Software Foundation; either version 2, or (at your option) any
|
alpar@9
|
58 later version.
|
alpar@9
|
59
|
alpar@9
|
60 GLPK is not licensed under the Lesser General Public License (LGPL) as
|
alpar@9
|
61 distinct from other free LP codes such as lp_solve. The most
|
alpar@9
|
62 significant implication is that code that is linked to the GLPK library
|
alpar@9
|
63 must be released under the GPL, whereas with the LGPL, code linked to
|
alpar@9
|
64 the library does not have to be released under the same license.
|
alpar@9
|
65
|
alpar@9
|
66
|
alpar@9
|
67 Q. Where is the GLPK home page?
|
alpar@9
|
68
|
alpar@9
|
69 The GLPK home page is part of the GNU web site and can found at
|
alpar@9
|
70 <http://www.gnu.org/software/glpk/glpk.html>.
|
alpar@9
|
71
|
alpar@9
|
72
|
alpar@9
|
73 Q. How do I download and install GLPK?
|
alpar@9
|
74
|
alpar@9
|
75 A. The GLPK source distribution can be found in the subdirectory
|
alpar@9
|
76 /gnu/glpk/ on your favorite GNU mirror
|
alpar@9
|
77 <http://www.gnu.org/prep/ftp.html> and can be compiled directly from
|
alpar@9
|
78 the source.
|
alpar@9
|
79
|
alpar@9
|
80 The GLPK package (like all other GNU software) is distributed in the
|
alpar@9
|
81 form of packed archive. This is one file named 'glpk-x.y.tar.gz', where
|
alpar@9
|
82 x is the major version number and y is the minor version number.
|
alpar@9
|
83
|
alpar@9
|
84 In order to prepare the distribution for installation you should:
|
alpar@9
|
85
|
alpar@9
|
86 1. Copy the GLPK distribution file to some subdirectory.
|
alpar@9
|
87
|
alpar@9
|
88 2. Enter the command 'gzip -d glpk-x.y.tar.gz' in order to unpack the
|
alpar@9
|
89 distribution file. After unpacking the name of the distribution file
|
alpar@9
|
90 will be automatically changed to 'glpk-x.y.tar'.
|
alpar@9
|
91
|
alpar@9
|
92 3. Enter the command 'tar -x < glpk-x.y.tar' in order to unarchive the
|
alpar@9
|
93 distribution. After this operation the subdirectory 'glpk-x.y' which is
|
alpar@9
|
94 the GLPK distribution will have been automatically created.
|
alpar@9
|
95
|
alpar@9
|
96 After you have unpacked and unarchived GLPK distribution you should
|
alpar@9
|
97 configure the package, and compiled the application. The result of
|
alpar@9
|
98 compilation is:
|
alpar@9
|
99
|
alpar@9
|
100 * the file 'libglpk.a', which is a library archive containing object code
|
alpar@9
|
101 for all GLPK routines; and
|
alpar@9
|
102
|
alpar@9
|
103 * the program 'glpsol', which is a stand-alone LP/MIP solver.
|
alpar@9
|
104
|
alpar@9
|
105 Complete compilation and installation instructions are included in the
|
alpar@9
|
106 INSTALL file included with the distribution.
|
alpar@9
|
107
|
alpar@9
|
108 The distribution includes make files for the Microsoft Visual C/C++
|
alpar@9
|
109 version 6 and Borland C/C++ version 5 and by default compiles and links
|
alpar@9
|
110 a glpk*.lib library file, a glpk*.dll DLL file and an glpsol.exe
|
alpar@9
|
111 application file. A GNU Windows 4.1 binary, source and documentation
|
alpar@9
|
112 compiled using the mingw32 C/C++ compiler is also available from
|
alpar@9
|
113 <http://gnuwin32.sourceforge.net/packages/glpk.htm>.
|
alpar@9
|
114
|
alpar@9
|
115
|
alpar@9
|
116 Q. Is there a GLPK mailing list or newsgroup?
|
alpar@9
|
117
|
alpar@9
|
118 A. GLPK has two mailing lists: <help-glpk@gnu.org> and
|
alpar@9
|
119 <bug-glpk@gnu.org>.
|
alpar@9
|
120
|
alpar@9
|
121 The main discussion list is <help-glpk@gnu.org>, and is used to discuss
|
alpar@9
|
122 all aspects of GLPK, including its development and porting. There is
|
alpar@9
|
123 also a special list used for reporting bugs at <bug-glpk@gnu.org>.
|
alpar@9
|
124
|
alpar@9
|
125 To subscribe to any GLPK mailing list, send an empty mail with a
|
alpar@9
|
126 Subject: header line of just "subscribe" to the relevant -request list.
|
alpar@9
|
127 For example, to subscribe yourself to the main list, you would send
|
alpar@9
|
128 mail to <help-glpk-request@gnu.org> with no body and a Subject: header
|
alpar@9
|
129 line of just "subscribe".
|
alpar@9
|
130
|
alpar@9
|
131 Another way to subscribe to the GLP mailing lists is to visit the web
|
alpar@9
|
132 pages <http://mail.gnu.org/mailman/listinfo/help-glpk> and
|
alpar@9
|
133 <http://mail.gnu.org/mailman/listinfo/bug-glpk>.
|
alpar@9
|
134
|
alpar@9
|
135 Currently there are no newsgroups dedicated to GLPK.
|
alpar@9
|
136
|
alpar@9
|
137
|
alpar@9
|
138 Q. Who maintains this FAQ and how do I contribute to this FAQ?
|
alpar@9
|
139
|
alpar@9
|
140 A. The present maintainer of this FAQ is Dr. Harley Mackenzie, HARD
|
alpar@9
|
141 software, although the content of the FAQ is derived from many sources
|
alpar@9
|
142 such as GLPK documentation, GLPK email archives and original content.
|
alpar@9
|
143
|
alpar@9
|
144 Harley's email address is <hjm@hardsoftware.com> and his postal address
|
alpar@9
|
145 is c/o HARD software, PO Box 8004, Newtown, Victoria 3220, Australia.
|
alpar@9
|
146
|
alpar@9
|
147 All contributions to this FAQ, such as questions and (preferably)
|
alpar@9
|
148 answers should be sent to the <hjm@hardsoftware.com> email address.
|
alpar@9
|
149 This FAQ is copyright Harley Mackenzie 2003 and is released under the
|
alpar@9
|
150 same license, terms and conditions as GLPK, that is, GPL version 2 or
|
alpar@9
|
151 later.
|
alpar@9
|
152
|
alpar@9
|
153 Contributions are not directly referenced in the body of the FAQ as
|
alpar@9
|
154 this would become unmanageable and messy, but rather as a list of
|
alpar@9
|
155 contributors to this FAQ. If you are the author of any information
|
alpar@9
|
156 included in this FAQ and you do not want your content to be included,
|
alpar@9
|
157 please contact the FAQ maintainer and your material will be removed.
|
alpar@9
|
158 Also if you have not been correctly included as a contributor to this
|
alpar@9
|
159 FAQ, your details have changed, or you do not want your name listed in
|
alpar@9
|
160 the list of contributors, please contact the FAQ maintainer for
|
alpar@9
|
161 correction.
|
alpar@9
|
162
|
alpar@9
|
163
|
alpar@9
|
164 Q. Where can I download this FAQ?
|
alpar@9
|
165
|
alpar@9
|
166 The latest version of the GLPK FAQ is available to download from
|
alpar@9
|
167 <http://www.hardsoftware.com/downloads.php#GLPK+FAQ> in the following
|
alpar@9
|
168 formats:
|
alpar@9
|
169
|
alpar@9
|
170 * DocBook
|
alpar@9
|
171
|
alpar@9
|
172 * Formatted text
|
alpar@9
|
173
|
alpar@9
|
174 * Adobe PDF
|
alpar@9
|
175
|
alpar@9
|
176
|
alpar@9
|
177 Q. Who are the FAQ contributors?
|
alpar@9
|
178
|
alpar@9
|
179 A. The FAQ contents were created from the following sources:
|
alpar@9
|
180
|
alpar@9
|
181 * Michael Hennebry
|
alpar@9
|
182
|
alpar@9
|
183 * http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programming-faq.html
|
alpar@9
|
184
|
alpar@9
|
185 * Harley Mackenzie, HARD software Pty. Ltd.
|
alpar@9
|
186
|
alpar@9
|
187 * Andrew Makhorin, Department for Applied Informatics, Moscow Aviation
|
alpar@9
|
188 Institute
|
alpar@9
|
189
|
alpar@9
|
190
|
alpar@9
|
191 GLPK functions & features
|
alpar@9
|
192
|
alpar@9
|
193 Q. What is the current state of GLPK development?
|
alpar@9
|
194
|
alpar@9
|
195 A. GLPK is a work in progress and is presently under continual
|
alpar@9
|
196 development. As of the current version 4.3, GLPK is a simplex-based
|
alpar@9
|
197 solver is able to handle problems with up to 100,000 constraints. In
|
alpar@9
|
198 particular, it successfully solves all instances from netlib (see the
|
alpar@9
|
199 file bench.txt included in the GLPK distribution). The interior-point
|
alpar@9
|
200 solver is not very robust as it is unable to handle dense columns,
|
alpar@9
|
201 sometimes terminates due to numeric instability or slow convergence.
|
alpar@9
|
202
|
alpar@9
|
203 The Mixed Integer Programming (MIP) solver currently is based on
|
alpar@9
|
204 branch-and-bound, so it is unable to solve hard or very large problems
|
alpar@9
|
205 with a probable practical limit of 100-200 integer variables. However,
|
alpar@9
|
206 sometimes it is able to solve larger problems of up to 1000 integer
|
alpar@9
|
207 variables, although the size that depends on properties of particular
|
alpar@9
|
208 problem.
|
alpar@9
|
209
|
alpar@9
|
210
|
alpar@9
|
211 Q. How does GLPK compare with other LP codes?
|
alpar@9
|
212
|
alpar@9
|
213 A. I think that on very large-scale instances CPLEX 8.0 dual simplex is
|
alpar@9
|
214 10-100 times faster than the GLPK simplex solver and, of course, much
|
alpar@9
|
215 more robust. In many cases GLPK is faster and more robust than lp_solve
|
alpar@9
|
216 4.0 for pure LPs as well as MIP's. See the bench.txt file in the GLPK
|
alpar@9
|
217 distribution doc directory for GLPK netlib benchmark results.
|
alpar@9
|
218
|
alpar@9
|
219 You can find benchmarks for some LP and MIP solvers such as CPLEX,
|
alpar@9
|
220 GLPK, lp_solve, and OSL on Hans Mittelmann's webpage at
|
alpar@9
|
221 <http://plato.asu.edu/bench.html>.
|
alpar@9
|
222
|
alpar@9
|
223
|
alpar@9
|
224 Q. What are the differences between AMPL and GNU MathProg?
|
alpar@9
|
225
|
alpar@9
|
226 A. The subset of AMPL implemented in MathProg approximately corresponds
|
alpar@9
|
227 to AMPL status in 1990, because it is mainly based on the paper Robert
|
alpar@9
|
228 Fourer, David M Gay and Brian W Kernighan (1990), "A Modeling Language
|
alpar@9
|
229 for Mathematical Programming", Management Science, Vol 36, pp. 519-554
|
alpar@9
|
230 and is available at
|
alpar@9
|
231 <http://users.iems.nwu.edu/~4er/WRITINGS/amplmod.pdf>.
|
alpar@9
|
232
|
alpar@9
|
233 The GNU MathProg translator was developed as part of GLPK. However, GNU
|
alpar@9
|
234 MathProg can be easily used in other applications as there is a set of
|
alpar@9
|
235 MathProg interface routines designed for use in other applications.
|
alpar@9
|
236
|
alpar@9
|
237
|
alpar@9
|
238 Q. What input file formats does GLPK support?
|
alpar@9
|
239
|
alpar@9
|
240 A. GLPK presently can read input and output LP model files in three
|
alpar@9
|
241 supported formats:
|
alpar@9
|
242
|
alpar@9
|
243 * MPS format - which is a column oriented and widely supported file
|
alpar@9
|
244 format but has poor human readability.
|
alpar@9
|
245
|
alpar@9
|
246 * CPLEX format - which is an easily readable row oriented format.
|
alpar@9
|
247
|
alpar@9
|
248 * GNU MathProg - which is an AMPL like mathematical modeling language.
|
alpar@9
|
249
|
alpar@9
|
250
|
alpar@9
|
251 Q. What interfaces are available for GLPK?
|
alpar@9
|
252
|
alpar@9
|
253 A. The GLPK package is in fact a C API that can be either by statically
|
alpar@9
|
254 or dynamically linked directly with many programming systems.
|
alpar@9
|
255
|
alpar@9
|
256 Presently there are three contributed external interfaces included with
|
alpar@9
|
257 the GLPK package:
|
alpar@9
|
258
|
alpar@9
|
259 * GLPK Java Native Interface (JNI)
|
alpar@9
|
260
|
alpar@9
|
261 * GLPK Delphi Interface (DELI)
|
alpar@9
|
262
|
alpar@9
|
263 * GLPKMEX Matlab MEX interface
|
alpar@9
|
264
|
alpar@9
|
265 There is an unofficial Microsoft Visual Basic, Tcl/Tk and Java GLPK
|
alpar@9
|
266 interface available at
|
alpar@9
|
267 <http://gottfried.lindner.bei.t-online.de/glpk.htm>.
|
alpar@9
|
268
|
alpar@9
|
269 There are other language interfaces under development, including a Perl
|
alpar@9
|
270 interface currently being developed by the FAQ maintainer, Dr. Harley
|
alpar@9
|
271 Mackenzie <hjm@hardsoftware.com>.
|
alpar@9
|
272
|
alpar@9
|
273
|
alpar@9
|
274 Q. Where can I find some examples?
|
alpar@9
|
275
|
alpar@9
|
276 A. The GLPK package distribution contains many examples written in GNU
|
alpar@9
|
277 MathProg (*.mod), C API calls (*.c), CPLEX input file format (*.lpt),
|
alpar@9
|
278 MPS format (*.mps) as well as some specific Traveling Salesman examples
|
alpar@9
|
279 (*.tsp).
|
alpar@9
|
280
|
alpar@9
|
281 All of the examples can be found in the GLPK distribution examples
|
alpar@9
|
282 sub-directory.
|
alpar@9
|
283
|
alpar@9
|
284
|
alpar@9
|
285 Q. What are the future plans for GLPK?
|
alpar@9
|
286
|
alpar@9
|
287 A. Developments planned for GLPK include improving the existing key
|
alpar@9
|
288 GLPK components, such as developing a more robust and more efficient
|
alpar@9
|
289 implementation of the simplex-based and interior-point solvers. Future
|
alpar@9
|
290 GLPK enhancements planned are implementing a branch-and-cut solver, a
|
alpar@9
|
291 MIP pre-processor, post-optimal and sensitivity analysis and possibly
|
alpar@9
|
292 network simplex and quadratic programming solvers.
|
alpar@9
|
293
|
alpar@9
|
294
|
alpar@9
|
295 Q. How do I report a GLPK bug?
|
alpar@9
|
296
|
alpar@9
|
297 A. If you think you have found a bug in GLPK, then you should send as
|
alpar@9
|
298 complete a report as possible to <bug-glpk@gnu.org>.
|
alpar@9
|
299
|
alpar@9
|
300
|
alpar@9
|
301 Q. How do I contribute to the GLPK development?
|
alpar@9
|
302
|
alpar@9
|
303 A. At present new GLPK development patches should be emailed to Andrew
|
alpar@9
|
304 Makhorin <mao@mai2.rcnet.ru >, with sufficient documentation and test
|
alpar@9
|
305 code to explain the nature of the patch, how to install it and the
|
alpar@9
|
306 implications of its use. Before commencing any major GLPK development
|
alpar@9
|
307 for inclusion in the GLPK distribution, it would be a good idea to
|
alpar@9
|
308 discuss the idea on the GLPK mailing list.
|
alpar@9
|
309
|
alpar@9
|
310
|
alpar@9
|
311 Q. How do I compile and link a GLPK application on a UNIX platform?
|
alpar@9
|
312
|
alpar@9
|
313 A. To compile a GLPK application on a UNIX platform, then compiler must
|
alpar@9
|
314 be able to include the GLPK include files and link to the GLPK library.
|
alpar@9
|
315 For example, on a system where the GLPK system is installed:
|
alpar@9
|
316
|
alpar@9
|
317 gcc mylp.c -o mylp -lglpk
|
alpar@9
|
318
|
alpar@9
|
319 or specify the include files and libglpk.a explicitly, if GLPK is not
|
alpar@9
|
320 installed.
|
alpar@9
|
321
|
alpar@9
|
322
|
alpar@9
|
323 Q. How do I compile and link a GLPK application on a Win32 platform?
|
alpar@9
|
324
|
alpar@9
|
325 A. On a Win32 platform, GLPK is implemented either as a Win32 Dynamic
|
alpar@9
|
326 Link Library (DLL) or can be statically linked to the glpk*.lib file.
|
alpar@9
|
327 As with the UNIX instructions, a GLPK application must set a path to
|
alpar@9
|
328 the GLPK include files and also reference the GLPK library if
|
alpar@9
|
329 statically linked.
|
alpar@9
|
330
|
alpar@9
|
331
|
alpar@9
|
332 Q. How do I limit the GLPK execution time?
|
alpar@9
|
333
|
alpar@9
|
334 A. You can limit the computing time by setting the control parameter
|
alpar@9
|
335 LPX_K_TMLIM via the API routine lpx_set_real_parm . At present there is
|
alpar@9
|
336 no way of limiting the execution time of glpsol without changing the
|
alpar@9
|
337 source and recompiling a specific version.
|
alpar@9
|
338
|
alpar@9
|
339
|
alpar@9
|
340 GLPK Linear Programming
|
alpar@9
|
341
|
alpar@9
|
342 Q. What is Linear Programming and how does it work?
|
alpar@9
|
343
|
alpar@9
|
344 A. Linear Programming is a mathematical technique that is a generic
|
alpar@9
|
345 method for solving certain systems of equations with linear terms. The
|
alpar@9
|
346 real power of LP's are that they have many practical applications and
|
alpar@9
|
347 have proven to be a powerful and robust tool.
|
alpar@9
|
348
|
alpar@9
|
349 The best single source of information on LP's is the Linear Programming
|
alpar@9
|
350 FAQ
|
alpar@9
|
351 <http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programming-faq.html>
|
alpar@9
|
352 that has information on LP's and MIP's, includes a comprehensive list
|
alpar@9
|
353 of available LP software and has many LP references for further study.
|
alpar@9
|
354
|
alpar@9
|
355
|
alpar@9
|
356 Q. How do I determine the stability of an LP solution?
|
alpar@9
|
357
|
alpar@9
|
358 A. You can perform sensitivity analysis by specifying the --bounds
|
alpar@9
|
359 option for glpsol as:
|
alpar@9
|
360
|
alpar@9
|
361 glpsol ... --bounds filename
|
alpar@9
|
362
|
alpar@9
|
363 in which case the solver writes results of the analysis to the
|
alpar@9
|
364 specified filename in plain text format. The corresponding API routine
|
alpar@9
|
365 is lpx_print_sens_bnds() .
|
alpar@9
|
366
|
alpar@9
|
367
|
alpar@9
|
368 Q. How do I determine which constraints are causing infeasibility?
|
alpar@9
|
369
|
alpar@9
|
370 A straightforward way to find such a set of constraints is to drop
|
alpar@9
|
371 constraints one at a time. If dropping a constraint results in a
|
alpar@9
|
372 solvable problem, pick it up and go on to the next constraint. After
|
alpar@9
|
373 applying phase 1 to an infeasible problem, all basic satisfied
|
alpar@9
|
374 constraints may be dropped.
|
alpar@9
|
375
|
alpar@9
|
376 If the problem has a feasible dual, then running the dual simplex
|
alpar@9
|
377 method is a more direct approach. After the last pivot, the nonbasic
|
alpar@9
|
378 constraints and one of the violated constraints will constitute a
|
alpar@9
|
379 minimal set. The GLPK simplex table routines will allow you to pick a
|
alpar@9
|
380 correct constraint from the violated ones.
|
alpar@9
|
381
|
alpar@9
|
382 Note that the GLPK pre-solver needs to be turned off for the preceding
|
alpar@9
|
383 technique to work, otherwise GLPK does not keep the basis of an
|
alpar@9
|
384 infeasible solution.
|
alpar@9
|
385
|
alpar@9
|
386 Also a more detailed methodology has been posted on the mail list
|
alpar@9
|
387 archive at
|
alpar@9
|
388 <http://mail.gnu.org/archive/html/help-glpk/2003-09/msg00017.html>.
|
alpar@9
|
389
|
alpar@9
|
390
|
alpar@9
|
391 Q. What is the difference between checks and constraints?
|
alpar@9
|
392
|
alpar@9
|
393 A. Check statements are intended to check that all data specified by
|
alpar@9
|
394 the user of the model are correct, mainly in the data section of a
|
alpar@9
|
395 MathProg model. For example, if some parameter means the number of
|
alpar@9
|
396 nodes in a network, it must be positive integer, that is just the
|
alpar@9
|
397 condition to be checked in the check statement (although in this case
|
alpar@9
|
398 such condition may be also checked directly in the parameter
|
alpar@9
|
399 statement). Note that check statements are performed when the
|
alpar@9
|
400 translator is generating the model, so they cannot include variables.
|
alpar@9
|
401
|
alpar@9
|
402 Constraints are conditions that are expressed in terms of variables and
|
alpar@9
|
403 resolved by the solver after the model has been completely generated.
|
alpar@9
|
404 If all data specified in the model are correct a priori, check
|
alpar@9
|
405 statements are not needed and can be omitted, while constraints are
|
alpar@9
|
406 essential components of the model and therefore cannot be omitted.
|
alpar@9
|
407
|
alpar@9
|
408
|
alpar@9
|
409 GLPK Integer Programming
|
alpar@9
|
410
|
alpar@9
|
411 Q. What is Integer Programming and how does it work?
|
alpar@9
|
412
|
alpar@9
|
413 A. Integer LP models are ones whose variables are constrained to take
|
alpar@9
|
414 integer or whole number (as opposed to fractional) values. It may not
|
alpar@9
|
415 be obvious that integer programming is a very much harder problem than
|
alpar@9
|
416 ordinary linear programming, but that is nonetheless the case, in both
|
alpar@9
|
417 theory and practice.
|
alpar@9
|
418
|
alpar@9
|
419
|
alpar@9
|
420 Q. What is the Integer Optimization Suite (IOS)?
|
alpar@9
|
421
|
alpar@9
|
422 A. IOS is a framework to implement implicit enumeration methods based
|
alpar@9
|
423 on LP relaxation (like branch-and-bound and branch-and-cut). Currently
|
alpar@9
|
424 IOS includes only basic features (the enumeration tree, API routines,
|
alpar@9
|
425 and the driver) and is not completely documented.
|
alpar@9
|
426
|
alpar@9
|
427
|
alpar@9
|
428 Q. I have just changed an LP to a MIP and now it doesn't work?
|
alpar@9
|
429
|
alpar@9
|
430 A. If you have an existing LP that is working and you change to an MIP
|
alpar@9
|
431 and receive a "lpx_integer: optimal solution of LP relaxation required"
|
alpar@9
|
432 204 (==LPX_E_FAULT) error, you probably have not called the LP solution
|
alpar@9
|
433 method lpx_simplex() before lpx_integer() . The MIP routines use the LP
|
alpar@9
|
434 solution as part of the MIP solution methodology.
|
alpar@9
|
435
|