317 #define ladPRIMFEAS 1<<0 318 #define ladPRIMALCHK 1<<1 319 #define ladPFQUIET 1<<2 320 #define ladDUALFEAS 1<<3 321 #define ladDUALCHK 1<<4 322 #define ladDFQUIET 1<<5 323 #define ladDUALS 1<<6 324 #define ladPRIMALS 1<<7 325 #define ladFACTOR 1<<8 326 #define ladEXPAND 1<<9 378 #define vstatBFX 1<<0 379 #define vstatBUB 1<<1 381 #define vstatBLB 1<<3 382 #define vstatBFR 1<<4 383 #define vstatNBFX 1<<5 384 #define vstatNBUB 1<<6 385 #define vstatNBLB 1<<7 386 #define vstatNBFR 1<<8 388 #define vstatBUUB 1<<10 389 #define vstatBLLB 1<<11 396 #define vstatNOPIVOT ((flags) 1<<(sizeof(flags)*8-2)) 397 #define vstatNOPER ((flags) 1<<(sizeof(flags)*8-3)) 398 #define vstatNOLOAD ((flags) 1<<(sizeof(flags)*8-4)) 401 (vstatBFX|vstatBUUB|vstatBUB|vstatB|vstatBLB|vstatBLLB|vstatBFR) 402 #define vstatNONBASIC (vstatNBFX|vstatNBUB|vstatNBLB) 403 #define vstatEXOTIC (vstatSB|vstatNBFR) 405 #define vstatSTATUS (vstatBASIC|vstatNONBASIC|vstatEXOTIC) 406 #define vstatQUALS (vstatNOPIVOT|vstatNOPER|vstatNOLOAD) 414 #define VALID_STATUS(zz_status_zz) \ 415 (zz_status_zz == vstatBFX || zz_status_zz == vstatBUB || \ 416 zz_status_zz == vstatB || zz_status_zz == vstatBLB || \ 417 zz_status_zz == vstatBFR || \ 418 zz_status_zz == vstatNBFX || zz_status_zz == vstatNBUB || \ 419 zz_status_zz == vstatNBLB || zz_status_zz == vstatNBFR || \ 420 zz_status_zz == vstatSB) 495 #define lpctlNOFREE 1<<0 496 #define lpctlONLYFREE 1<<1 497 #define lpctlUBNDCHG 1<<2 498 #define lpctlLBNDCHG 1<<3 499 #define lpctlRHSCHG 1<<4 500 #define lpctlOBJCHG 1<<5 501 #define lpctlACTVARSIN 1<<6 502 #define lpctlINITACTVAR 1<<7 503 #define lpctlINITACTCON 1<<8 505 #define lpctlACTVARSOUT 1<<10 507 #define lpctlDYVALID 1<<11 679 #if defined(DYLP_INTERNAL) || defined(BONSAIG) 687 # define BND_TOLER dy_tols->pfeas 691 # define INF_TOLER dy_tols->inf 694 #define withintol(zz_val_zz,zz_tgt_zz,zz_tol_zz) \ 695 (fabs((zz_val_zz)-(zz_tgt_zz)) <= zz_tol_zz) 697 #define setcleanzero(zz_val_zz,zz_tol_zz) \ 698 if (fabs(zz_val_zz) < zz_tol_zz) zz_val_zz = 0 700 #define atbnd(zz_val_zz,zz_bnd_zz) \ 701 ((fabs(zz_bnd_zz) < INF_TOLER) && \ 702 (fabs((zz_val_zz)-(zz_bnd_zz)) < BND_TOLER*(1.0+fabs(zz_bnd_zz)))) 704 #define belowbnd(zz_val_zz,zz_bnd_zz) \ 705 ((fabs(zz_bnd_zz) < INF_TOLER) ? \ 706 (((zz_bnd_zz)-(zz_val_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \ 707 (zz_val_zz < zz_bnd_zz)) 709 #define abovebnd(zz_val_zz,zz_bnd_zz) \ 710 ((fabs(zz_bnd_zz) < INF_TOLER) ? \ 711 (((zz_val_zz)-(zz_bnd_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \ 712 (zz_val_zz > zz_bnd_zz)) 714 #define withinbnds(zz_lb_zz,zz_val_zz,zz_ub_zz) \ 715 (!abovebnd(zz_val_zz,zz_ub_zz) && !belowbnd(zz_val_zz,zz_lb_zz)) 736 #define snaptol1(zz_tgt_zz) (dy_tols->zero*(1.0+(zz_tgt_zz))) 738 #define snaptol2(zz_tgt_zz,zz_dst_zz) \ 739 (dy_tols->zero*(1.0+maxx((zz_tgt_zz),(zz_dst_zz)))) 741 #define snaptol3(zz_tol_zz,zz_tgt_zz,zz_dst_zz) \ 742 ((zz_tol_zz)*(1.0+maxx((zz_tgt_zz),(zz_dst_zz)))) 1109 struct {
int strat ; } ppsel ;
1287 #define DYSTATS_MAXDEGEN 25 1288 #define DYSTATS_HISTBINS 37 1301 int *deactcnt ; } vars ;
1328 int promote ; } pmulti ;
1329 struct {
int prevpiv ;
1349 struct {
int iters ;
1351 struct {
int iters ;
1353 struct {
int iters ;
1358 #ifdef DYLP_INTERNAL 1368 #define ACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] > 0) 1369 #define INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] <= 0) 1370 #define LOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] == 0) 1371 #define MARK_UNLOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = -1) 1372 #define MARK_INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = 0) 1374 #define ACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] > 0) 1375 #define INACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] <= 0) 1376 #define LOADABLE_VAR(zz_vndx_zz) \ 1377 ((dy_origvars[(zz_vndx_zz)] < 0) && \ 1378 flgoff(((flags) -dy_origvars[(zz_vndx_zz)]),vstatNOLOAD|vstatNBFX)) 1379 #define MARK_INACTIVE_VAR(zz_vndx_zz,zz_val_zz) \ 1380 (dy_origvars[(zz_vndx_zz)] = (zz_val_zz)) 1545 bool init_dse ; } simplex ;
1549 double ratio ; } ubnd ;
1550 struct {
bool installed ;
1555 double *p2obj ; } p1obj ;
1556 struct {
struct {
int loadable ;
1557 int unloadable ; } cons ;
1558 struct {
int loadable ;
1559 int unloadable ; } vars ;
1560 bool forcedfull ; } sys ;
1561 struct {
int iters ;
1563 struct {
int iters ;
1565 struct {
int iters ;
1567 struct {
int iters ;
1573 int dinf ; } basis ;
1577 struct {
double piv ;
1581 double fd ; } lastz ;
1582 struct {
double norm1 ;
1585 int maxndx ; } prim ;
1586 struct {
double norm1 ;
1589 int maxndx ; } dual ;
1702 extern bool dy_retained ;
1704 extern lp_struct *dy_lp ;
1708 extern int *dy_actvars,*dy_actcons,*dy_origvars,*dy_origcons,
1709 *dy_basis,*dy_var2basis,
1710 *dy_brkout,*dy_degenset,*dy_ddegenset ;
1711 extern flags *dy_status ;
1712 extern double *dy_x,*dy_xbasic,*dy_y,*dy_cbar,*dy_gamma,*dy_rho ;
1713 extern bool *dy_frame ;
1721 extern bool dy_initlclsystem(
lpprob_struct *orig_lp,
bool hotstart) ;
1722 extern void dy_freelclsystem(
lpprob_struct *orig_lp,
bool freesys) ;
1723 extern bool dy_isscaled(
void) ;
1724 extern void dy_scaling_vectors(
const double **rscale,
const double **cscale) ;
1751 dy_pivot(
int xipos,
double abarij,
double maxabarj) ;
1752 extern double dy_chkpiv(
double abarij,
double maxabarj) ;
1753 extern void dy_btran(
double *col), dy_ftran(
double *col,
bool save) ;
1754 extern bool dy_setpivparms(
int curdelta,
int mindelta) ;
1755 extern char *dy_prtpivparms(
int lvl) ;
1768 extern bool dy_loadcon(
consys_struct *orig_sys,
int orig_ndx,
1769 bool genvars,
int *inactndxs) ;
1770 extern bool dy_deactNBLogPrimCon(
consys_struct *orig_sys,
int i),
1775 int cnt,
int *ocndxs,
int **inactvars) ;
1783 extern bool dy_actNBPrimArch(
consys_struct *orig_sys,
int ovndx),
1785 int cnt,
int *ovndxs),
1795 extern dyret_enum dy_primalin(
int initcol,
int scan,
int *xjndx,
int *nextcol),
1796 dy_primalpivot(
int xjndx,
int indir,
int *xindx,
int *outdir,
1797 double *abarij,
double *delta,
int *xjcand),
1798 dy_degenout(
int level) ;
1805 int xjcand,
int xicand),
1806 dy_accchk(
flags *checks) ;
1813 double abarij,
double maxabarij),
1814 dy_dealWithPunt(
void) ;
1815 extern bool dy_clrpivrej(
int *entries) ;
1816 extern void dy_checkpivtol(
void) ;
1817 extern void dy_initpivrej(
int sze), dy_freepivrej(
void) ;
1825 extern bool dy_initp1obj(
void),dy_swapobjs(
dyphase_enum phase) ;
1832 dy_dualout(
int *xindx),
1833 dy_dualpivot(
int xindx,
int outdir,
1834 int *p_xjndx,
int *p_indir,
double *p_cbarj,
1835 double *p_abarij,
double *p_delta,
int *xicand),
1836 dy_dualdegenout(
int level) ;
1867 #ifdef DYLP_INTERNAL 1870 extern dyret_enum dy_updateprimals(
int j,
double deltaj,
double *p_abarj) ;
1871 extern bool dy_reducerhs(
double *rhs,
bool init),
1872 dy_calcprimals(
void),dy_calccbar(
void) ;
1873 extern void dy_calcduals(
void),dy_setbasicstatus(
void),
1874 dy_dseinit(
void),dy_pseinit(
void) ;
1875 extern double dy_calcobj(
void),dy_calcdualobj(
void),dy_calcpinfeas(
void) ;
1878 #ifdef DYLP_PARANOIA 1880 extern bool dy_chkstatus(
int vndx),
1882 extern void dy_chkdual(
int lvl) ;
1890 flags **p_dst_status,
1891 int src_statuslen,
flags *src_status) ;
1899 double **p_ocbar,
int *p_nbcnt,
int **p_nbvars),
1901 double nubi,
double xi,
double nlbi,
1902 int nbcnt,
int *nbvars,
1903 double *cbar,
double *p_upeni,
double *p_dpeni) ;
1920 int *p_numRays,
double ***p_rays) ;
1922 int *p_numRays,
double ***p_rays,
bool trueDuals) ;
1935 double **p_xB,
int **p_indB) ;
1949 #ifdef DYLP_INTERNAL 1951 extern void dy_logpivot(
dyret_enum result,
int xjndx,
int indir,
double cbarj,
1952 int xindx,
int outdir,
double abarij,
double delta) ;
1953 extern const char *dy_prtdyret(
dyret_enum retcode) ;
1977 #ifdef DYLP_INTERNAL
char * dy_prtvstat(flags status)
bool dy_abarj(lpprob_struct *orig_lp, int tgt_j, double **p_abarj)
void dy_initstats(lpstats_struct **p_lpstats, consys_struct *orig_sys)
void dy_rowPrimals(lpprob_struct *orig_lp, double **p_xB, int **p_indB)
void dy_colPrimals(lpprob_struct *orig_lp, double **p_x)
bool dy_pricedualpiv(lpprob_struct *orig_lp, int oxindx, double nubi, double xi, double nlbi, int nbcnt, int *nbvars, double *cbar, double *p_upeni, double *p_dpeni)
void dy_setprintopts(int lvl, lpopts_struct *opts)
const char * dy_prtlpphase(dyphase_enum phase, bool abbrv)
bool dy_dupbasis(int dst_basissze, basis_struct **p_dst_basis, basis_struct *src_basis, int dst_statussze, flags **p_dst_status, int src_statuslen, flags *src_status)
void dy_colDuals(lpprob_struct *orig_lp, double **p_cbar, bool trueDuals)
void dy_rowDuals(lpprob_struct *orig_lp, double **p_y, bool trueDuals)
const char * dy_prtlpret(lpret_enum lpret)
bool dy_betaj(lpprob_struct *orig_lp, int tgt_j, double **p_betaj)
void dy_logPrimals(lpprob_struct *orig_lp, double **p_logx)
void dy_defaults(lpopts_struct **opts, lptols_struct **tols)
bool dy_pricenbvars(lpprob_struct *orig_lp, flags priceme, double **p_ocbar, int *p_nbcnt, int **p_nbvars)
bool dy_dualRays(lpprob_struct *orig_lp, bool fullRay, int *p_numRays, double ***p_rays, bool trueDuals)
bool dy_primalRays(lpprob_struct *orig_lp, int *p_numRays, double ***p_rays)
void dy_logStatus(lpprob_struct *orig_lp, flags **p_logstat)
bool dy_betai(lpprob_struct *orig_lp, int tgt_i, double **p_betai)
void dy_dumpstats(ioid chn, bool echo, lpstats_struct *lpstats, consys_struct *orig_sys)
void dy_freestats(lpstats_struct **p_lpstats)
bool dy_abari(lpprob_struct *orig_lp, int tgt_i, double **p_abari, double **p_betai)
void print(const char *fmt,...)
void dy_colStatus(lpprob_struct *orig_lp, flags **p_colstat)
void dy_freesoln(lpprob_struct *lpprob)
lpret_enum dylp(lpprob_struct *orig_lp, lpopts_struct *orig_opts, lptols_struct *orig_tols, lpstats_struct *orig_stats)
bool dy_expandxopt(lpprob_struct *lp, double **p_xopt)
void dy_checkdefaults(consys_struct *sys, lpopts_struct *opts, lptols_struct *tols)
bool dy_dumpcompact(ioid chn, bool echo, lpprob_struct *soln, bool nbzeros)