Attribute VB_Name = "lp" Option Explicit ' Minimize z = -.5 * x1 + .5 * x2 - x3 + 1 ' ' subject to ' 0.0 <= x1 - .5 * x2 <= 0.2 ' -x2 + x3 <= 0.4 ' where, ' 0.0 <= x1 <= 0.5 ' 0.0 <= x2 <= 0.5 ' 0.0 <= x3 <= 0.5 Sub lp() Dim lp As Long Dim smcp As glp_smcp Dim ret As Long Dim name(36) As Byte Dim ind(2) As Long Dim val(2) As Double ' Create problem lp = glp_create_prob() str2bytes "Linear Problem", name glp_set_prob_name lp, name(0) ' Create columns glp_add_cols lp, 3 str2bytes "x1", name glp_set_col_name lp, 1, name(0) glp_set_col_kind lp, 1, GLP_CV glp_set_col_bnds lp, 1, GLP_DB, 0#, 0.5 str2bytes "x2", name glp_set_col_name lp, 2, name(0) glp_set_col_kind lp, 2, GLP_CV glp_set_col_bnds lp, 2, GLP_DB, 0#, 0.5 str2bytes "x3", name glp_set_col_name lp, 3, name(0) glp_set_col_kind lp, 3, GLP_CV glp_set_col_bnds lp, 3, GLP_DB, 0#, 0.5 ' Create rows glp_add_rows lp, 2 str2bytes "c1", name glp_set_row_name lp, 1, name(0) glp_set_row_bnds lp, 1, GLP_DB, 0, 0.2 ind(1) = 1 ind(2) = 2 val(1) = 1# val(2) = -0.5 glp_set_mat_row lp, 1, 2, ind(0), val(0) str2bytes "c2", name glp_set_row_name lp, 2, name(0) glp_set_row_bnds lp, 2, GLP_UP, 0, 0.4 ind(1) = 2 ind(2) = 3 val(1) = -1 val(2) = 1 glp_set_mat_row lp, 2, 2, ind(0), val(0) ' Define objective str2bytes "obj", name glp_set_obj_name lp, name(0) glp_set_obj_dir lp, GLP_MIN glp_set_obj_coef lp, 0, 1# glp_set_obj_coef lp, 1, -0.5 glp_set_obj_coef lp, 2, 0.5 glp_set_obj_coef lp, 3, -1 ' Write model to file str2bytes "c:\temp\lp.lp", name ret = glp_write_lp(lp, 0, name(0)) ' Solve model ret = glp_init_smcp(smcp) ret = glp_simplex(lp, smcp) 'Retrieve solution If ret = 0 Then write_lp_solution (lp) End If glp_delete_prob lp End Sub