void REPORT_solution(lprec *lp, int columns) { int i, j, n; LPSREAL value; presolveundorec *psundo = lp->presolve_undo; MYBOOL NZonly = (MYBOOL) ((lp->print_sol & AUTOMATIC) > 0); if(lp->outstream == NULL) return; fprintf(lp->outstream, "\nActual values of the variables:\n"); if(columns <= 0) columns = 2; n = 0; for(i = 1; i <= psundo->orig_columns; i++) { j = psundo->orig_rows + i; value = get_var_primalresult(lp, j); if(NZonly && (fabs(value) < lp->epsprimal)) continue; n = (n+1) % columns; fprintf(lp->outstream, "%-20s %12g", get_origcol_name(lp, i), (double) value); if(n == 0) fprintf(lp->outstream, "\n"); else fprintf(lp->outstream, " "); } fflush(lp->outstream); } /* REPORT_solution */
int main( ) { double x[state_dim+1]; double objective[state_dim+1] = {0, -2.5, -5.0, -3.4}; double ieq_coeff[ieq_dim] = {425, 400, 600}; double ieq_matrix[ieq_dim][state_dim+1] = {{0,2,10,4}, {0,6,5,8}, {0, 7, 10, 8}}; double eq_coeff[eq_dim]; // = {30}; double eq_matrix[eq_dim][state_dim+1]; // lprec *lp; // lp = make_lp(eq_dim+ieq_dim, state_dim); set_obj_fn (lp, objective); for(int i=0; i<ieq_dim; i++) { add_constraint( lp, ieq_matrix[i], LE, ieq_coeff[i] ); } for(int i=0; i<eq_dim; i++) { add_constraint( lp, eq_matrix[i], EQ, eq_coeff[i] ); } // set_verbose(lp, 0); set_presolve(lp, PRESOLVE_ROWS | PRESOLVE_COLS | PRESOLVE_LINDEP, get_presolveloops(lp)); solve(lp); // std::cout << "f : " << get_objective(lp) << std::endl; std::cout << "x :" ; double col0 = get_Norig_columns(lp); double row0 = get_Norig_rows(lp); for(int i = 1; i <= col0; i++) { double _x = get_var_primalresult(lp, row0 + i); std::cout << " " << _x ; } std::cout << std::endl; }
double CLPLpsolve::getPrimalVariableValue(int index) { return get_var_primalresult(m_env, index + 1); }