annotate liboctave/QPSOL.cc @ 289:c23f50e61c58

[project @ 1994-01-13 06:25:58 by jwe]
author jwe
date Thu, 13 Jan 1994 06:26:54 +0000
parents 780cbbc57b7c
children 3c23b8ea9099
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
1 // QPSOL.cc -*- C++ -*-
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
2 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
4 Copyright (C) 1992, 1993 John W. Eaton
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
5
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
7
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
11 later version.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
12
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
16 for more details.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
17
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, write to the Free
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
21
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
22 */
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
23
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
24 #ifdef HAVE_CONFIG_H
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
25 #include "config.h"
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
26 #endif
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
27
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
28 #include <math.h>
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
29 #include <float.h>
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
30
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
31 #ifndef QPSOL_MISSING
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
32
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
33 #include "QPSOL.h"
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
34 #include "f77-uscore.h"
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
35
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
36 extern "C"
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
37 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
38 int F77_FCN (qpsol) (int*, int*, int*, int*, int*, int*, int*, int*,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
39 double*, double*, double*, double*, double*,
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
40 double*, double*,
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
41 int (*)(int*, int*, int*, int*, double*,
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
42 double*, double*),
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
43 int*, int*, int*, int*, double*, int*, int*,
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
44 double*, double*, int*, int*, double*, int*);
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
45
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
46 int F77_FCN (dgemv) (const char*, const int*, const int*,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
47 const double*, const double*, const int*,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
48 const double*, const int*, const double*,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
49 double*, const int*, long);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
50 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
51
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
52 int
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
53 qphess (int *pn, int *pnrowh, int *ncolh, int *pcol, double *hess,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
54 double *x, double *hx)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
55 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
56 int n = *pn;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
57 int nrowh = *pnrowh;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
58 int jthcol = *pcol;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
59
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
60 if (jthcol > 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
61 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
62 int hp = (jthcol - 1) * nrowh;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
63 for (int i = 0; i < n; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
64 hx[i] = hess[hp+i];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
65 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
66 else
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
67 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
68 char trans = 'N';
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
69 double alpha = 1.0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
70 double beta = 0.0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
71 int i_one = 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
72
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
73 F77_FCN (dgemv) (&trans, pn, pn, &alpha, hess, pn, x, &i_one,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
74 &beta, hx, &i_one, 1L);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
75 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
76
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
77 return 0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
78 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
79
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
80 Vector
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
81 QPSOL::minimize (double& objf, int& inform, Vector& lambda)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
82 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
83 int i;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
84
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
85 int n = x.capacity ();
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
86
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
87 int itmax = (iteration_limit () < 0) ? 50 * n : iteration_limit ();
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
88 int msglvl = print_level ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
89 int nclin = lc.size ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
90 int nctotl = nclin + n;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
91
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
92 double bigbnd = infinite_bound ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
93
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
94 double dummy;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
95 double *pa = &dummy;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
96 Matrix clin;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
97 if (nclin > 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
98 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
99 clin = lc.constraint_matrix ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
100 pa = clin.fortran_vec ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
101 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
102
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
103 double *pbl = new double [nctotl];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
104 double *pbu = new double [nctotl];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
105
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
106 if (bnds.size () > 0)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
107 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
108 for (i = 0; i < n; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
109 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
110 pbl[i] = bnds.lower_bound (i);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
111 pbu[i] = bnds.upper_bound (i);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
112 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
113 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
114 else
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
115 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
116 for (i = 0; i < n; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
117 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
118 pbl[i] = -bigbnd;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
119 pbu[i] = bigbnd;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
120 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
121 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
122
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
123 for (i = 0; i < nclin; i++)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
124 {
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
125 pbl[i+n] = lc.lower_bound (i);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
126 pbu[i+n] = lc.upper_bound (i);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
127 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
128
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
129 double *pc = c.fortran_vec ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
130
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
131 double *featol = new double [nctotl];
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
132 double tmp = feasibility_tolerance ();
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
133 for (i = 0; i < nctotl; i++)
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
134 featol[i] = tmp;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
135
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
136 double *ph = H.fortran_vec ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
137
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
138 int cold = 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
139 int lp = 0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
140 int orthog = 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
141
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
142 int *istate = new int [nctotl];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
143
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
144 double *px = x.fortran_vec ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
145
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
146 int iter = 0;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
147 lambda.resize (nctotl);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
148 double *pclambda = lambda.fortran_vec ();
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
149
133
f8e230ec7745 [project @ 1993-09-28 21:14:00 by jwe]
jwe
parents: 3
diff changeset
150 int leniw = 2 * n;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
151
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
152 int lenw;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
153 int ncon = nclin > 1 ? nclin : 1;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
154 if (lp == 0 || nclin >= n)
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
155 lenw = 2*n*(n + 2) + nclin + 2*ncon;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
156 else
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
157 lenw = 2*ncon*(1 + ncon) + 4*n + nclin;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
158
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
159 int *iw = new int [leniw];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
160 double *w = new double [lenw];
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
161
133
f8e230ec7745 [project @ 1993-09-28 21:14:00 by jwe]
jwe
parents: 3
diff changeset
162 F77_FCN (qpsol) (&itmax, &msglvl, &n, &nclin, &nctotl, &ncon, &n,
f8e230ec7745 [project @ 1993-09-28 21:14:00 by jwe]
jwe
parents: 3
diff changeset
163 &n, &bigbnd, pa, pbl, pbu, pc, featol, ph, qphess,
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
164 &cold, &lp, &orthog, istate, px, &inform, &iter,
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
165 &objf, pclambda, iw, &leniw, w, &lenw);
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
166
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
167 delete [] featol;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
168 delete [] istate;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
169 delete [] iw;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
170 delete [] w;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
171
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
172 return x;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
173 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
174
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
175 QPSOL_options::QPSOL_options (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
176 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
177 init ();
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
178 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
179
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
180 QPSOL_options::QPSOL_options (const QPSOL_options& opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
181 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
182 copy (opt);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
183 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
184
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
185 QPSOL_options&
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
186 QPSOL_options::operator = (const QPSOL_options& opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
187 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
188 if (this != &opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
189 copy (opt);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
190
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
191 return *this;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
192 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
193
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
194 QPSOL_options::~QPSOL_options (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
195 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
196 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
197
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
198 void
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
199 QPSOL_options::init (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
200 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
201 x_feasibility_tolerance = sqrt (DBL_EPSILON);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
202 x_infinite_bound = 1.0e+30;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
203 x_iteration_limit = -1;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
204 x_print_level = 0;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
205 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
206
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
207 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
208 QPSOL_options::copy (const QPSOL_options& opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
209 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
210 x_feasibility_tolerance = opt.x_feasibility_tolerance;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
211 x_infinite_bound = opt.x_infinite_bound;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
212 x_iteration_limit = opt.x_iteration_limit;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
213 x_print_level = opt.x_print_level;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
214 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
215
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
216 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
217 QPSOL_options::set_default_options (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
218 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
219 init ();
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
220 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
221
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
222 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
223 QPSOL_options::set_feasibility_tolerance (double val)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
224 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
225 x_feasibility_tolerance = (val > 0.0) ? val : sqrt (DBL_EPSILON);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
226 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
227
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
228 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
229 QPSOL_options::set_infinite_bound (double val)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
230 {
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
231 x_infinite_bound = (val > 0.0) ? val : 1.0e+30;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
232 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
233
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
234 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
235 QPSOL_options::set_iteration_limit (int val)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
236 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
237 x_iteration_limit = (val > 0) ? val : -1;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
238 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
239
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
240 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
241 QPSOL_options::set_print_level (int val)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
242 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
243 x_print_level = (val >= 0) ? val : 0;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
244 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
245
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
246 double
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
247 QPSOL_options::feasibility_tolerance (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
248 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
249 return x_feasibility_tolerance;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
250 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
251
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
252 double
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
253 QPSOL_options::infinite_bound (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
254 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
255 return x_infinite_bound;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
256 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
257
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
258 int
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
259 QPSOL_options::iteration_limit (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
260 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
261 return x_iteration_limit;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
262 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
263
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
264 int
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
265 QPSOL_options::print_level (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
266 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
267 return x_print_level;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
268 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
269
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
270 #endif /* QPSOL_MISSING */
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
271
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
272 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
273 ;;; Local Variables: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
274 ;;; mode: C++ ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
275 ;;; page-delimiter: "^/\\*" ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
276 ;;; End: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
277 */