<?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: Otimization function in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967848#M6522</link>
    <description>Hello! Thank you a lot for your answer. This was my first post and I didn't submit it in a acceptable format. Luckly I have sorted it out.&lt;BR /&gt;I will make sure to be more carefully next time.</description>
    <pubDate>Fri, 30 May 2025 19:14:20 GMT</pubDate>
    <dc:creator>pedroy341</dc:creator>
    <dc:date>2025-05-30T19:14:20Z</dc:date>
    <item>
      <title>Otimization function</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967324#M6520</link>
      <description>&lt;P&gt;Hello. I am trying to approximate a 36 points series to a quaterly data of 9 quarters. The objetive here is that the optimized series of 36 points fits the goal for those 9 quarters with minimal error while&amp;nbsp; being a smooth and monotonous function. I was trying to use the following code:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;FONT face="arial black,avant garde" color="#3366FF"&gt;proc iml&lt;/FONT&gt;;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;FONT color="#339966"&gt; &amp;nbsp;/* Step 1: Define Bayes values from macro variables */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;bayes = {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes1,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes2,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes3,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes4,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes5,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes6,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes7,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes8,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;amp;bayes9&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;};&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color="#339966"&gt;/* Step 2: Define initial guess (e.g., from macro variables &amp;amp;pd1–&amp;amp;pd36) */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; PD_ini = {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;amp;PD1, &amp;amp;PD2, &amp;amp;PD3, &amp;amp;PD4, &amp;amp;PD5, &amp;amp;PD6, &amp;amp;PD7, &amp;amp;PD8, &amp;amp;PD9, &amp;amp;PD10, &amp;amp;PD11, &amp;amp;PD12, &amp;amp;PD13, &amp;amp;PD14, &amp;amp;PD15, &amp;amp;PD16, &amp;amp;PD17, &amp;amp;PD18, &amp;amp;PD19, &amp;amp;PD20, &amp;amp;PD21, &amp;amp;PD22, &amp;amp;PD23, &amp;amp;PD24, &amp;amp;PD25, &amp;amp;PD26, &amp;amp;PD27, &amp;amp;PD28, &amp;amp;PD29, &amp;amp;PD30, &amp;amp;PD31, &amp;amp;PD32, &amp;amp;PD33, &amp;amp;PD34, &amp;amp;PD35, &amp;amp;PD36&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; };&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;PD_init=t(PD_ini);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;FONT color="#339966"&gt; &amp;nbsp;/* Step 3: Define the objective function */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;start&lt;/FONT&gt; objetive(pd) &lt;FONT color="#3366FF"&gt;global&lt;/FONT&gt;(bayes);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;S = j(1, 36, .);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CumPD = j(1, 36, .);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;S[1] = 1 - pd[1];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CumPD[1] = 1 - S[1];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;do&lt;/FONT&gt; t = 2 &lt;FONT color="#3366FF"&gt;to&lt;/FONT&gt; 36;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;S[t] = S[t-1] * (1 - pd[t]);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CumPD[t] = 1 - S[t];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;do&lt;/FONT&gt; i = 0 to 8;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t = i * 3 + 1;&amp;nbsp;&lt;FONT color="#339966"&gt; /* Corresponds to months 0, 3, ..., 24 */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;condPD = (CumPD[t+12] - CumPD[t]) / S[t];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;err = (condPD - bayes[i+1]) * 100;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;obj = obj + err##2;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;end&lt;/FONT&gt;;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;return&lt;/FONT&gt; (obj);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;finish&lt;/FONT&gt;;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;FONT color="#339966"&gt; &amp;nbsp;/* Step 4: Call optimizer */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;optn = {0};&amp;nbsp;&lt;FONT color="#339966"&gt; /* 0 = minimize */&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;call&lt;/FONT&gt; nlpqn(rc, result, "objetive", initPD, optn);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;/* Step 5: Output results */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&lt;FONT color="#3366FF"&gt;print&lt;/FONT&gt; rc result;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT color="#3366FF"&gt;quit;&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;But I keep getting this error:&lt;BR /&gt;&lt;EM&gt;74 ! /* 0 = minimize */&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;75 call nlpqn(rc, result, "objetive", initPD, optn);&lt;/EM&gt;&lt;BR /&gt;&lt;FONT color="#FF0000"&gt;ERROR: (execution) Matrix has not been set to a value.&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;I have also tried to use the initial matrixes as constants but it didnt work either.&lt;BR /&gt;Ex:&amp;nbsp; bayes = {0.0002639011, 0.0003372667, 0.0004005217, 0.0004619689, 0.0005238603, 0.0005852403, 0.000645032, 0.0007037884, 0.0007612079 and&amp;nbsp; PD_ini = j(1,36,0.01);&lt;BR /&gt;&lt;BR /&gt;Note: My base SAS software is 9.4 and the IML is&amp;nbsp;For SAS/IML 15.2.&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;Can someone give some pointers or some help. I would apreciate it &lt;span class="lia-unicode-emoji" title=":grinning_face_with_big_eyes:"&gt;😃&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 23 May 2025 14:07:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967324#M6520</guid>
      <dc:creator>pedroy341</dc:creator>
      <dc:date>2025-05-23T14:07:16Z</dc:date>
    </item>
    <item>
      <title>Re: Otimization function</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967621#M6521</link>
      <description>&lt;P&gt;The vector for the initial guess is called&amp;nbsp;&lt;STRONG&gt;PD_init&lt;/STRONG&gt; in the program, but you are passing&amp;nbsp;&lt;STRONG&gt;initPD&lt;/STRONG&gt; (which is undefined) as an argument to CALL NLPQN.&lt;/P&gt;
&lt;P&gt;That information (which matrix was not set to a value) is part of the log, so please copy/paste the entire error message in future posts.&lt;/P&gt;</description>
      <pubDate>Wed, 28 May 2025 17:42:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967621#M6521</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2025-05-28T17:42:39Z</dc:date>
    </item>
    <item>
      <title>Re: Otimization function</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967848#M6522</link>
      <description>Hello! Thank you a lot for your answer. This was my first post and I didn't submit it in a acceptable format. Luckly I have sorted it out.&lt;BR /&gt;I will make sure to be more carefully next time.</description>
      <pubDate>Fri, 30 May 2025 19:14:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967848#M6522</guid>
      <dc:creator>pedroy341</dc:creator>
      <dc:date>2025-05-30T19:14:20Z</dc:date>
    </item>
    <item>
      <title>Re: Otimization function</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967854#M6523</link>
      <description>&lt;P&gt;No worries. Glad your problem is solved!&lt;/P&gt;</description>
      <pubDate>Fri, 30 May 2025 19:42:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Otimization-function/m-p/967854#M6523</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2025-05-30T19:42:06Z</dc:date>
    </item>
  </channel>
</rss>

