Dear Andrew Many thanks for the information about column bounds (posting "non-negativity and structural vars").
Here are some suggestions regarding documentation in the version 4.28 API reference. If my understanding is incorrect, perhaps you could indicate the mistake. --------------------------------- page 59 --------------------------------- "LPX_E_FAULT the solver can't start the search because either the problem has no rows and/or no columns, or some row has non-zero objective coefficient." Is the second part of the explanation correct? Can a row have an objective coefficient? Should this be ".. or some row has no non-zero constraint coefficients specified." --------------------------------- page 61 --------------------------------- section 2.9.1 glp_set_col_kind documentation It could be useful to add (I believe this is correct): "If a column is set to 'GLP_BV', any default, prior, or subsequent bounds set on that variable will be ignored. If the column is later set to 'GLP_CV' or 'GLP_IV', then such bounds will apply. If a column is set to 'GLP_IV', its bounds must be exact integer numbers with no tolerance, such that the condition 'bnd == floor(bnd)' would hold." --------------------------------- pages 23-24 --------------------------------- section 2.2.10 glp_set_col_bnds documentation It could be useful to add: "If a particular column bound is not set, then the solver behaves as if 'glp_set_col_bnds(lp, j, GLP_FX, 0.0, 0.0)' had been called." --------------------------------- page 61 --------------------------------- section 2.9.1 glp_set_col_kind documentation section 2.9.2 glp_get_col_kind documentation It could be useful to add (2 places): "Note that these column kinds are mutually exclusive." The reason for this comment is that this situation contrasts with the behavior of 'glp_get_num_ints', for instance. --------------------------------- page 129 --------------------------------- section 3.3.4 glp_term_hook documentation It could be useful to add: "Note that 'glp_term_out' applies only to terminal output and not to intercepted output." --------------------------------- pages 12-13 --------------------------------- This one is just for consideration -- I can understand if you decide to keep the manual short and simple. However it might improve the appeal of GLPK to offer some sample code without C arrays! "C++ programmers can substitute the static C arrays 'ia', 'ja', and 'ar' in 'sample.c' as follows: #include <vector> // Standard Template Library sequence container const int offset = 1; // GLPK ignores element zero std::vector<int> via(offset); // index i vector std::vector<int> vja(offset); // index j vector std::vector<double> var(offset); // coefficient a_ij vector via.push_back(1); via.push_back(1); via.push_back(1.0); // a[1,1] = 1.0 via.push_back(1); via.push_back(2); via.push_back(1.0); // a[1,2] = 1.0 // etc glp_load_matrix(lp, via.size() - offset, &via[0], &vja[0], &var[0]); The call to 'glp_load_matrix' is passed the first element addresses of the three vectors, which then, in this context, behave exactly like C arrays." with best wishes Robbie Morrison PhD student -- policy-oriented energy system simulation Technical University of Berlin (TU-Berlin), Germany University email (redirected) : [EMAIL PROTECTED] Webmail (preferred) : [EMAIL PROTECTED] [from IMAP client] _______________________________________________ Help-glpk mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-glpk
