1 | <?xml version="1.0" encoding="ISO-8859-1"?> |
---|
2 | <qandaentry> |
---|
3 | <question> |
---|
4 | <para> |
---|
5 | What is <ulink url="http://www.coin-or.org/Clp/">CLP</ulink>? |
---|
6 | </para> |
---|
7 | </question> |
---|
8 | <answer> |
---|
9 | <para> |
---|
10 | (DN 08/27/04) The <ulink url="http://www.coin-or.org/">COIN-OR</ulink> LP code |
---|
11 | is designed to be a high quality Simplex code provided under the terms of the |
---|
12 | <ulink url="http://opensource.org/licenses/cpl.php">Common Public License</ulink>. |
---|
13 | CLP is written in C++, and is primarily intended to be used as a callable |
---|
14 | library (though a rudimentary stand-alone executable exists). |
---|
15 | The first release was version .90. The current release is version 1.00.2. |
---|
16 | </para> |
---|
17 | </answer> |
---|
18 | </qandaentry> |
---|
19 | <qandaentry> |
---|
20 | <question> |
---|
21 | <para> |
---|
22 | What are some of the features of CLP? |
---|
23 | </para> |
---|
24 | </question> |
---|
25 | <answer> |
---|
26 | <para> |
---|
27 | (DN 08/27/04) CLP includes primal and dual Simplex solvers. Both dual and primal algorithms |
---|
28 | can use matrix storage methods provided by the user (0-1 and network matrices |
---|
29 | are already supported in addition to the default sparse matrix). The dual algorithm |
---|
30 | has Dantzig and Steepest edge row pivot choices; new ones may be provided by |
---|
31 | the user. The same is true for the column pivot choice of the primal algorithm. |
---|
32 | The primal can also use a non linear cost which should work for piecewise |
---|
33 | linear convex functions. CLP also includes a barrier method for solving LPs. |
---|
34 | </para> |
---|
35 | </answer> |
---|
36 | </qandaentry> |
---|
37 | <qandaentry> |
---|
38 | <question> |
---|
39 | <para> |
---|
40 | How do I obtain and install CLP? |
---|
41 | </para> |
---|
42 | </question> |
---|
43 | <answer> |
---|
44 | <para> |
---|
45 | (DN 08/27/04) Please see the |
---|
46 | <ulink url="http://www.coin-or.org/faqs.html">COIN-OR FAQ</ulink> |
---|
47 | for details on how to |
---|
48 | <ulink url="http://www.coin-or.org/faqs.html#ObtainSrcCode">obtain</ulink> |
---|
49 | and |
---|
50 | <ulink url="http://www.coin-or.org/faqs.html#BuildCode">install</ulink> |
---|
51 | COIN-OR modules. |
---|
52 | </para> |
---|
53 | </answer> |
---|
54 | </qandaentry> |
---|
55 | <qandaentry> |
---|
56 | <question> |
---|
57 | <para> |
---|
58 | Is CLP reliable? |
---|
59 | </para> |
---|
60 | </question> |
---|
61 | <answer> |
---|
62 | <para> |
---|
63 | (DN 09/07/04) CLP has been tested on many problems of up to 1.5 million |
---|
64 | constraints and has shown itself as reliable as OSL. It is also being tested |
---|
65 | in the context of developing |
---|
66 | <ulink url="http://www.coin-or.org/faqs.html#CBC">CBC</ulink> |
---|
67 | ("Coin Branch and Cut", which is used to solve integer |
---|
68 | programs); it is now considered reliable enough to be at version 1.0. |
---|
69 | </para> |
---|
70 | </answer> |
---|
71 | </qandaentry> |
---|
72 | <qandaentry> |
---|
73 | <question> |
---|
74 | <para> |
---|
75 | On which platforms does CLP run? |
---|
76 | </para> |
---|
77 | </question> |
---|
78 | <answer> |
---|
79 | <para> |
---|
80 | (DN 08/27/04) CLP compiles and has been tested (to varying degrees) on the following |
---|
81 | platforms: |
---|
82 | </para> |
---|
83 | <itemizedlist> |
---|
84 | <listitem> |
---|
85 | <para> |
---|
86 | Linux using g++ version 3.1.1 (or later) |
---|
87 | </para> |
---|
88 | </listitem> |
---|
89 | <listitem> |
---|
90 | <para> |
---|
91 | Windows using Microsoft Visual C++ 6 |
---|
92 | </para> |
---|
93 | </listitem> |
---|
94 | <listitem> |
---|
95 | <para> |
---|
96 | Windows using cygwin |
---|
97 | </para> |
---|
98 | </listitem> |
---|
99 | <listitem> |
---|
100 | <para> |
---|
101 | AIX using xIC (not supported in the current Makefile) |
---|
102 | </para> |
---|
103 | </listitem> |
---|
104 | </itemizedlist> |
---|
105 | </answer> |
---|
106 | </qandaentry> |
---|
107 | <qandaentry> |
---|
108 | <question> |
---|
109 | <para> |
---|
110 | Is there any documentation for CLP? |
---|
111 | </para> |
---|
112 | </question> |
---|
113 | <answer> |
---|
114 | <para> |
---|
115 | (DN 09/16/04) An early release of a User Guide is available on the |
---|
116 | <ulink url="http://www.coin-or.org/Clp/documentation.html">CLP documentation webpage</ulink>. |
---|
117 | Also available is a list of |
---|
118 | <ulink url="http://www.coin-or.org/Doxygen/Clp/">CLP class descriptions</ulink> generated |
---|
119 | by <ulink url="http://www.doxygen.org">Doxygen</ulink>. |
---|
120 | </para> |
---|
121 | </answer> |
---|
122 | </qandaentry> |
---|
123 | <qandaentry> |
---|
124 | <question> |
---|
125 | <para> |
---|
126 | Is CLP as fast as OSL? |
---|
127 | </para> |
---|
128 | </question> |
---|
129 | <answer> |
---|
130 | <para> |
---|
131 | (DN 08/27/04) CLP uses sparse matrix techniques designed for very large |
---|
132 | problems. The design criteria were for it not to be too slow. Some speed |
---|
133 | has been sacrificed to make the code less opaque OSL (not difficult!). |
---|
134 | </para> |
---|
135 | </answer> |
---|
136 | </qandaentry> |
---|
137 | <qandaentry> |
---|
138 | <question> |
---|
139 | <para> |
---|
140 | When will version 1.0 of CLP be available? |
---|
141 | </para> |
---|
142 | </question> |
---|
143 | <answer> |
---|
144 | <para> |
---|
145 | (DN 08/27/04) Version 1.0 was released in time for the 2004 |
---|
146 | <ulink url="http://www.informs.org">INFORMS</ulink> |
---|
147 | <ulink url="http://www.informs.org/Conf/Denver2004/">Annual Meeting</ulink> |
---|
148 | (24-27 October, 2004). |
---|
149 | </para> |
---|
150 | </answer> |
---|
151 | </qandaentry> |
---|
152 | <qandaentry> |
---|
153 | <question> |
---|
154 | <para> |
---|
155 | The barrier method sounds interesting, what are some of the details? |
---|
156 | </para> |
---|
157 | </question> |
---|
158 | <answer> |
---|
159 | <para> |
---|
160 | (DN 08/30/04) The CLP barrier method solves convex QPs as well as LPs. In |
---|
161 | general, a barrier method requires implementation of the algorithm, as |
---|
162 | well as a fast Cholesky factorization. CLP provides the algorithm, and is |
---|
163 | expected to have a reasonable factorization implementation by the release of |
---|
164 | CLP version 1.0. However, the sparse factorization requires a good ordering |
---|
165 | algorithm, which the user is expected to provide (perhaps a better |
---|
166 | factorization code as well). |
---|
167 | </para> |
---|
168 | </answer> |
---|
169 | </qandaentry> |
---|
170 | <qandaentry> |
---|
171 | <question> |
---|
172 | <para> |
---|
173 | Which Cholesky factorizations codes are supported by CLP's barrier method? |
---|
174 | </para> |
---|
175 | </question> |
---|
176 | <answer> |
---|
177 | <para> |
---|
178 | (DN 09/16/04) The Cholesky interface is flexible enough so that a variety of Cholesky |
---|
179 | ordering and factorization codes can be used. Interfaces are provided to each |
---|
180 | of the following: |
---|
181 | <itemizedlist> |
---|
182 | <listitem> |
---|
183 | <para> |
---|
184 | Anshul Gupta's WSSMP parallel enabled ordering and factorization code |
---|
185 | </para> |
---|
186 | </listitem> |
---|
187 | <listitem> |
---|
188 | <para> |
---|
189 | Sivan Toledo's TAUCS parallel enabled factorization code (the package includes |
---|
190 | third party ordering codes) |
---|
191 | </para> |
---|
192 | </listitem> |
---|
193 | <listitem> |
---|
194 | <para> |
---|
195 | University of Florida's Approximate Minimum Degree (AMD) ordering code (the |
---|
196 | CLP native factorization code is used with this ordering code) |
---|
197 | </para> |
---|
198 | </listitem> |
---|
199 | <listitem> |
---|
200 | <para> |
---|
201 | CLP native code: very weak ordering but competitive nonparallel factorization |
---|
202 | </para> |
---|
203 | </listitem> |
---|
204 | <listitem> |
---|
205 | <para> |
---|
206 | Fast dense factorization |
---|
207 | </para> |
---|
208 | </listitem> |
---|
209 | </itemizedlist> |
---|
210 | </para> |
---|
211 | </answer> |
---|
212 | </qandaentry> |
---|
213 | <qandaentry> |
---|
214 | <question> |
---|
215 | <para> |
---|
216 | When will CLP have a good native ordering? |
---|
217 | </para> |
---|
218 | </question> |
---|
219 | <answer> |
---|
220 | <para> |
---|
221 | (DN 09/16/04) The best outcome would be to have an existing ordering code available as part |
---|
222 | of the COIN distribution under the CPL. However, if this is not possible, the |
---|
223 | native ordering will be made respectable. |
---|
224 | </para> |
---|
225 | </answer> |
---|
226 | </qandaentry> |
---|
227 | <qandaentry> |
---|
228 | <question> |
---|
229 | <para> |
---|
230 | Is the barrier code as mature as the simplex code? |
---|
231 | </para> |
---|
232 | </question> |
---|
233 | <answer> |
---|
234 | <para> |
---|
235 | (DN 09/16/04) The simplex code has been exposed to user testing for more than a year and |
---|
236 | and the principal author, John Forrest, knows more about simplex algorithms |
---|
237 | than interior point algorithms, so the answer is "no". However, it |
---|
238 | performs well on test sets and seems to be more reliable than some |
---|
239 | commercially available codes (including OSL). |
---|
240 | </para> |
---|
241 | </answer> |
---|
242 | </qandaentry> |
---|
243 | <qandaentry> |
---|
244 | <question> |
---|
245 | <para> |
---|
246 | Which algorithm should I use for quadratic programming and should I keep an |
---|
247 | eye open for any issues? |
---|
248 | </para> |
---|
249 | </question> |
---|
250 | <answer> |
---|
251 | <para> |
---|
252 | (DN 09/16/04) The interior point algorithm for quadratic programming is much more elegant |
---|
253 | and normally much faster than the quadratic simplex code. Caution is |
---|
254 | suggested with the presolve as not all bugs have been found and squashed when |
---|
255 | a quadratic objective is used. One may wish to switch off the crossover to a |
---|
256 | basic feasible solution as the simplex code can be slow. The sequential |
---|
257 | linear code is useful as a "crash" to the simplex code; its |
---|
258 | convergence is poor but, say, 100 iterations could set up the problem well for |
---|
259 | the simplex code. |
---|
260 | </para> |
---|
261 | </answer> |
---|
262 | </qandaentry> |
---|
263 | <qandaentry> |
---|
264 | <question> |
---|
265 | <para> |
---|
266 | What can the community do to help? |
---|
267 | </para> |
---|
268 | </question> |
---|
269 | <answer> |
---|
270 | <para> |
---|
271 | (DN 09/09/04) A lot! A good first step would be to join the CLP |
---|
272 | <ulink url="http://www.coin-or.org/mail.html">mailing lists</ulink>. Some |
---|
273 | other possibilities: |
---|
274 | </para> |
---|
275 | <itemizedlist> |
---|
276 | <listitem> |
---|
277 | <para> |
---|
278 | Comment on the design |
---|
279 | </para> |
---|
280 | </listitem> |
---|
281 | <listitem> |
---|
282 | <para> |
---|
283 | Break the code, or better yet, mend it. |
---|
284 | </para> |
---|
285 | </listitem> |
---|
286 | <listitem> |
---|
287 | <para> |
---|
288 | Add non-English language support in your own favo(u)rite language. |
---|
289 | </para> |
---|
290 | </listitem> |
---|
291 | <listitem> |
---|
292 | <para> |
---|
293 | Improve the CLP executable. In particular it would be nice to be able to link |
---|
294 | the executable's online help system with the existing CLP Samples (e.g. entering |
---|
295 | <userinput>presol???</userinput> would give the user references to all |
---|
296 | CLP Sample files which use presolve). |
---|
297 | </para> |
---|
298 | </listitem> |
---|
299 | <listitem> |
---|
300 | <para> |
---|
301 | Implement a dual Simplex method for QPs (quadratic programs) |
---|
302 | </para> |
---|
303 | </listitem> |
---|
304 | <listitem> |
---|
305 | <para> |
---|
306 | Implement a parametric Simplex method |
---|
307 | </para> |
---|
308 | </listitem> |
---|
309 | <listitem> |
---|
310 | <para> |
---|
311 | Implement a true network Simplex method (network matrix and factorization |
---|
312 | are already in place, but the method is not) |
---|
313 | </para> |
---|
314 | </listitem> |
---|
315 | <listitem> |
---|
316 | <para> |
---|
317 | Fill the holes in the barrier method mentioned above. |
---|
318 | </para> |
---|
319 | </listitem> |
---|
320 | </itemizedlist> |
---|
321 | </answer> |
---|
322 | </qandaentry> |
---|