<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493196#M4356</link>
    <description>&lt;P&gt;Hi Rick:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The slides you shared&amp;nbsp;are very helpful!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I increase the sample size from 50 to 200, and increase number of repeated measures from 5 to 10, use&amp;nbsp;the same termination criteria "1e-3" on NLPQN.&lt;/P&gt;&lt;P&gt;This time the code runs really slow, which makes sense since the sample size is 8 time of original one, it takes about 45-60 min for one round of&amp;nbsp;minimization of both "bfunction" and "betafunction".&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also when I increase &lt;SPAN&gt;termination criteria&amp;nbsp; to "1e-6" on NLPQN. and set "i" to be extremely large,&amp;nbsp;&lt;/SPAN&gt;the error message:&amp;nbsp;&lt;/P&gt;&lt;P&gt;"QUANEW Optimization cannot be completed" show up again.&lt;/P&gt;&lt;P&gt;I use this extreme setting just to see whether quasi-Newton and NRA converge, now it seems like the&amp;nbsp;&lt;SPAN&gt;"1e-3" is a good termination creteria on "NLPQN".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So in conclusion:&lt;/P&gt;&lt;P&gt;1. Is there a way to improve the convergence speed for a large sample, I guess this is related&amp;nbsp;to which NLP algorithm we choose and the natural of the function to minimize?&lt;/P&gt;&lt;P&gt;2. Do you think using&amp;nbsp;&lt;SPAN&gt;"1e-3" is safe on NLPQN so that I can&amp;nbsp;apply&amp;nbsp;quasi-Newton on relatively large sample size, even though it converges relatively slow?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thank you for your generous help!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 06 Sep 2018 20:47:45 GMT</pubDate>
    <dc:creator>anthonywang</dc:creator>
    <dc:date>2018-09-06T20:47:45Z</dc:date>
    <item>
      <title>Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/492848#M4351</link>
      <description>&lt;P&gt;Hi all:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a question bugging me for a long time.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I self defined two objective functions, namely&amp;nbsp; "betafunction" and "bfunction".&lt;/P&gt;&lt;P&gt;"betafunction"&amp;nbsp; is a function of fixed effect "beta", this function calculates (returns) a number at the end, and we want to obtain an estimate of fixed effect "beta" by minimizing this number. In this function, "b" is a known vector.&lt;/P&gt;&lt;P&gt;The same with "bfunction", which is a function of random effect "b", this function also &lt;SPAN&gt;calculates (returns) a number at the end, and we want to obtain an estimate of random effect "b" by minimizing this number.&amp;nbsp;In this function, "beta" is a known vector.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The way to obtain optimal fixed and random effect estimates is to conduct minimization of these two functions iteratively.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In detail, in "mixed" function, I initial the iteration with a starting value of fixed effect "beta" (obtained from GLM), and setting the starting&amp;nbsp;value of "b" to be zero. Minimize "betafunction", pass final&amp;nbsp;minimized&amp;nbsp;beta to "bfunction" and minimize the "bfunction", obtain the minimized b and pass it to "betafunction" to get a minimized beta, and keep iterating these two minimization until a convergence criteria "L2_Norm(beta_new-beta_old) + L2_Norm(b_new-b_old) &amp;lt; 0.0000001, is satisfied.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note: "projection" and "BaseM" are two self-defined functions that will be called in this iteration, I check these two function and they are correct.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I fit my code with two simulated datasets:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;At first I used simulated data from linear mixed model with random intercept only, and assuming error terms are simulated with compound&amp;nbsp;symmetry correlation structure. The code works fine and no error message are shown. The resulting estimated&amp;nbsp;fixed effects are very close to&amp;nbsp;the ones I used to simulate the dataset. And the random&amp;nbsp;intercepts are not too far from the true ones, and are also very close to the ones obtained from PROC MIXED.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The second simulated dataset is really also from&amp;nbsp;a linear mixed model but with both fixed/random intercept and fixed/random slope, which is "time", assuming independence between random effects, and compound symmetry correlation structure for error terms.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;The dataset is simple: a column of ID(with total, say 50 subjects), a column of numeric response(5 repeated measures each subject), and a column of time(ranging from 1 to 5).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;My concern and question is when I tested my code using&amp;nbsp;this model,&amp;nbsp; there are some error messages, saying:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;"ERROR: NEWRAP Optimization cannot be completed". &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The program keeps running even&amp;nbsp;though there are some error messages like this popping out occasionally. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But the result is not good, the fixed effect estimates are basically identical with my inputs, meaning the algorithm did not really work.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;One thing about the error: it seems like it works when appying NLPNRA on "bfunction" , but the error message occurs when applying NLPNRA on "betafunction" in each iteration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I really do not know&amp;nbsp;how exactly the error is caused, and why the program is not working on linear mixed model with random slope but works will random intercept only model.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help or advice will be so much appreciated!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;THANK YOU IN ADVANCE!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
proc iml;

start mixed (Pred_Fixed_Efft, Pred_Ran_Efft, betastart)
	  global(CorrStruc, n, SampSize, nfe, nre, Pj, lambda1, lambda2, ite, Y, X, Z, beta, b, i); 



betavalue = j(nfe, ite);          /* matrix to store fixed effect iterations*/
bvalue = j(SampSize*nre, ite);    /* matrix to store random effect iterations*/

/*initial value from GLM*/
betavalue[,1] = betastart;           /* assign first column of beta matrix to be the initial estimate from GLM */
bvalue[,1] = j(SampSize*nre, 1, 0);  /* assign first column of b matrix to be the initial estimate of 0 */
 

epsilon = 1; 

tc = repeat(.,1,13); 
tc[1]  = 1000; 
tc[2]  = 1000; 

 
do i=2 to ite until (epsilon &amp;lt; 0.000001) ;	 
	
/*print, "beta value pre initialized" beta;*/
       	beta = betavalue[,i-1];              	 /* beta value in bfunction is fixed as previous minimization result*/
/*print, "beta value before NR" beta;*/
		b0 = bvalue[,i-1];  					 /* initial b value is as previous minimization result*/
		opt = {0 2}; 
   		call NLPNRA(rc, xr, "bfunction", b0, opt,,tc);  
   		bvalue[,i] = t(xr);                 	 /* assign minimized b value in current iteration into b matrix */
 
   		b =  bvalue[,i];                    	 /* b value in betafunction is fixed as previous minimization result*/
/*print, "b value before NR" b;*/
		beta0= betavalue[,i-1];             	 /* initial beta value is as previous minimization result*/
		opt = {0 2}; 
 		call NLPNRA(rc, xr, "betafunction", beta0, opt,,tc); 
        betavalue[,i] = t(xr);   			 	 /* assign minimized beta value in current iteration big beta matrix */

 		epsilon = norm(abs(betavalue[,i]-betavalue[,i-1]), "L2") + norm(abs(bvalue[,i]-bvalue[,i-1]), "L2");   

end;
 

/****************************/
/*1.RANDOM EFFECT */
/*assign random effects estimates to each subject*/
Pred_Ran_Efft = shape(bvalue[,i], SampSize, nre);
/*2. FIXED EFFECT*/
/*assign fixed effect estimates to be Pred_Fixed_Efft */
Pred_Fixed_Efft = betavalue[,i];

finish mixed;


&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 02 May 2020 15:10:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/492848#M4351</guid>
      <dc:creator>anthonywang</dc:creator>
      <dc:date>2020-05-02T15:10:40Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493058#M4353</link>
      <description>&lt;P&gt;&amp;nbsp;The portion of the optimization that is having a problem is the estimates of the random effects. It looks like you are estimating 100 random parameters. Since your sample is only size&amp;nbsp;250 it is understandable that objective function might be flat.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here are a few suggestions:&lt;/P&gt;
&lt;P&gt;1.Try quasi-newton (NLPQN), instead of Newton-Raphson.&lt;/P&gt;
&lt;P&gt;2. Make the convergence criterion loose at the beginning. You can tighten it up later in the iteration process. For example, try&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;		opt = {0 0};
                tc[3:6] = .;
   		call NLPNRA(rcb, xr, "bfunction", b0, opt,,tc);  
   		bvalue[,i] = t(xr);
 
   		b =  bvalue[,i];  
		beta0= betavalue[,i-1]; 
		opt = {0 1}; 
                tc[3:6] = 1e-3;   /* &amp;lt;== you can make the criterion tighter as i increases */
 		call NLPQN(rcbeta, xr, "betafunction", beta0, opt,,tc); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;3. Remember that you can use the&amp;nbsp;return code to detect nonconvergence. In the code above I used rcb and rcbeta&amp;nbsp;for the return codes. You can test whether&amp;nbsp;rcbeta&amp;nbsp;&amp;lt; 0, and if so loosen the convergence criterion and rerun&amp;nbsp;to try to obtain convergence. Or abort the computation so you&amp;nbsp;can try again.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 06 Sep 2018 15:12:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493058#M4353</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2018-09-06T15:12:46Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493150#M4354</link>
      <description>&lt;P&gt;Hi Rick:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so much for your quick response!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your suggestion works very well, both function converges, the return code is "6" for both function.&lt;/P&gt;&lt;P&gt;I will test with a tighter criteria and increase i and sample size to see how the result changed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just one question:&amp;nbsp;&lt;/P&gt;&lt;P&gt;There is a note message shown in each function minimization, I found that some user mentioned that "this note appears in &lt;SPAN&gt;PROC GLIMMIX&lt;/SPAN&gt;, and this may&lt;SPAN&gt;&amp;nbsp;lead to very large standard errors for the associated parameter". &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;So I wonder should I worry about this message, if so, do you have any suggestion?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Note: At least one element of the (projected) gradient is greater than 1e-3.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV align="left"&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 06 Sep 2018 18:37:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493150#M4354</guid>
      <dc:creator>anthonywang</dc:creator>
      <dc:date>2018-09-06T18:37:00Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493164#M4355</link>
      <description>&lt;P&gt;Glad you found the tips helpful.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you look at the table, you see that the MaxAbsGradElement is 0.007, which is indeed less than 1e-3. But if you look at the ObjFunc change and StepSize columns, you see very small numbers. These numbers indicate that the function is very flat in one direction&amp;nbsp;and can't proceed any closer to the minimum. However, in another direction the function is less flat.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't have time for an in-depth analysis right now, but look at Slide 6 at &lt;A href="https://goo.gl/images/QbJE3x" target="_blank"&gt;https://goo.gl/images/QbJE3x&lt;/A&gt; for an example. You could try a different NLP algorithm, but I suspect the problem is your sample size. The sample determines the curvature/steepness of the log-likelihood function.&amp;nbsp;Small data sets lead to broad LL. The large standard errors are a consequence of the flatness of the LL.&lt;/P&gt;</description>
      <pubDate>Thu, 06 Sep 2018 19:20:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493164#M4355</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2018-09-06T19:20:33Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493196#M4356</link>
      <description>&lt;P&gt;Hi Rick:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The slides you shared&amp;nbsp;are very helpful!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I increase the sample size from 50 to 200, and increase number of repeated measures from 5 to 10, use&amp;nbsp;the same termination criteria "1e-3" on NLPQN.&lt;/P&gt;&lt;P&gt;This time the code runs really slow, which makes sense since the sample size is 8 time of original one, it takes about 45-60 min for one round of&amp;nbsp;minimization of both "bfunction" and "betafunction".&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also when I increase &lt;SPAN&gt;termination criteria&amp;nbsp; to "1e-6" on NLPQN. and set "i" to be extremely large,&amp;nbsp;&lt;/SPAN&gt;the error message:&amp;nbsp;&lt;/P&gt;&lt;P&gt;"QUANEW Optimization cannot be completed" show up again.&lt;/P&gt;&lt;P&gt;I use this extreme setting just to see whether quasi-Newton and NRA converge, now it seems like the&amp;nbsp;&lt;SPAN&gt;"1e-3" is a good termination creteria on "NLPQN".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So in conclusion:&lt;/P&gt;&lt;P&gt;1. Is there a way to improve the convergence speed for a large sample, I guess this is related&amp;nbsp;to which NLP algorithm we choose and the natural of the function to minimize?&lt;/P&gt;&lt;P&gt;2. Do you think using&amp;nbsp;&lt;SPAN&gt;"1e-3" is safe on NLPQN so that I can&amp;nbsp;apply&amp;nbsp;quasi-Newton on relatively large sample size, even though it converges relatively slow?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thank you for your generous help!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 06 Sep 2018 20:47:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493196#M4356</guid>
      <dc:creator>anthonywang</dc:creator>
      <dc:date>2018-09-06T20:47:45Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493202#M4357</link>
      <description>&lt;P&gt;1. You can vectorize the functions more efficiently. Replace the DO loops with matrix algebra. Get rid of the concatenation (||) within the loop. Those functions are called hundreds of time for each step, so make them as fast as possible. My blog has many examples of these best practices.&lt;/P&gt;
&lt;P&gt;2. Only you can answer that. I don't have time to carefully study your problem.&lt;/P&gt;</description>
      <pubDate>Thu, 06 Sep 2018 20:59:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493202#M4357</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2018-09-06T20:59:18Z</dc:date>
    </item>
    <item>
      <title>Re: Iteratively minimizing two objective function using NLPNRA from SAS/IML</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493203#M4358</link>
      <description>&lt;P&gt;Hi Rick:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I see, your blog is so much helpful for an IML beginner like me.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Really appreciate your help!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 06 Sep 2018 21:03:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Iteratively-minimizing-two-objective-function-using-NLPNRA-from/m-p/493203#M4358</guid>
      <dc:creator>anthonywang</dc:creator>
      <dc:date>2018-09-06T21:03:36Z</dc:date>
    </item>
  </channel>
</rss>

