/[ascend]/branches/pallav/solvers/makemps/slv6.h
ViewVC logotype

Contents of /branches/pallav/solvers/makemps/slv6.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2822 - (show annotations) (download) (as text)
Tue Feb 17 06:36:00 2015 UTC (8 years, 9 months ago) by jpye
File MIME type: text/x-chdr
File size: 8729 byte(s)
restoring branches...

1 /*
2 * MPS: Ascend MPS file generator
3 * by Craig Schmidt
4 * Created: 2/11/95
5 * Version: $Revision: 1.13 $
6 * Version control file: $RCSfile: slv6.h,v $
7 * Date last modified: $Date: 1997/07/18 12:16:23 $
8 * Last modified by: $Author: mthomas $
9 *
10 * This file is part of the SLV solver.
11 *
12 * Copyright (C) 1990 Karl Michael Westerberg
13 * Copyright (C) 1993 Joseph Zaher
14 * Copyright (C) 1994 Joseph Zaher, Benjamin Andrew Allan
15 * Copyright (C) 1995 Craig Schmidt
16 *
17 * The SLV solver is free software; you can redistribute
18 * it and/or modify it under the terms of the GNU General Public License as
19 * published by the Free Software Foundation; either version 2 of the
20 * License, or (at your option) any later version.
21 *
22 * The SLV solver is distributed in hope that it will be
23 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25 * General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program. If not, see <http://www.gnu.org/licenses/>.
29 */
30
31 /** @file
32 * makeMPS solver registration module.
33 * <pre>
34 * Contents: makeMPS module
35 *
36 * Authors: Karl Westerberg
37 * Joseph Zaher
38 *
39 * Dates: 06/90 - original version
40 * 04/91 - fine tuned modified marquadt computation,
41 * provided minor iterations for step generation
42 * within each major iteration of jacobian
43 * updates
44 * 06/93 - eliminated pointer sublists being generated
45 * at the beginning of each block
46 * 04/94 - extended scope to equality constrained
47 * optimization.
48 *
49 * Description: This file is created by make_slv_header, so don't
50 * modify it yourself. All functions defined in this
51 * header have identical protocols to the corresponding
52 * functions in slv.h except that slv_system_t ==>
53 * slv6_system_t and slv6_eligible_solver() only takes one
54 * parameter: the system. Note also that the select
55 * solver functions don't exist.
56 * </pre>
57 * @todo makeMPS (solver/slv6.c) is out-of-date and will not compile.
58 * Should be either fixed or archived.
59 * @todo Restructure solver/slv6 & mps so can remove declarations in
60 * solver/slv6.h out of header. Currently needed by mps.[ch].
61 */
62
63 #ifndef ASC_SLV6_H
64 #define ASC_SLV6_H
65
66 #include <ascend/solver/solver.h>
67 #include <ascend/system/slv_client.h>
68
69 #include "mps_types.h"
70
71 typedef struct slv6_system_structure *slv6_system_t;
72
73 int slv6_register(SlvFunctionsT *sft);
74 /**<
75 * Registration function for the ASCEND makeMPS solver.
76 * This is the function that tells the system about the makeMPS solver.
77 * Our index is not necessarily going to be 6. That everything here is
78 * named slv6* is just a historical event.
79 *
80 * @param sff SlvFunctionsT to receive the solver registration info.
81 * @return Returns non-zero on error (e.g. f == NULL), zero if all is ok.
82 */
83
84 /* WOULD LIKE TO REMOVE EVERYTHING BELOW THIS POINT */
85 /* THIS DETAIL SHOULD BE IN SOURCE FILE, BUT IS NEEDED BY mps.[ch] */
86 /*
87 # if 0
88 */
89 #define slv6_solver_name "makeMPS" /**< Solver's name. don't mess with the caps!*/
90 #define slv6_solver_number 6 /**< Solver's number */
91
92 extern boolean free_inc_var_filter(struct var_variable *var);
93 /**<
94 *** I've been calling this particular var filter a lot ,
95 *** so I decided to make it a subroutine. Returns true if
96 *** var is not fixed and incident in something.
97 **/
98
99 #if 0
100 extern void slv6_set_var_list();
101 extern struct var_variable **slv6_get_var_list();
102 extern void slv6_set_bnd_list();
103 extern void slv6_set_rel_list();
104 extern struct rel_relation **slv6_get_rel_list();
105 extern void slv6_set_extrel_list();
106 extern struct ExtRelCache **slv6_get_extrel_list();
107 extern int slv6_count_vars();
108 extern int slv6_count_bnds();
109 extern int slv6_count_rels();
110 extern void slv6_set_obj_relation();
111 extern struct rel_relation *slv6_get_obj_relation();
112 extern boolean slv6_eligible_solver();
113 extern void slv6_get_parameters();
114 extern void slv6_set_parameters();
115 extern void slv6_get_status();
116 //extern linsol_system_t slv6_get_linsol_sys();
117 extern void slv6_dump_internals();
118 extern void slv6_presolve();
119 extern boolean slv6_change_basis();
120 extern void slv6_resolve();
121 extern void slv6_iterate();
122 extern void slv6_solve();
123 #endif
124
125 /*********************************************************************
126 Craig Schmidt 2/15/95
127
128 This section describes the parameters, subparameters,
129 and status flags as used by the solver.
130
131 *** See slv6_create() for more specific information ***
132 *** on parameters and status flags ***
133
134 *** Note: the parameters can be changed by the user ***
135 *** with the slv6_set_parameters routine ***
136
137
138 Use of subparameters in iarray and rarray:
139
140 iarray[SP6_NONLIN] 0->require linear model,
141 1->solve linearization at current pt
142 iarray[SP6_RELAXED] 0->solve regular problem
143 1->solve LP relaxation of problem
144 iarray[SP6_NONNEG] 0->solver handles free vars
145 1->solver requires that all vars have LB=0, UB=infinity, no FR or MI
146 iarray[SP6_OBJ] 0->solver assumes minimization, do nothing special
147 1->solver assumes maximization, swap obj coeff for min problems
148 2->solver support SCICONIC style MINIMIZE
149 3->solver supports QOMILP style MAX/MIN in names section
150 iarray[SP6_BINARY] 0->solver supports binary variables using INTORG
151 1->solver supports binary variables with BV option in BOUNDS
152 2->no support
153 iarray[SP6_INTEGER] 0->solver defines integer vars using INTORG
154 1->solver defines integer vars using UI in BOUNDS
155 2->no support for integer vars
156 iarray[SP6_SEMI] 0->no support
157 1->solver supports SCICONIC style semi-continuous vars
158 iarray[SP6_SOS1] 0->no support
159 1->solver supports SOS1, i.e. sum(Xi) = 1
160 iarray[SP6_SOS2] 0->no support
161 1->solver supports SOS2, i.e. sum(xi) <=2, with 2 nonzeros being adjacent
162 Note: this parameter currently ignored, no support offered for type 2
163 iarray[SP6_SOS3] 0->no support
164 1->solver supports SOS3, i.e. sum(xi) <= 1
165 iarray[SP6_BO] 0->no support
166 1->solver supports QOMILP style BO cutoff bound in names section
167 Note: value of bound is in rarray[SP6_BNDVAL]
168 iarray[SP6_EPS] 0->no support
169 1->solver supports QOMILP style EPS termination criterion
170 Note: value of bound is in rarray[SP6_EPSVAL]
171
172 rarray[SP6_BOVAL] value of QOMILP style BO cutoff bound in names section
173 Note: Ignored if iarray[SP6_BO]=0
174 rarray[SP6_EPSVAL] value of QOMILP style EPS termination criterion
175 Note: Ignored if iarray[SP6_EPS]=0
176 rarray[SP6_PINF] any UB >= pinf is set to + infinity
177 rarray[SP6_MINF] any LB <= minf is set to - infinity
178
179 carray[SP6_FILENAME] pointer to filename to create
180
181 *********************************************************************/
182 #if 0
183 #define slv6_IA_SIZE 12
184 #define slv6_RA_SIZE 4
185 #define slv6_CA_SIZE 1
186 #define slv6_VA_SIZE 0
187
188 /**< subscripts for ia */
189 #define SP6_NONLIN 0
190 #define SP6_RELAXED 1
191 #define SP6_NONNEG 2
192 #define SP6_OBJ 3
193 #define SP6_BINARY 4
194 #define SP6_INTEGER 5
195 #define SP6_SEMI 6
196 #define SP6_SOS1 7
197 #define SP6_SOS2 8
198 #define SP6_SOS3 9
199 #define SP6_BO 10
200 #define SP6_EPS 11
201
202 /**< subscripts for ra */
203 #define SP6_BOVAL 0
204 #define SP6_EPSVAL 1
205 #define SP6_PINF 2
206 #define SP6_MINF 3
207
208 /**< subscripts for ca */
209 #define SP6_FILENAME 0
210 #endif
211
212
213 enum{
214 /** ASCEND OPTIONS */
215 ASCEND_PARAM_SAFEEVAL = 0
216 /**< integer-valued */
217 , SP6_NONLIN
218 , SP6_RELAXED
219 , SP6_NONNEG
220 , SP6_OBJ
221 , SP6_BINARY
222 , SP6_INTEGER
223 , SP6_SEMI
224 , SP6_SOS1
225 , SP6_SOS2
226 , SP6_SOS3
227 , SP6_BO
228 , SP6_EPS
229 /* real-valued */
230 , SP6_BOVAL
231 , SP6_EPSVAL
232 , SP6_PINF
233 , SP6_MINF
234 /* string-valued */
235 , SP6_FILENAME
236 , SP6_PARAMS
237 };
238
239 /**< define another token to go with
240 rel_TOK_less, rel_TOK_equal, and rel_TOK_greater,
241 defined in rel.h */
242 #define rel_TOK_nonincident 00
243
244 #endif /* ASC_SLV6_H */
245

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22