Mercurial > octave
changeset 30019:593796903cf4
glpk: prefer passing variables by reference where possible
* __glpk__.cc (glpk): Pass time, status, fmin, and par variables by
reference instead of using pointers.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 19 Aug 2021 23:01:40 -0400 |
parents | 09d97b7bc904 |
children | 5ac6440c053d |
files | libinterp/dldfcn/__glpk__.cc |
diffstat | 1 files changed, 42 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/dldfcn/__glpk__.cc Thu Aug 19 22:57:36 2021 -0400 +++ b/libinterp/dldfcn/__glpk__.cc Thu Aug 19 23:01:40 2021 -0400 @@ -82,15 +82,15 @@ glpk (int sense, int n, int m, double *c, int nz, int *rn, int *cn, double *a, double *b, char *ctype, int *freeLB, double *lb, int *freeUB, double *ub, int *vartype, int isMIP, int lpsolver, - int save_pb, int scale, const control_params *par, - double *xmin, double *fmin, int *status, - double *lambda, double *redcosts, double *time) + int save_pb, int scale, const control_params& par, + double *xmin, double& fmin, int& status, + double *lambda, double *redcosts, double& time) { int typx = 0; int errnum = 0; - *time = 0.0; - *status = -1; // Initialize status to "bad" value + time = 0.0; + status = -1; // Initialize status to "bad" value clock_t t_start = clock (); @@ -181,34 +181,34 @@ } // scale the problem data - if (! par->presol || lpsolver != 1) + if (! par.presol || lpsolver != 1) glp_scale_prob (lp, scale); // build advanced initial basis (if required) - if (lpsolver == 1 && ! par->presol) + if (lpsolver == 1 && ! par.presol) glp_adv_basis (lp, 0); // For MIP problems without a presolver, a first pass with glp_simplex // is required if ((! isMIP && lpsolver == 1) - || (isMIP && ! par->presol)) + || (isMIP && ! par.presol)) { glp_smcp smcp; glp_init_smcp (&smcp); - smcp.msg_lev = par->msglev; - smcp.meth = par->dual; - smcp.pricing = par->price; - smcp.r_test = par->rtest; - smcp.tol_bnd = par->tolbnd; - smcp.tol_dj = par->toldj; - smcp.tol_piv = par->tolpiv; - smcp.obj_ll = par->objll; - smcp.obj_ul = par->objul; - smcp.it_lim = par->itlim; - smcp.tm_lim = par->tmlim; - smcp.out_frq = par->outfrq; - smcp.out_dly = par->outdly; - smcp.presolve = par->presol; + smcp.msg_lev = par.msglev; + smcp.meth = par.dual; + smcp.pricing = par.price; + smcp.r_test = par.rtest; + smcp.tol_bnd = par.tolbnd; + smcp.tol_dj = par.toldj; + smcp.tol_piv = par.tolpiv; + smcp.obj_ll = par.objll; + smcp.obj_ul = par.objul; + smcp.it_lim = par.itlim; + smcp.tm_lim = par.tmlim; + smcp.out_frq = par.outfrq; + smcp.out_dly = par.outdly; + smcp.presolve = par.presol; errnum = glp_simplex (lp, &smcp); } @@ -216,15 +216,15 @@ { glp_iocp iocp; glp_init_iocp (&iocp); - iocp.msg_lev = par->msglev; - iocp.br_tech = par->branch; - iocp.bt_tech = par->btrack; - iocp.tol_int = par->tolint; - iocp.tol_obj = par->tolobj; - iocp.tm_lim = par->tmlim; - iocp.out_frq = par->outfrq; - iocp.out_dly = par->outdly; - iocp.presolve = par->presol; + iocp.msg_lev = par.msglev; + iocp.br_tech = par.branch; + iocp.bt_tech = par.btrack; + iocp.tol_int = par.tolint; + iocp.tol_obj = par.tolobj; + iocp.tm_lim = par.tmlim; + iocp.out_frq = par.outfrq; + iocp.out_dly = par.outdly; + iocp.presolve = par.presol; errnum = glp_intopt (lp, &iocp); } @@ -232,7 +232,7 @@ { glp_iptcp iptcp; glp_init_iptcp (&iptcp); - iptcp.msg_lev = par->msglev; + iptcp.msg_lev = par.msglev; errnum = glp_interior (lp, &iptcp); } @@ -240,20 +240,20 @@ { if (isMIP) { - *status = glp_mip_status (lp); - *fmin = glp_mip_obj_val (lp); + status = glp_mip_status (lp); + fmin = glp_mip_obj_val (lp); } else { if (lpsolver == 1) { - *status = glp_get_status (lp); - *fmin = glp_get_obj_val (lp); + status = glp_get_status (lp); + fmin = glp_get_obj_val (lp); } else { - *status = glp_ipt_status (lp); - *fmin = glp_ipt_obj_val (lp); + status = glp_ipt_status (lp); + fmin = glp_ipt_obj_val (lp); } } @@ -293,7 +293,7 @@ } } - *time = (clock () - t_start) / CLOCKS_PER_SEC; + time = (clock () - t_start) / CLOCKS_PER_SEC; glp_delete_prob (lp); // Request that GLPK free all memory resources. @@ -615,9 +615,9 @@ cn.fortran_vec (), a.fortran_vec (), b, ctype, freeLB.fortran_vec (), lb, freeUB.fortran_vec (), ub, vartype.fortran_vec (), isMIP, lpsolver, - save_pb, scale, &par, xmin.fortran_vec (), &fmin, - &status, lambda.fortran_vec (), - redcosts.fortran_vec (), &time); + save_pb, scale, par, xmin.fortran_vec (), fmin, + status, lambda.fortran_vec (), + redcosts.fortran_vec (), time); octave_scalar_map extra;