Miguel,

Following are some of the mistakes in your program.

lpx_set_row_name(lp,1,"p");
lpx_set_row_bnds(lp,1, LPX_UP , 0.0 , 100.0);
lpx_set_row_name(lp,1,"q");
 lpx_set_row_bnds(lp,1, LPX_UP , 0.0 , 600.0);

[1]. You are not incrementing row index, in both cases its 1. There
are similar mistake elsewhere in the program. Make sure that you
increment row index and column index.

 lpx_set_row_bnds(lp,1, LPX_FX , 0.0 , 400.0);

[2]. Here both lower bound and upper bound should be 400.0. Refer GLPK
documentation and see usage of above function.

I hope you will be able to fix the program. You can print and verify
the LP model using function :

        /* Verify LP file. */
        lpx_write_cpxlp(lp, "output.lp");

I had some spare time, so I wrote the complete program, see
attachment, but only after you try fixing it yourselves first.



On 7/15/07, miguel montoya <[EMAIL PROTECTED]> wrote:
Hello everybody, i want to solve the following problem

Maximize Z=10x1+6x2+4x3
Subject to
x1+x2+x3+<=100
10x1+4x2+5x3<=600
2x1+2x2+6x3<=300
8x1+3x2+5x3=400
5x1+4x2+8x3=600

where all variables are non-negative

this is the routine in C

LPX *lp
int ia[1+1000], ja[1+1000];
double ar[1+1000],Z,x1,x2,x3;
lp=lpx_create_prob();
lpx_set_obj_dir(lp,LPX_MAX),
lpx_add_rows(lp,5);
lpx_set_row_name(lp,1,"p");
lpx_set_row_bnds(lp,1, LPX_UP , 0.0 , 100.0);
lpx_set_row_name(lp,1,"q");
 lpx_set_row_bnds(lp,1, LPX_UP , 0.0 , 600.0);
lpx_set_row_name(lp,1,"r");
 lpx_set_row_bnds(lp,1, LPX_UP , 0.0 , 300.0);
lpx_set_row_name(lp,1,"s");
 lpx_set_row_bnds(lp,1, LPX_FX , 0.0 , 400.0);
lpx_set_row_name(lp,1,"t");
 lpx_set_row_bnds(lp,1, LPX_FX , 0.0 , 600.0);
lpx_add_cols(lp,3);
lpx_set_col_name(lp,1,"x1");
lpx_set_col_bnds(lp,1,LPX_LO, 0.0, 0.0);
lpx_set_obj_coef(lp,1,10.0);
lpx_set_col_name(lp,2,"x2");
 lpx_set_col_bnds(lp,2,LPX_LO, 0.0, 0.0);
 lpx_set_obj_coef(lp,1,6.0);
lpx_set_col_name(lp,3,"x3");
 lpx_set_col_bnds(lp,3,LPX_LO, 0.0, 0.0);
 lpx_set_obj_coef(lp,3,4.0);
ia[1]=1, ja=[1]=1, ar[1]=1.0;
ia[2]=1, ja=[2]=2, ar[2]=1.0 ;
ia[3]=1, ja=[3]=3, ar[3]=1.0 ;
......................................
.....................................
......................................
........................................
lpx_load_matrix(lp,12,ia,ja,ar);

I want to know if the routine in C is right ????????????

Thanks

--


_______________________________________________
Help-glpk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-glpk




--
Vijay Patil
/* 
# Program to create following LP model.

Maximize Z = 10 x1 + 6 x2 + 4 x3

Subject to
        x1 + x2 + x3 <= 100
        10x1 + 4x2 + 5x3 <= 600
        2x1 + 2x2 + 6x3 <= 300
        8x1 + 3x2 + 5x3 = 400
        5x1 + 4x2 + 8x3 = 600

*/

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

#include"glpk.h"

int main() 
{

        LPX *lp;
        int ia[1+1000], ja[1+1000];
        double ar[1+1000],Z,x1,x2,x3;

        lp = lpx_create_prob();
        lpx_set_obj_dir(lp,LPX_MAX);

        /* Add 5 constraints/rows. */
        lpx_add_rows(lp,5);

        lpx_set_row_name(lp, 1, "p");
        lpx_set_row_bnds(lp, 1, LPX_UP , 0.0 , 100.0);

        lpx_set_row_name(lp, 2, "q");
        lpx_set_row_bnds(lp, 2, LPX_UP , 0.0 , 600.0);

        lpx_set_row_name(lp, 3, "r");
        lpx_set_row_bnds(lp, 3, LPX_UP , 0.0 , 300.0);

        lpx_set_row_name(lp, 4, "s");
        lpx_set_row_bnds(lp, 4, LPX_FX , 400.0 , 400.0);

        lpx_set_row_name(lp, 5, "t");
        lpx_set_row_bnds(lp, 5, LPX_FX , 600.0, 600.0);

        /* Add 3 variables/columns. */
        lpx_add_cols(lp, 3);

        lpx_set_col_name(lp, 1, "x1");
        lpx_set_col_bnds(lp, 1, LPX_LO, 0.0, 0.0);
        lpx_set_obj_coef(lp, 1, 10.0);

        lpx_set_col_name(lp, 2, "x2");
        lpx_set_col_bnds(lp, 2, LPX_LO, 0.0, 0.0);
        lpx_set_obj_coef(lp, 2, 6.0);

        lpx_set_col_name(lp, 3, "x3");
        lpx_set_col_bnds(lp, 3, LPX_LO, 0.0, 0.0);
        lpx_set_obj_coef(lp, 3, 4.0);

        ia[1]=1, ja[1]=1, ar[1]=1.0;
        ia[2]=1, ja[2]=2, ar[2]=1.0 ;
        ia[3]=1, ja[3]=3, ar[3]=1.0 ;
        ia[4]=2, ja[4]=1, ar[4]=10.0;
        ia[5]=2, ja[5]=2, ar[5]=4.0 ;
        ia[6]=2, ja[6]=3, ar[6]=5.0 ;

        ia[7]=3, ja[7]=1, ar[7]=2.0;
        ia[8]=3, ja[8]=2, ar[8]=2.0 ;
        ia[9]=3, ja[9]=3, ar[9]=6.0 ;

        ia[10]=4, ja[10]=1, ar[10]=8.0;
        ia[11]=4, ja[11]=2, ar[11]=3.0 ;
        ia[12]=4, ja[12]=3, ar[12]=5.0 ;

        ia[13]=5, ja[13]=1, ar[13]=5.0;
        ia[14]=5, ja[14]=2, ar[14]=4.0 ;
        ia[15]=5, ja[15]=3, ar[15]=8.0 ;

        lpx_load_matrix(lp, 15, ia, ja, ar);

        /* Verify LP file. */
        lpx_write_cpxlp(lp, "output.lp");

        lpx_simplex(lp);

        return 0;
}
_______________________________________________
Help-glpk mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-glpk

Reply via email to