comparison m-toolbox/html_help/help/ug/ssm_modify_content.html @ 0:f0afece42f48

Import.
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Wed, 23 Nov 2011 19:22:13 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:f0afece42f48
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <HEAD>
4 <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
5 <TITLE></TITLE>
6 <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.1 (Win32)">
7 <META NAME="CREATED" CONTENT="0;0">
8 <META NAME="CHANGEDBY" CONTENT="Adrien G">
9 <META NAME="CHANGED" CONTENT="20090828;15564200">
10 </HEAD>
11 <BODY LANG="en-US" DIR="LTR">
12 <P>Built-in models enable to build fast predefined models to use
13 later in simulations.
14 </P>
15 <H2>Modifying using the setter functions</H2>
16 <P><FONT COLOR="#000000">It is possible to set the content of the
17 fields &ldquo;input&rdquo;, &ldquo;output&rdquo;, &ldquo;states&rdquo;,
18 as well as the field &ldquo;params&rdquo;.</FONT></P>
19 <P><FONT COLOR="#000000">Here is a simple model</FONT></P>
20 <DIV CLASS="fragment"><PRE><FONT COLOR="#000000">&gt;&gt; name = </FONT><FONT COLOR="#a020f0">'sys'</FONT><FONT COLOR="#000000">;</FONT>
21 &gt;&gt; timestep = 0;
22 &gt;&gt; amats = cell(3,3);
23 &gt;&gt; bmats = cell(3,3);
24 &gt;&gt; cmats = cell(3,3);
25 &gt;&gt; dmats = cell(3,3);
26 <FONT COLOR="#000000">&gt;&gt; amats{1,1} = -(sym(</FONT><FONT COLOR="#a020f0">'OMEGA'</FONT><FONT COLOR="#000000">));</FONT>
27 &gt;&gt; amats{2,2} = -2;
28 &gt;&gt; amats{3,3} = [0 1 ; -0.05 -0.01];
29 &gt;&gt; amats{3,1} = [-1;-3];
30 &gt;&gt; bmats{1,1} = 1;
31 &gt;&gt; bmats{2,2} = 2;
32 &gt;&gt; bmats{3,3} = 3*eye(2);
33 &gt;&gt; cmats{1,1} = 1;
34 &gt;&gt; cmats{2,2} = 1;
35 &gt;&gt; cmats{3,3} = eye(2);
36 &gt;&gt; dmats{1,3} = [6 6];
37 &gt;&gt; dmats{2,1} = 6;
38 &gt;&gt; dmats{3,2} = [6;6];
39 <FONT COLOR="#000000">&gt;&gt; sys = ssm(plist( </FONT><FONT COLOR="#0000ff">...</FONT>
40 <FONT COLOR="#a020f0">'amats'</FONT><FONT COLOR="#000000">,amats, </FONT><FONT COLOR="#a020f0">'bmats'</FONT><FONT COLOR="#000000">,bmats, </FONT><FONT COLOR="#a020f0">'cmats'</FONT><FONT COLOR="#000000">,cmats, </FONT><FONT COLOR="#a020f0">'dmats'</FONT><FONT COLOR="#000000">,dmats, </FONT><FONT COLOR="#0000ff">...</FONT>
41 <FONT COLOR="#a020f0">'timestep'</FONT><FONT COLOR="#000000">,timestep, </FONT><FONT COLOR="#a020f0">'name'</FONT><FONT COLOR="#000000">,name));</FONT>
42 <FONT COLOR="#000000">&gt;&gt; sys.setParams(plist({</FONT><FONT COLOR="#a020f0">'OMEGA'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'system frequency'</FONT><FONT COLOR="#000000">}, 2))</FONT>
43 <FONT SIZE=2><FONT FACE="Courier New, monospace"><FONT COLOR="#000000">M: running ssm/ssm</FONT></FONT></FONT>
44 M: running ssmFromDescription
45 M: running validate
46 M: running ssm/setParams
47 M: running display
48 ------ ssm/1 -------
49 amats: { [1x1] [] []
50 [] [1x1] []
51 [2x1] [] [2x2] } [3x3]
52 mmats: { [1x1] [] []
53 [] [1x1] []
54 [] [] [2x2] } [3x3]
55 bmats: { [1x1] [] []
56 [] [1x1] []
57 [] [] [2x2] } [3x3]
58 cmats: { [1x1] [] []
59 [] [1x1] []
60 [] [] [2x2] } [3x3]
61 dmats: { [] [] [1x2]
62 [1x1] [] []
63 [] [2x1] [] } [3x3]
64 timestep: 0
65 inputs: [1x3 ssmblock]
66 1 : input 1 | input 1 &gt; 1 []
67 2 : input 2 | input 2 &gt; 1 []
68 3 : input 3 | input 3 &gt; 1 [], input 3 &gt; 2 []
69 states: [1x3 ssmblock]
70 1 : state 1 | state 1 &gt; 1 []
71 2 : state 2 | state 2 &gt; 1 []
72 3 : state 3 | state 3 &gt; 1 [], state 3 &gt; 2 []
73 outputs: [1x3 ssmblock]
74 1 : output 1 | output 1 &gt; 1 []
75 2 : output 2 | output 2 &gt; 1 []
76 3 : output 3 | output 3 &gt; 1 [], output 3 &gt; 2 []
77 params: (OMEGA=2) [1x1 plist]
78 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
79 Ninputs: 3
80 inputsizes: [1 1 2]
81 Noutputs: 3
82 outputsizes: [1 1 2]
83 Nstates: 3
84 statesizes: [1 1 2]
85 Nparams: 1
86 isnumerical: false
87 hist: ssm.hist [1x1 history]
88 procinfo: (empty-plist) [1x1 plist]
89 plotinfo: (empty-plist) [1x1 plist]
90 name: sys
91 description:
92 mdlfile:
93 UUID: 227fd0a2-1de0-4e01-855f-d0548e1eb1ff
94 --------------------</PRE></DIV><P>
95 <BR><BR>
96 </P>
97 <P>In then we set the names and descriptions of the input blocks, the
98 names, descriptions and units of the port variables:</P>
99 <DIV CLASS="fragment"><PRE><FONT COLOR="#000000">&gt;&gt; sys.setBlockNames(plist(</FONT><FONT COLOR="#a020f0">'field'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'blocks'</FONT><FONT COLOR="#000000">, [1 2 3], </FONT><FONT COLOR="#a020f0">'names'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'myinput1'</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#a020f0">'myinput2'</FONT><FONT COLOR="#000000">,</FONT><FONT COLOR="#a020f0">'myinput3'</FONT><FONT COLOR="#000000">} ));</FONT>
100 <FONT COLOR="#000000">&gt;&gt; sys.setBlockDescriptions(plist(</FONT><FONT COLOR="#a020f0">'field'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'blocks'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'myinput1'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'descriptions'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'myinput1 description'</FONT><FONT COLOR="#000000">} ));</FONT>
101 <FONT COLOR="#000000">&gt;&gt; sys.setPortNames(plist(</FONT><FONT COLOR="#a020f0">'field'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'block'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'myinput3'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'ports'</FONT><FONT COLOR="#000000">, [1 2], </FONT><FONT COLOR="#a020f0">'names'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'my port 3-1'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'my port 3-2'</FONT><FONT COLOR="#000000">} ));</FONT>
102 <FONT COLOR="#000000">&gt;&gt; sys.setPortDescriptions(plist(</FONT><FONT COLOR="#a020f0">'field'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'block'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'myinput3'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'ports'</FONT><FONT COLOR="#000000">, [1 2], </FONT><FONT COLOR="#a020f0">'descriptions'</FONT><FONT COLOR="#000000">,{</FONT><FONT COLOR="#a020f0">'first description'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'second description'</FONT><FONT COLOR="#000000">} ));</FONT>
103 <FONT COLOR="#000000">&gt;&gt; sys.setPortUnits(plist(</FONT><FONT COLOR="#a020f0">'field'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'block'</FONT><FONT COLOR="#000000">, {</FONT><FONT COLOR="#a020f0">'myinput3'</FONT><FONT COLOR="#000000">}, </FONT><FONT COLOR="#a020f0">'ports'</FONT><FONT COLOR="#000000">, [1 2], </FONT><FONT COLOR="#a020f0">'units'</FONT><FONT COLOR="#000000">, [unit(</FONT><FONT COLOR="#a020f0">'kg m^-2'</FONT><FONT COLOR="#000000">) unit(</FONT><FONT COLOR="#a020f0">'m'</FONT><FONT COLOR="#000000">)] ));</FONT>
104 &gt;&gt; sys.inputs
105 M: running ssm/setBlockNames
106 M: running ssm/setBlockDescriptions
107 M: running ssm/setPortNames
108 ------ ssmport/1 -------
109 name: my port 3-1
110 units: [] [1x1 unit]
111 description:
112 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
113 ------------------------
114 ------ ssmport/2 -------
115 name: my port 3-2
116 units: [] [1x1 unit]
117 description:
118 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
119 ------------------------
120 M: running ssm/setPortDescriptions
121 ------ ssmport/1 -------
122 name: my port 3-1
123 units: [] [1x1 unit]
124 description: first description
125 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
126 ------------------------
127 ------ ssmport/2 -------
128 name: my port 3-2
129 units: [] [1x1 unit]
130 description: second description
131 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
132 ------------------------
133 M: running ssm/setPortUnits
134 ------ ssmblock/1 -------
135 name: myinput1
136 ports: input 1 &gt; 1 [] [1x1 ssmport]
137 description: myinput1 description
138 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
139 -------------------------
140 ------ ssmblock/2 -------
141 name: myinput2
142 ports: input 2 &gt; 1 [] [1x1 ssmport]
143 description:
144 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
145 -------------------------
146 ------ ssmblock/3 -------
147 name: myinput3
148 ports: my port 3-1 [kg m^(-2)], my port 3-2 [m] [1x2 ssmport]
149 description:
150 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
151 <FONT SIZE=2><FONT FACE="Courier New, monospace"><FONT COLOR="#000000">-------------------------</FONT></FONT></FONT></PRE></DIV><H2>
152 Modifying the parameter values</H2>
153 <P>Once the parameter field &ldquo;params&rdquo; is set, one may want
154 to set or modify (like in an optimizer) the parameter values. This is
155 done by the functions &ldquo;*Parameters.m&rdquo;. The function
156 setParameters takes two inputs ('setnames' and 'setvalues') which are
157 the names of the parameters to modify and the values assigned to
158 them.</P>
159 <DIV CLASS="fragment"><PRE>&gt;&gt; sys.params
160 <FONT COLOR="#000000">&gt;&gt; sys.setParameters(</FONT><FONT COLOR="#a020f0">'OMEGA'</FONT><FONT COLOR="#000000">, 0.002);</FONT>
161 &gt;&gt; sys.params
162 ----------- plist 01 -----------
163 n params: 1
164 ---- param 1 ----
165 key: OMEGA
166 val: 2
167 desc: system frequency
168 -----------------
169 description:
170 UUID: 84ff1ed8-eee2-406c-89d8-7e6e703d36dd
171 --------------------------------
172 M: running setParameters
173 M: running ssm/ssm
174 ----------- plist 01 -----------
175 n params: 1
176 ---- param 1 ----
177 key: OMEGA
178 val: 0.002
179 desc: system frequency
180 -----------------
181 description:
182 UUID: 84ff1ed8-eee2-406c-89d8-7e6e703d36dd
183 --------------------------------</PRE></DIV><P>
184 The function subsParameterskeep and Parameters substitute numerical
185 values to the symbolic expressions, using a list of the parameters to
186 substitute (or its complementary). All parameters substituted are
187 removed from the &ldquo;params&rdquo; field. The call
188 &lt;system&gt;.keepParameters substitues all the parameters. The
189 field isnumerical is then set to 1, unless a parameter in the
190 matrices was forgotten in the params field.</P>
191 <DIV CLASS="fragment"><PRE>&gt;&gt; sys.keepParameters;
192 &gt;&gt; sys.params
193 &gt;&gt; sys.isNumeric
194
195 M: running keepParameters
196 ----------- plist 01 -----------
197 n params: 0
198 description:
199 UUID: 84ff1ed8-eee2-406c-89d8-7e6e703d36dd
200 --------------------------------
201 ans =
202 1</PRE></DIV><H2>
203 Modifying the inputs/states/outputs</H2>
204 <P><FONT COLOR="#000000">Les us first build a simple system
205 constituted of four parallel 1</FONT><FONT COLOR="#000000"><SUP>st</SUP></FONT><FONT COLOR="#000000">
206 order systems.</FONT></P>
207 <DIV CLASS="fragment"><PRE><FONT COLOR="#000000">&gt;&gt; name = </FONT><FONT COLOR="#a020f0">'sys'</FONT><FONT COLOR="#000000">;</FONT>
208 &gt;&gt; timestep = 0;
209 &gt;&gt; amats = {diag([-1 -2 -3 -4])};
210 &gt;&gt; bmats = {diag([1 2 0 0])};
211 &gt;&gt; cmats = {[diag([1 0 3 0]) ; [0 0 0 0 ]]};
212 &gt;&gt; dmats = {[diag([0 0 0 0]) ; [0 0 0 0 ]]};
213 <FONT COLOR="#000000">&gt;&gt; sys = ssm(plist( </FONT><FONT COLOR="#0000ff">...</FONT>
214 <FONT COLOR="#a020f0">'amats'</FONT><FONT COLOR="#000000">,amats, </FONT><FONT COLOR="#a020f0">'bmats'</FONT><FONT COLOR="#000000">,bmats, </FONT><FONT COLOR="#a020f0">'cmats'</FONT><FONT COLOR="#000000">,cmats, </FONT><FONT COLOR="#a020f0">'dmats'</FONT><FONT COLOR="#000000">,dmats, </FONT><FONT COLOR="#0000ff">...</FONT>
215 <FONT COLOR="#a020f0">'timestep'</FONT><FONT COLOR="#000000">,timestep, </FONT><FONT COLOR="#a020f0">'name'</FONT><FONT COLOR="#000000">,name));</FONT>
216 <FONT COLOR="#000000">It is possible to obtain the structural realization of the system using sMinReal. This function deletes states which are either not observable or controllable. However, there may still exist such linear combinations of states.</FONT>
217 <FONT COLOR="#000000">The process only modify the states, here the 2</FONT><FONT COLOR="#000000"><SUP>nd</SUP></FONT><FONT COLOR="#000000"> and 4rt states disappear since they are not observable, and the 3</FONT><FONT COLOR="#000000"><SUP>rd</SUP></FONT><FONT COLOR="#000000"> and 4</FONT><FONT COLOR="#000000"><SUP>th</SUP></FONT><FONT COLOR="#000000"> disappear since they are not controllable.</FONT>
218 &gt;&gt; sys.sMinReal
219 M: running ssm/ssm
220 M: running ssmFromDescription
221 M: running validate
222 M: running ssm/sMinReal
223 M: running display
224 ------ ssm/1 -------
225 amats: { [1x1] } [1x1]
226 mmats: { [1x1] } [1x1]
227 bmats: { [1x4] } [1x1]
228 cmats: { [5x1] } [1x1]
229 dmats: { [] } [1x1]
230 timestep: 0
231 inputs: [1x1 ssmblock]
232 1 : input 1 | input 1 &gt; 1 [], input 1 &gt; 2 [], input 1 &gt; 3 [], input 1 &gt; 4 []
233 states: [1x1 ssmblock]
234 1 : state 1 | state 1 &gt; 1 []
235 outputs: [1x1 ssmblock]
236 1 : output 1 | output 1 &gt; 1 [], output 1 &gt; 2 [], output 1 &gt; 3 [], output 1 &gt; 4 [], output 1 &gt; 5 []
237 params: (empty-plist) [1x1 plist]
238 version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $
239 Ninputs: 1
240 inputsizes: 4
241 Noutputs: 1
242 outputsizes: 5
243 Nstates: 1
244 statesizes: 1
245 Nparams: 0
246 isnumerical: true
247 hist: ssm.hist [1x1 history]
248 procinfo: (empty-plist) [1x1 plist]
249 plotinfo: (empty-plist) [1x1 plist]
250 name: sys
251 description:
252 mdlfile:
253 UUID: 349cd9c4-ad91-4151-b542-63d34b01bed8
254 --------------------</PRE></DIV><P>
255 Then we can work on the input/outputs to simplify the model.</P>
256 <P>The user must specify which block variable he want to keep, and
257 three syntaxes are allowed.
258 </P>
259 <UL>
260 <LI><P>'ALL'
261 meaning all ports in all blocks are kept</P>
262 <LI><P>{&lt;varname1&gt;
263 &lt;varname2&gt; &hellip;} giving the name of each port to keep, in
264 this case one must ensure ports of different blocks have different
265 names.</P>
266 <LI><P>{&lt;logical
267 index for block1&gt; &lt;double index for block2&gt; &lt;varnames
268 cellstr for block3&gt; &ldquo;ALL&rdquo; &ldquo;NONE&rdquo;} using a
269 different index for each individual block.</P>
270 </UL>
271 <P>This
272 syntax is also used for any converter to select the inputs and
273 outputs in the ssm.</P>
274 <P>It is important to note that this removes lines and columns in the
275 system's matrices, but no parameters are removed. So second order
276 parameters that should be remove (by setting them to a neutral value)
277 must be taken care of separately.</P>
278 <DIV CLASS="fragment"><PRE><FONT FACE="Courier New, monospace"><FONT COLOR="#000000">&gt;&gt; sys.simplify(plist(</FONT><FONT COLOR="#a020f0">'inputs'</FONT><FONT COLOR="#000000">, {[1 2]} , </FONT><FONT COLOR="#a020f0">'states'</FONT><FONT COLOR="#000000">, </FONT><FONT COLOR="#a020f0">'ALL'</FONT><FONT COLOR="#000000"> , </FONT><FONT COLOR="#a020f0">'outputs'</FONT><FONT COLOR="#000000">, { </FONT><FONT COLOR="#a020f0">'output 1 &gt; 1'</FONT><FONT COLOR="#000000"> </FONT><FONT COLOR="#a020f0">'output 1 &gt; 4'</FONT><FONT COLOR="#000000">}))</FONT></FONT>
279 <FONT FACE="Courier New, monospace"><FONT COLOR="#000000"><FONT SIZE=2>M: running ssm/simplify</FONT></FONT></FONT>
280 <FONT FACE="Courier New, monospace">M: running ssm/ssm</FONT>
281 <FONT FACE="Courier New, monospace">M: running ssm/simplify</FONT>
282 <FONT FACE="Courier New, monospace">M: running display</FONT>
283 <FONT FACE="Courier New, monospace">------ ssm/1 -------</FONT>
284 <FONT FACE="Courier New, monospace">amats: { [1x1] } [1x1]</FONT>
285 <FONT FACE="Courier New, monospace">mmats: { [1x1] } [1x1]</FONT>
286 <FONT FACE="Courier New, monospace">bmats: { [1x2] } [1x1]</FONT>
287 <FONT FACE="Courier New, monospace">cmats: { [2x1] } [1x1]</FONT>
288 <FONT FACE="Courier New, monospace">dmats: { [] } [1x1]</FONT>
289 <FONT FACE="Courier New, monospace">timestep: 0</FONT>
290 <FONT FACE="Courier New, monospace">inputs: [1x1 ssmblock]</FONT>
291 <FONT FACE="Courier New, monospace">1 : input 1 | input 1 &gt; 1 [], input 1 &gt; 2 []</FONT>
292 <FONT FACE="Courier New, monospace">states: [1x1 ssmblock]</FONT>
293 <FONT FACE="Courier New, monospace">1 : state 1 | state 1 &gt; 1 []</FONT>
294 <FONT FACE="Courier New, monospace">outputs: [1x1 ssmblock]</FONT>
295 <FONT FACE="Courier New, monospace">1 : output 1 | output 1 &gt; 1 [], output 1 &gt; 4 []</FONT>
296 <FONT FACE="Courier New, monospace">params: (empty-plist) [1x1 plist]</FONT>
297 <FONT FACE="Courier New, monospace">version: $Id: ssm_modify_content.html,v 1.2 2009/08/28 15:11:53 adrien Exp $</FONT>
298 <FONT FACE="Courier New, monospace">Ninputs: 1</FONT>
299 <FONT FACE="Courier New, monospace">inputsizes: 2</FONT>
300 <FONT FACE="Courier New, monospace">Noutputs: 1</FONT>
301 <FONT FACE="Courier New, monospace">outputsizes: 2</FONT>
302 <FONT FACE="Courier New, monospace">Nstates: 1</FONT>
303 <FONT FACE="Courier New, monospace">statesizes: 1</FONT>
304 <FONT FACE="Courier New, monospace">Nparams: 0</FONT>
305 <FONT FACE="Courier New, monospace">isnumerical: true</FONT>
306 <FONT FACE="Courier New, monospace">hist: ssm.hist [1x1 history]</FONT>
307 <FONT FACE="Courier New, monospace">procinfo: (empty-plist) [1x1 plist]</FONT>
308 <FONT FACE="Courier New, monospace">plotinfo: (empty-plist) [1x1 plist]</FONT>
309 <FONT FACE="Courier New, monospace">name: sys</FONT>
310 <FONT FACE="Courier New, monospace">description: </FONT>
311 <FONT FACE="Courier New, monospace">mdlfile: </FONT>
312 <FONT FACE="Courier New, monospace">UUID: 8e55110a-eb07-44d2-aaee-4f839a5fb155</FONT>
313 <FONT FACE="Courier New, monospace">--------------------</FONT>
314 </PRE></DIV>
315 </BODY>
316 </HTML>