[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnu-info
Subject:    Simple glpk program giving me wrong maximum value output? Your advice is valued!!!
From:       Amit Gurung <rajgurung777 () gmail ! com>
Date:       2014-04-15 4:03:21
Message-ID: CAFJ_27-OMN5RCq16v=0S3FhwzvfoYDRoqHC5XBEu8VRJdjBhmw () mail ! gmail ! com
[Download RAW message or body]

"I do not know why the maximum value is 0 when it should have been -5. Not
just this example, but with any other negative value, the output is always
zero. How can I fix this?"



/*
 * Maximize z = 0*x - 1*y
 * subject to :
 *      x<=1
 *      x>=1
 *      y<=5
 *      y>=5
 */
#include <iostream>#include <stdlib.h>
#include <glpk.h>
using namespace std;
int main(void){
glp_prob *lp;
int ia[1+1000], ja[1+1000];double ar[1+1000], z, x, y;

lp = glp_create_prob();
glp_set_prob_name(lp, "sample");
glp_set_obj_dir(lp, GLP_MAX);
glp_add_rows(lp, 4);
glp_set_row_name(lp, 1, "p");
glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 1.0);
glp_set_row_name(lp, 2, "q");
glp_set_row_bnds(lp, 2, GLP_LO, 0.0, 1.0);
glp_set_row_name(lp, 3, "r");
glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 5.0);
glp_set_row_name(lp, 4, "s");
glp_set_row_bnds(lp, 4, GLP_LO, 0.0, 5.0);

glp_add_cols(lp, 2);
glp_set_col_name(lp, 1, "x");
glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0);  //why GLP_LO here ?
glp_set_obj_coef(lp, 1, 0.0);
glp_set_col_name(lp, 2, "x");
glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0);  //why GLP_LO here ?
glp_set_obj_coef(lp, 2, -1.0);

ia[1] = 1, ja[1] = 1, ar[1] = 1.0;
ia[2] = 1, ja[2] = 2, ar[2] = 0.0;

ia[3] = 2, ja[3] = 1, ar[3] = 1.0;
ia[4] = 2, ja[4] = 2, ar[4] = 0.0;

ia[5] = 3, ja[5] = 1, ar[5] = 0.0;
ia[6] = 3, ja[6] = 2, ar[6] = 1.0;

ia[7] = 4, ja[7] = 1, ar[7] = 0.0;
ia[8] = 4, ja[8] = 2, ar[8] = 1.0;

glp_load_matrix(lp, 8, ia, ja, ar);
glp_simplex(lp, NULL);
z = glp_get_obj_val(lp);
x = glp_get_col_prim(lp, 1);
y = glp_get_col_prim(lp, 2);
//printf("\nz = %g; x1 = %g; x2 = %g; x3 = %g\n",z, x1, x2, x3);
cout <<"z = " << z << "  x = " << x << " y = " << y;
cout << endl;
glp_delete_prob(lp);return 0;}


-- 
Praying for your good health,

*Amit Gurung*,
Contact  : +91 8974008902

[Attachment #3 (text/html)]

<div dir="ltr">&quot;I do not know why the maximum value is 0 when it should have \
been -5.  Not just this example, but with any other negative value, the output is 
always zero.  How can I fix this?&quot;<br clear="all"><br><br><br><pre style \
                class=""><code><span class="">/*
 * Maximize z = 0*x - 1*y
 * subject to :
 *      x&lt;=1
 *      x&gt;=1
 *      y&lt;=5
 *      y&gt;=5
 */</span><span class="">

</span><span class="">#include</span><span class=""> </span><span \
class="">&lt;iostream&gt;</span><span class=""> </span><span \
class="">#include</span><span class=""> </span><span \
class="">&lt;stdlib.h&gt;</span><span class="">

</span><span class="">#include</span><span class=""> </span><span \
class="">&lt;glpk.h&gt;</span><span class="">

</span><span class="">using</span><span class=""> </span><span \
class="">namespace</span><span class=""> std</span><span class="">;</span><span \
class="">

</span><span class="">int</span><span class=""> main</span><span \
class="">(</span><span class="">void</span><span class="">)</span><span class=""> \
</span><span class="">{</span><span class=""> glp_prob </span><span \
class="">*</span><span class="">lp</span><span class="">;</span><span class="">

</span><span class="">int</span><span class=""> ia</span><span class="">[</span><span \
class="">1</span><span class="">+</span><span class="">1000</span><span \
class="">],</span><span class=""> ja</span><span class="">[</span><span \
class="">1</span><span class="">+</span><span class="">1000</span><span \
class="">];</span><span class=""> </span><span class="">double</span><span class=""> \
ar</span><span class="">[</span><span class="">1</span><span class="">+</span><span \
class="">1000</span><span class="">],</span><span class=""> z</span><span \
class="">,</span><span class=""> x</span><span class="">,</span><span class=""> \
y</span><span class="">;</span><span class="">

lp </span><span class="">=</span><span class=""> glp_create_prob</span><span \
class="">();</span><span class=""> glp_set_prob_name</span><span \
class="">(</span><span class="">lp</span><span class="">,</span><span class=""> \
</span><span class="">&quot;sample&quot;</span><span class="">);</span><span \
class=""> glp_set_obj_dir</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> GLP_MAX</span><span class="">);</span><span \
class=""> glp_add_rows</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">4</span><span \
class="">);</span><span class=""> glp_set_row_name</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">1</span><span class="">,</span><span class=""> </span><span \
class="">&quot;p&quot;</span><span class="">);</span><span class=""> \
glp_set_row_bnds</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> GLP_UP</span><span class="">,</span><span class=""> \
</span><span class="">0.0</span><span class="">,</span><span class=""> </span><span \
class="">1.0</span><span class="">);</span><span class=""> \
glp_set_row_name</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> </span><span class="">&quot;q&quot;</span><span \
class="">);</span><span class=""> glp_set_row_bnds</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">2</span><span class="">,</span><span class=""> GLP_LO</span><span \
class="">,</span><span class=""> </span><span class="">0.0</span><span \
class="">,</span><span class=""> </span><span class="">1.0</span><span \
class="">);</span><span class=""> glp_set_row_name</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">3</span><span class="">,</span><span class=""> </span><span \
class="">&quot;r&quot;</span><span class="">);</span><span class=""> \
glp_set_row_bnds</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">3</span><span \
class="">,</span><span class=""> GLP_UP</span><span class="">,</span><span class=""> \
</span><span class="">0.0</span><span class="">,</span><span class=""> </span><span \
class="">5.0</span><span class="">);</span><span class=""> \
glp_set_row_name</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">4</span><span \
class="">,</span><span class=""> </span><span class="">&quot;s&quot;</span><span \
class="">);</span><span class=""> glp_set_row_bnds</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">4</span><span class="">,</span><span class=""> GLP_LO</span><span \
class="">,</span><span class=""> </span><span class="">0.0</span><span \
class="">,</span><span class=""> </span><span class="">5.0</span><span \
class="">);</span><span class="">

glp_add_cols</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">2</span><span \
class="">);</span><span class=""> glp_set_col_name</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">1</span><span class="">,</span><span class=""> </span><span \
class="">&quot;x&quot;</span><span class="">);</span><span class=""> \
glp_set_col_bnds</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> GLP_LO</span><span class="">,</span><span class=""> \
</span><span class="">0.0</span><span class="">,</span><span class=""> </span><span \
class="">0.0</span><span class="">);</span><span class="">  </span><span \
class="">//why GLP_LO here ?</span><span class=""> glp_set_obj_coef</span><span \
class="">(</span><span class="">lp</span><span class="">,</span><span class=""> \
</span><span class="">1</span><span class="">,</span><span class=""> </span><span \
class="">0.0</span><span class="">);</span><span class=""> \
glp_set_col_name</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> </span><span class="">&quot;x&quot;</span><span \
class="">);</span><span class=""> glp_set_col_bnds</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">2</span><span class="">,</span><span class=""> GLP_LO</span><span \
class="">,</span><span class=""> </span><span class="">0.0</span><span \
class="">,</span><span class=""> </span><span class="">0.0</span><span \
class="">);</span><span class="">  </span><span class="">//why GLP_LO here \
?</span><span class=""> glp_set_obj_coef</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> </span><span \
class="">2</span><span class="">,</span><span class=""> </span><span \
class="">-</span><span class="">1.0</span><span class="">);</span><span class="">

ia</span><span class="">[</span><span class="">1</span><span class="">]</span><span \
class=""> </span><span class="">=</span><span class=""> </span><span \
class="">1</span><span class="">,</span><span class=""> ja</span><span \
class="">[</span><span class="">1</span><span class="">]</span><span class=""> \
</span><span class="">=</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">1</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">1.0</span><span \
class="">;</span><span class=""> ia</span><span class="">[</span><span \
class="">2</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> ja</span><span class="">[</span><span \
class="">2</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">2</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">0.0</span><span \
class="">;</span><span class="">

ia</span><span class="">[</span><span class="">3</span><span class="">]</span><span \
class=""> </span><span class="">=</span><span class=""> </span><span \
class="">2</span><span class="">,</span><span class=""> ja</span><span \
class="">[</span><span class="">3</span><span class="">]</span><span class=""> \
</span><span class="">=</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">3</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">1.0</span><span \
class="">;</span><span class=""> ia</span><span class="">[</span><span \
class="">4</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> ja</span><span class="">[</span><span \
class="">4</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">4</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">0.0</span><span \
class="">;</span><span class="">

ia</span><span class="">[</span><span class="">5</span><span class="">]</span><span \
class=""> </span><span class="">=</span><span class=""> </span><span \
class="">3</span><span class="">,</span><span class=""> ja</span><span \
class="">[</span><span class="">5</span><span class="">]</span><span class=""> \
</span><span class="">=</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">5</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">0.0</span><span \
class="">;</span><span class=""> ia</span><span class="">[</span><span \
class="">6</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">3</span><span \
class="">,</span><span class=""> ja</span><span class="">[</span><span \
class="">6</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">6</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">1.0</span><span \
class="">;</span><span class="">

ia</span><span class="">[</span><span class="">7</span><span class="">]</span><span \
class=""> </span><span class="">=</span><span class=""> </span><span \
class="">4</span><span class="">,</span><span class=""> ja</span><span \
class="">[</span><span class="">7</span><span class="">]</span><span class=""> \
</span><span class="">=</span><span class=""> </span><span class="">1</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">7</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">0.0</span><span \
class="">;</span><span class=""> ia</span><span class="">[</span><span \
class="">8</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">4</span><span \
class="">,</span><span class=""> ja</span><span class="">[</span><span \
class="">8</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">2</span><span \
class="">,</span><span class=""> ar</span><span class="">[</span><span \
class="">8</span><span class="">]</span><span class=""> </span><span \
class="">=</span><span class=""> </span><span class="">1.0</span><span \
class="">;</span><span class="">

glp_load_matrix</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">8</span><span \
class="">,</span><span class=""> ia</span><span class="">,</span><span class=""> \
ja</span><span class="">,</span><span class=""> ar</span><span \
class="">);</span><span class=""> glp_simplex</span><span class="">(</span><span \
class="">lp</span><span class="">,</span><span class=""> NULL</span><span \
class="">);</span><span class=""> z </span><span class="">=</span><span class=""> \
glp_get_obj_val</span><span class="">(</span><span class="">lp</span><span \
class="">);</span><span class=""> x </span><span class="">=</span><span class=""> \
glp_get_col_prim</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">1</span><span \
class="">);</span><span class=""> y </span><span class="">=</span><span class=""> \
glp_get_col_prim</span><span class="">(</span><span class="">lp</span><span \
class="">,</span><span class=""> </span><span class="">2</span><span \
class="">);</span><span class="">

</span><span class="">//printf(&quot;\nz = %g; x1 = %g; x2 = %g; x3 = %g\n&quot;,z, \
x1, x2, x3);</span><span class=""> cout </span><span class="">&lt;&lt;</span><span \
class="">&quot;z = &quot;</span><span class=""> </span><span \
class="">&lt;&lt;</span><span class=""> z </span><span class="">&lt;&lt;</span><span \
class=""> </span><span class="">&quot;  x = &quot;</span><span class=""> </span><span \
class="">&lt;&lt;</span><span class=""> x </span><span class="">&lt;&lt;</span><span \
class=""> </span><span class="">&quot; y = &quot;</span><span class=""> </span><span \
class="">&lt;&lt;</span><span class=""> y</span><span class="">;</span><span \
class=""> cout </span><span class="">&lt;&lt;</span><span class=""> endl</span><span \
class="">;</span><span class=""> glp_delete_prob</span><span class="">(</span><span \
class="">lp</span><span class="">);</span><span class=""> </span><span \
class="">return</span><span class=""> </span><span class="">0</span><span \
class="">;</span><span class=""> </span><span class="">}</span></code></pre><br>-- \
<br><div dir="ltr">Praying for your good health,<div><br></div><div><div><div><b>Amit \
Gurung</b>,</div></div></div><div>Contact   : +91 8974008902</div></div> </div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic