help-glpk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-glpk] GLPK help for solving a linear optimization problem


From: xypron
Subject: Re: [Help-glpk] GLPK help for solving a linear optimization problem
Date: Thu, 28 May 2009 12:58:30 -0700 (PDT)

Hello Sentjuti

Senjuti Basu Roy wrote:
> 
> I am a new user of GLPK, trying to use it using Java.
> I want to solve optimization problem like the following:
> ...
> 

Please find a working example below.

Best regards

Xypron

package de.xypron.test;

import org.gnu.glpk.GLPK;
import org.gnu.glpk.GLPKConstants;
import org.gnu.glpk.SWIGTYPE_p_double;
import org.gnu.glpk.SWIGTYPE_p_int;
import org.gnu.glpk.glp_iocp;
import org.gnu.glpk.glp_prob;
import org.gnu.glpk.glp_smcp;

public class ExampleRoy {
//      Minimize z = (x1-x2) /2 + (1-(x1-x2)) = -.5 * x1 + .5 * x2 + 1
//
//      subject to
//      0.0<= x1 - x2 <= 0.2
//      where,
//      0.0 <= x1 <= 0.5
//      0.0 <= x2 <= 0.5
        
        static { System.loadLibrary("glpk_4_38_java"); }
        public static void main(String[] arg)
        {
                glp_prob lp;
                glp_smcp parm;
                SWIGTYPE_p_int ind;
                SWIGTYPE_p_double val;
                @SuppressWarnings("unused")
                int ret;

//      Create problem          
                lp = GLPK.glp_create_prob();
                System.out.printf("Problem created\n");
                GLPK.glp_set_prob_name(lp, "myProblem");

//      Define columns
                GLPK.glp_add_cols(lp, 2);
                GLPK.glp_set_col_name(lp, 1, "x1");
                GLPK.glp_set_col_kind(lp, 1, GLPKConstants.GLP_CV);
                GLPK.glp_set_col_bnds(lp, 1, GLPKConstants.GLP_DB, 0, .5);
                GLPK.glp_set_col_name(lp, 2, "x2");
                GLPK.glp_set_col_kind(lp, 2, GLPKConstants.GLP_CV);
                GLPK.glp_set_col_bnds(lp, 2, GLPKConstants.GLP_DB, 0, .5);

//      Create constraints
                GLPK.glp_add_rows(lp, 2);

                GLPK.glp_set_row_name(lp, 1, "c1");
                GLPK.glp_set_row_bnds(lp, 1, GLPKConstants.GLP_DB, 0, 0.2);
                ind = GLPK.new_intArray(3);
                GLPK.intArray_setitem(ind, 1, 1);
                GLPK.intArray_setitem(ind, 2, 2);
                val = GLPK.new_doubleArray(3);
                GLPK.doubleArray_setitem(val, 1, 1.);
                GLPK.doubleArray_setitem(val, 2, -1.);
                GLPK.glp_set_mat_row(lp, 1, 2, ind, val);

//      Define objective 
                GLPK.glp_set_obj_name(lp, "z");
                GLPK.glp_set_obj_dir(lp, GLPKConstants.GLP_MIN);
                GLPK.glp_set_obj_coef(lp, 0, 1.);
                GLPK.glp_set_obj_coef(lp, 1, -.5);
                GLPK.glp_set_obj_coef(lp, 2, .5);

//      solve model
                parm = new glp_smcp();
                GLPK.glp_init_smcp(parm);
                ret = GLPK.glp_simplex(lp, parm);
                
//      Retrieve solution
                write_lp_solution(lp);
                GLPK.glp_write_sol(lp, "examples/ExampleRoy.sol");
                ret = GLPK.glp_write_lp(lp, null, "examples/ExampleRoy.lp");
                
                // free memory
                GLPK.glp_delete_prob(lp);
        }       
        
        /**
         * write simplex solution
         * @param lp problem
         */
        static void write_lp_solution(glp_prob lp)
        {
                int i;
                int n;
                String name;
                double val;
                
                name = GLPK.glp_get_obj_name(lp);
                val  = GLPK.glp_get_obj_val(lp);
                System.out.print(name);
                System.out.print(" = ");
                System.out.println(val);
                n = GLPK.glp_get_num_cols(lp);
                for(i=1; i <= n; i++)
                {
                        name = GLPK.glp_get_col_name(lp, i);
                        val  = GLPK.glp_get_col_prim(lp, i);
                        System.out.print(name);
                        System.out.print(" = ");
                        System.out.println(val);
                }
        }
}

-- 
View this message in context: 
http://www.nabble.com/GLPK-help-for-solving-a-linear-optimization-problem-tp23752080p23768913.html
Sent from the Gnu - GLPK - Help mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]