annotate liboctave/QPSOL.cc @ 1192:b6360f2d4fa6

[project @ 1995-03-30 21:38:35 by jwe]
author jwe
date Thu, 30 Mar 1995 21:38:35 +0000
parents 18933dbd5e43
children 97eac19837dc
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
1011
18933dbd5e43 [project @ 1995-01-04 04:18:15 by jwe]
jwe
parents: 882
diff changeset
4 Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
3
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
1192
b6360f2d4fa6 [project @ 1995-03-30 21:38:35 by jwe]
jwe
parents: 1011
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
656
d285f62d8638 [project @ 1994-08-29 04:32:55 by jwe]
jwe
parents: 465
diff changeset
167 delete [] pbl;
d285f62d8638 [project @ 1994-08-29 04:32:55 by jwe]
jwe
parents: 465
diff changeset
168 delete [] pbu;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
169 delete [] featol;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
170 delete [] istate;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
171 delete [] iw;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
172 delete [] w;
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 return x;
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
175 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
176
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
177 QPSOL_options::QPSOL_options (void)
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 init ();
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
180 }
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 QPSOL_options::QPSOL_options (const QPSOL_options& 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 copy (opt);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
185 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
186
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
187 QPSOL_options&
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
188 QPSOL_options::operator = (const QPSOL_options& opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
189 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
190 if (this != &opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
191 copy (opt);
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 return *this;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
194 }
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 QPSOL_options::~QPSOL_options (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
197 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
198 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
199
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
200 void
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
201 QPSOL_options::init (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
202 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
203 x_feasibility_tolerance = sqrt (DBL_EPSILON);
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
204 x_infinite_bound = 1.0e+30;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
205 x_iteration_limit = -1;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
206 x_print_level = 0;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
207 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
208
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
209 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
210 QPSOL_options::copy (const QPSOL_options& opt)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
211 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
212 x_feasibility_tolerance = opt.x_feasibility_tolerance;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
213 x_infinite_bound = opt.x_infinite_bound;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
214 x_iteration_limit = opt.x_iteration_limit;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
215 x_print_level = opt.x_print_level;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
216 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
217
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
218 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
219 QPSOL_options::set_default_options (void)
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 init ();
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
222 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
223
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
224 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
225 QPSOL_options::set_feasibility_tolerance (double val)
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 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
228 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
229
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
230 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
231 QPSOL_options::set_infinite_bound (double val)
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
232 {
289
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
233 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
234 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
235
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
236 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
237 QPSOL_options::set_iteration_limit (int val)
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 x_iteration_limit = (val > 0) ? val : -1;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
240 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
241
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
242 void
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
243 QPSOL_options::set_print_level (int val)
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 x_print_level = (val >= 0) ? val : 0;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
246 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
247
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
248 double
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
249 QPSOL_options::feasibility_tolerance (void)
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 return x_feasibility_tolerance;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
252 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
253
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
254 double
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
255 QPSOL_options::infinite_bound (void)
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 return x_infinite_bound;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
258 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
259
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
260 int
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
261 QPSOL_options::iteration_limit (void)
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 return x_iteration_limit;
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
264 }
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
265
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
266 int
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
267 QPSOL_options::print_level (void)
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
268 {
c23f50e61c58 [project @ 1994-01-13 06:25:58 by jwe]
jwe
parents: 238
diff changeset
269 return x_print_level;
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
270 }
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
271
238
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
272 #endif /* QPSOL_MISSING */
780cbbc57b7c [project @ 1993-11-30 20:23:04 by jwe]
jwe
parents: 133
diff changeset
273
3
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
274 /*
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
275 ;;; Local Variables: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
276 ;;; mode: C++ ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
277 ;;; page-delimiter: "^/\\*" ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
278 ;;; End: ***
9a4c07481e61 [project @ 1993-08-08 01:20:23 by jwe]
jwe
parents:
diff changeset
279 */