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
684 #if defined(DYLP_INTERNAL) || defined(BONSAIG)
692 # define BND_TOLER dy_tols->pfeas
696 # define INF_TOLER dy_tols->inf
699 #define withintol(zz_val_zz,zz_tgt_zz,zz_tol_zz) \
700 (fabs((zz_val_zz)-(zz_tgt_zz)) <= zz_tol_zz)
702 #define setcleanzero(zz_val_zz,zz_tol_zz) \
703 if (fabs(zz_val_zz) < zz_tol_zz) zz_val_zz = 0
705 #define atbnd(zz_val_zz,zz_bnd_zz) \
706 ((fabs(zz_bnd_zz) < INF_TOLER) && \
707 (fabs((zz_val_zz)-(zz_bnd_zz)) < BND_TOLER*(1.0+fabs(zz_bnd_zz))))
709 #define belowbnd(zz_val_zz,zz_bnd_zz) \
710 ((fabs(zz_bnd_zz) < INF_TOLER) ? \
711 (((zz_bnd_zz)-(zz_val_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \
712 (zz_val_zz < zz_bnd_zz))
714 #define abovebnd(zz_val_zz,zz_bnd_zz) \
715 ((fabs(zz_bnd_zz) < INF_TOLER) ? \
716 (((zz_val_zz)-(zz_bnd_zz)) > BND_TOLER*(1.0+fabs(zz_bnd_zz))) : \
717 (zz_val_zz > zz_bnd_zz))
719 #define withinbnds(zz_lb_zz,zz_val_zz,zz_ub_zz) \
720 (!abovebnd(zz_val_zz,zz_ub_zz) && !belowbnd(zz_val_zz,zz_lb_zz))
741 #define snaptol1(zz_tgt_zz) (dy_tols->zero*(1.0+(zz_tgt_zz)))
743 #define snaptol2(zz_tgt_zz,zz_dst_zz) \
744 (dy_tols->zero*(1.0+maxx((zz_tgt_zz),(zz_dst_zz))))
746 #define snaptol3(zz_tol_zz,zz_tgt_zz,zz_dst_zz) \
747 ((zz_tol_zz)*(1.0+maxx((zz_tgt_zz),(zz_dst_zz))))
1122 struct {
int strat ; } ppsel ;
1300 #define DYSTATS_MAXDEGEN 25
1301 #define DYSTATS_HISTBINS 37
1314 int *deactcnt ; } vars ;
1341 int promote ; } pmulti ;
1342 struct {
int prevpiv ;
1362 struct {
int iters ;
1364 struct {
int iters ;
1366 struct {
int iters ;
1371 #ifdef DYLP_INTERNAL
1381 #define ACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] > 0)
1382 #define INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] <= 0)
1383 #define LOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] == 0)
1384 #define MARK_UNLOADABLE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = -1)
1385 #define MARK_INACTIVE_CON(zz_cndx_zz) (dy_origcons[(zz_cndx_zz)] = 0)
1387 #define ACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] > 0)
1388 #define INACTIVE_VAR(zz_vndx_zz) (dy_origvars[(zz_vndx_zz)] <= 0)
1389 #define LOADABLE_VAR(zz_vndx_zz) \
1390 ((dy_origvars[(zz_vndx_zz)] < 0) && \
1391 flgoff(((flags) -dy_origvars[(zz_vndx_zz)]),vstatNOLOAD|vstatNBFX))
1392 #define MARK_INACTIVE_VAR(zz_vndx_zz,zz_val_zz) \
1393 (dy_origvars[(zz_vndx_zz)] = (zz_val_zz))
1401 extern ioid dy_logchn ;
1402 extern bool dy_gtxecho ;
1558 bool init_dse ; } simplex ;
1562 double ratio ; } ubnd ;
1563 struct {
bool installed ;
1568 double *p2obj ; } p1obj ;
1569 struct {
struct {
int loadable ;
1570 int unloadable ; } cons ;
1571 struct {
int loadable ;
1572 int unloadable ; } vars ;
1573 bool forcedfull ; } sys ;
1574 struct {
int iters ;
1576 struct {
int iters ;
1578 struct {
int iters ;
1580 struct {
int iters ;
1586 int dinf ; } basis ;
1590 struct {
double piv ;
1594 double fd ; } lastz ;
1595 struct {
double norm1 ;
1598 int maxndx ; } prim ;
1599 struct {
double norm1 ;
1602 int maxndx ; } dual ;
1716 extern void *dy_owner ;
1718 extern lp_struct *dy_lp ;
1722 extern int *dy_actvars,*dy_actcons,*dy_origvars,*dy_origcons,
1723 *dy_basis,*dy_var2basis,
1724 *dy_brkout,*dy_degenset,*dy_ddegenset ;
1725 extern flags *dy_status ;
1726 extern double *dy_x,*dy_xbasic,*dy_y,*dy_cbar,*dy_gamma,*dy_rho ;
1727 extern bool *dy_frame ;
1735 extern bool dy_initlclsystem(
lpprob_struct *orig_lp,
bool hotstart) ;
1736 extern void dy_freelclsystem(
lpprob_struct *orig_lp,
bool freesys) ;
1737 extern bool dy_isscaled(
void) ;
1738 extern void dy_scaling_vectors(
const double **rscale,
const double **cscale) ;
1765 dy_pivot(
int xipos,
double abarij,
double maxabarj) ;
1766 extern double dy_chkpiv(
double abarij,
double maxabarj) ;
1767 extern void dy_btran(
double *col), dy_ftran(
double *col,
bool save) ;
1768 extern bool dy_setpivparms(
int curdelta,
int mindelta) ;
1769 extern char *dy_prtpivparms(
int lvl) ;
1782 extern bool dy_loadcon(
consys_struct *orig_sys,
int orig_ndx,
1783 bool genvars,
int *inactndxs) ;
1784 extern bool dy_deactNBLogPrimCon(
consys_struct *orig_sys,
int i),
1789 int cnt,
int *ocndxs,
int **inactvars) ;
1797 extern bool dy_actNBPrimArch(
consys_struct *orig_sys,
int ovndx),
1799 int cnt,
int *ovndxs),
1809 extern dyret_enum dy_primalin(
int initcol,
int scan,
int *xjndx,
int *nextcol),
1810 dy_primalpivot(
int xjndx,
int indir,
int *xindx,
int *outdir,
1811 double *abarij,
double *delta,
int *xjcand),
1812 dy_degenout(
int level) ;
1819 int xjcand,
int xicand),
1820 dy_accchk(
flags *checks) ;
1827 double abarij,
double maxabarij),
1828 dy_dealWithPunt(
void) ;
1829 extern bool dy_clrpivrej(
int *entries) ;
1830 extern void dy_checkpivtol(
void) ;
1831 extern void dy_initpivrej(
int sze), dy_freepivrej(
void) ;
1839 extern bool dy_initp1obj(
void),dy_swapobjs(
dyphase_enum phase) ;
1846 dy_dualout(
int *xindx),
1847 dy_dualpivot(
int xindx,
int outdir,
1848 int *p_xjndx,
int *p_indir,
double *p_cbarj,
1849 double *p_abarij,
double *p_delta,
int *xicand),
1850 dy_dualdegenout(
int level) ;
1882 #ifdef DYLP_INTERNAL
1885 extern dyret_enum dy_updateprimals(
int j,
double deltaj,
double *p_abarj) ;
1886 extern bool dy_reducerhs(
double *rhs,
bool init),
1887 dy_calcprimals(
void),dy_calccbar(
void) ;
1888 extern void dy_calcduals(
void),dy_setbasicstatus(
void),
1889 dy_dseinit(
void),dy_pseinit(
void) ;
1890 extern double dy_calcobj(
void),dy_calcdualobj(
void),dy_calcpinfeas(
void) ;
1893 #ifdef DYLP_PARANOIA
1895 extern bool dy_chkstatus(
int vndx),
1897 extern void dy_chkdual(
int lvl) ;
1905 flags **p_dst_status,
1906 int src_statuslen,
flags *src_status) ;
1914 double **p_ocbar,
int *p_nbcnt,
int **p_nbvars),
1916 double nubi,
double xi,
double nlbi,
1917 int nbcnt,
int *nbvars,
1918 double *cbar,
double *p_upeni,
double *p_dpeni) ;
1936 int *p_numRays,
double ***p_rays) ;
1938 int *p_numRays,
double ***p_rays,
bool trueDuals) ;
1949 const double *c,
bool trueDuals) ;
1953 double **p_xB,
int **p_indB) ;
1967 #ifdef DYLP_INTERNAL
1969 extern void dy_logpivot(
dyret_enum result,
int xjndx,
int indir,
double cbarj,
1970 int xindx,
int outdir,
double abarij,
double delta) ;
1971 extern const char *dy_prtdyret(
dyret_enum retcode) ;
1997 #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)
bool dy_betak(lpprob_struct *orig_lp, int col_k, double **p_betaj)
void dy_colDuals(lpprob_struct *orig_lp, double **p_cbar, bool trueDuals)
void dy_rowDualsGivenC(lpprob_struct *orig_lp, double **p_y, const double *c, 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)
void dy_setlogchn(ioid chn)
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)
void dy_setgtxecho(bool echo)
bool dy_dumpcompact(ioid chn, bool echo, lpprob_struct *soln, bool nbzeros)