#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "config.h"
#include "sortrus.h"
#include "iqsutil.h"
#include "lpdefs.h"
#include "qstruct.h"
#include "qsopt.h"
#include "basis.h"
#include "fct.h"
#include "lp.h"
#include "lib.h"
Include dependency graph for basis.c:

Go to the source code of this file.
Defines | |
| #define | BASIS_DEBUG 0 |
| #define | BASIS_STATS 0 |
Functions | |
| static int | choose_basis (int algorithm, EGlpNum_t pinf1, EGlpNum_t dinf1, EGlpNum_t pinf2, EGlpNum_t dinf2) |
| static int | get_initial_basis1 (lpinfo *lp, int *vstat) |
| static int | get_initial_basis2 (lpinfo *lp, int *vstat) |
| static void | get_var_info (lpinfo *lp, var_data *v) |
| int | ILLbasis_build_basisinfo (lpinfo *lp) |
| void | ILLbasis_clear_vardata (var_data *vd) |
| void | ILLbasis_column_solve (lpinfo *lp, svector *rhs, svector *soln) |
| void | ILLbasis_column_solve_update (lpinfo *lp, svector *rhs, svector *upd, svector *soln) |
| int | ILLbasis_factor (lpinfo *lp, int *singular) |
| void | ILLbasis_free_basisinfo (lpinfo *lp) |
| int | ILLbasis_get_cinitial (lpinfo *lp, int algorithm) |
| int | ILLbasis_get_initial (lpinfo *lp, int algorithm) |
| void | ILLbasis_init_basisinfo (lpinfo *lp) |
| void | ILLbasis_init_vardata (var_data *vd) |
| int | ILLbasis_load (lpinfo *lp, ILLlp_basis *B) |
| int | ILLbasis_refactor (lpinfo *lp) |
| void | ILLbasis_row_solve (lpinfo *lp, svector *rhs, svector *soln) |
| int | ILLbasis_tableau_row (lpinfo *lp, int row, EGlpNum_t *brow, EGlpNum_t *trow, EGlpNum_t *rhs, int strict) |
| int | ILLbasis_update (lpinfo *lp, svector *y, int lindex, int *refactor, int *singular) |
| static int | init_slack_basis (lpinfo *lp, int *vstat, int *irow, int *rrow, int *unitcol, int *icol, int *rcol) |
| static int | primal_col_select (lpinfo *lp, int *vstat, int *irow, int *rrow, int *unitcol, EGlpNum_t *v, int *perm, int *porder, int nbelem, int pcols) |
| static int | set_basis_indices (lpinfo *lp, int *vstat) |
Variables | |
| static int | TRACE = 0 |
| static int choose_basis | ( | int | algorithm, | |
| EGlpNum_t | pinf1, | |||
| EGlpNum_t | dinf1, | |||
| EGlpNum_t | pinf2, | |||
| EGlpNum_t | dinf2 | |||
| ) |
Definition at line 1147 of file basis.c.
References CB_EPS, CB_INF_RATIO, CB_PRI_RLIMIT, EGlpNum_t, EGlpNumClearVar, EGlpNumCopyDiff, EGlpNumCopyFrac, EGlpNumInitVar, EGlpNumIsLeq, EGlpNumIsLess, EGlpNumMultTo, EGlpNumSign, ILL_IFTRACE, and PRIMAL_SIMPLEX.
Referenced by ILLbasis_get_cinitial().
| static int get_initial_basis1 | ( | lpinfo * | lp, | |
| int * | vstat | |||
| ) |
Definition at line 635 of file basis.c.
References var_data::cmax, lpinfo::cz, E_SIMPLEX_ERROR, EGlpNum_t, EGlpNumAddTo, EGlpNumAllocArray, EGlpNumCopy, EGlpNumCopyFrac, EGlpNumInitVar, EGlpNumIsNeqqZero, EGlpNumMultUiTo, EGlpNumOne, EGlpNumSubTo, get_var_info(), ILL_CLEANUP, ILL_SAFE_MALLOC, ILLbasis_init_vardata(), INFTY, init_slack_basis(), lpinfo::lz, var_data::nbndone, var_data::nbounded, lpinfo::ncols, var_data::nfree, lpinfo::nrows, var_data::nslacks, NULL, STAT_BASIC, lpinfo::uz, VBOUNDED, VFIXED, VFREE, VLOWER, lpinfo::vtype, and VUPPER.
Referenced by ILLbasis_get_cinitial(), and ILLbasis_get_initial().
Here is the call graph for this function:

| static int get_initial_basis2 | ( | lpinfo * | lp, | |
| int * | vstat | |||
| ) |
Definition at line 797 of file basis.c.
References BD_TOLER, var_data::cmax, lpinfo::cz, E_SIMPLEX_ERROR, EG_RETURN, EGlpNum_t, EGlpNumAddTo, EGlpNumAllocArray, EGlpNumClearVar, EGlpNumCopy, EGlpNumCopyAbs, EGlpNumCopyFrac, EGlpNumFreeArray, EGlpNumInitVar, EGlpNumIsLess, EGlpNumIsLessZero, EGlpNumIsNeqq, EGlpNumIsNeqqZero, EGlpNumIsNeqZero, EGlpNumMultUiTo, EGlpNumOne, EGlpNumSet, EGlpNumSubInnProdTo, EGlpNumSubTo, EGlpNumZero, get_var_info(), ILL_CLEANUP, ILL_IFFREE, ILL_SAFE_MALLOC, ILLbasis_clear_vardata(), ILLbasis_free_basisinfo(), ILLbasis_init_vardata(), ILLutil_EGlpNum_perm_quicksort(), ILLutil_int_perm_quicksort(), INFTY, init_slack_basis(), lpinfo::lz, lpinfo::matcnt, var_data::nbndone, lpinfo::ncols, var_data::nfree, lpinfo::nrows, var_data::nslacks, NULL, oneLpNum, primal_col_select(), lpinfo::rowbeg, lpinfo::rowcnt, lpinfo::rowind, lpinfo::rowval, STAT_BASIC, lpinfo::uz, VBOUNDED, VFIXED, VFREE, VLOWER, lpinfo::vtype, and VUPPER.
Referenced by ILLbasis_get_cinitial(), and ILLbasis_get_initial().
Here is the call graph for this function:

Definition at line 404 of file basis.c.
References CLASS_LOGICAL, var_data::cmax, lpinfo::cz, EGlpNumCopy, EGlpNumSetToMaxAbs, var_data::nartif, var_data::nbndone, var_data::nbounded, lpinfo::ncols, var_data::nfixed, var_data::nfree, NINFTY, var_data::nslacks, VARTIFICIAL, VBOUNDED, lpinfo::vclass, VFIXED, VFREE, VLOWER, lpinfo::vtype, and VUPPER.
Referenced by get_initial_basis1(), and get_initial_basis2().
| int ILLbasis_build_basisinfo | ( | lpinfo * | lp | ) |
Definition at line 122 of file basis.c.
References lpinfo::baz, EG_RETURN, lpinfo::fbasisid, ILL_SAFE_MALLOC, ILLbasis_free_basisinfo(), lpinfo::nbaz, ILLlpdata::ncols, ILLlpdata::nrows, lpinfo::O, lpinfo::vindex, and lpinfo::vstat.
Referenced by ILLbasis_get_cinitial(), ILLbasis_get_initial(), and ILLbasis_load().
Here is the call graph for this function:

| void ILLbasis_clear_vardata | ( | var_data * | vd | ) |
Definition at line 55 of file basis.c.
References var_data::cmax, and EGlpNumClearVar.
Referenced by get_initial_basis2().
Definition at line 1429 of file basis.c.
References lpinfo::f, and ILLfactor_ftran().
Referenced by ILLfct_compute_dpIIy(), ILLfct_compute_dpIy(), ILLfct_compute_dsteep_upv(), ILLfct_compute_yz(), and ILLprice_get_newnorms().
Here is the call graph for this function:

Definition at line 1437 of file basis.c.
References lpinfo::f, and ILLfactor_ftran_update().
Referenced by ILLfct_compute_yz().
Here is the call graph for this function:

| int ILLbasis_factor | ( | lpinfo * | lp, | |
| int * | singular | |||
| ) |
Definition at line 1336 of file basis.c.
References __QS_SB_VERB, lpinfo::basisid, lpinfo::baz, CHECKRVALG, EG_RETURN, EGlpNumInitVar, lpinfo::f, lpinfo::fbasisid, factor_work::fzero_tol, ILL_IFFREE, ILL_SAFE_MALLOC, ILLfactor(), ILLfactor_create_factor_work(), ILLfactor_free_factor_work(), ILLfactor_init_factor_work(), ILLfct_update_basis_info(), lpinfo::matbeg, lpinfo::matcnt, lpinfo::matind, lpinfo::matval, factor_work::maxelem_cur, factor_work::maxelem_factor, factor_work::maxelem_orig, MESSAGE, ILLlpdata::nrows, lpinfo::O, factor_work::partial_cur, factor_work::partial_tol, ILLlpdata::rowmap, STAT_LOWER, STAT_UPPER, STAT_ZERO, factor_work::szero_tol, VARTIFICIAL, VBOUNDED, lpinfo::vindex, VLOWER, lpinfo::vtype, and VUPPER.
Referenced by dual_phaseI_step(), dual_phaseII_step(), ILLbasis_get_cinitial(), ILLbasis_refactor(), ILLbasis_tableau_row(), ILLbasis_update(), and ILLsimplex().
Here is the call graph for this function:

| void ILLbasis_free_basisinfo | ( | lpinfo * | lp | ) |
Definition at line 100 of file basis.c.
References lpinfo::baz, EGlpNumClearVar, lpinfo::f, factor_work::fzero_tol, ILL_IFFREE, ILLfactor_free_factor_work(), factor_work::maxelem_cur, factor_work::maxelem_factor, factor_work::maxelem_orig, lpinfo::nbaz, factor_work::partial_cur, factor_work::partial_tol, factor_work::szero_tol, lpinfo::vindex, and lpinfo::vstat.
Referenced by get_initial_basis2(), ILLbasis_build_basisinfo(), ILLbasis_get_cinitial(), ILLbasis_get_initial(), ILLbasis_load(), and ILLsimplex_free_lpinfo().
Here is the call graph for this function:

| int ILLbasis_get_cinitial | ( | lpinfo * | lp, | |
| int | algorithm | |||
| ) |
Definition at line 1205 of file basis.c.
References __QS_SB_VERB, lpinfo::basisid, lpinfo::baz, CHECKRVALG, choose_basis(), tol_struct::dfeas_tol, lpinfo::dinfeas, E_SIMPLEX_ERROR, EG_RETURN, EGlpNum_t, EGlpNumClearVar, EGlpNumCopy, EGlpNumInitVar, EGlpNumToLf, lpinfo::fbasisid, get_initial_basis1(), get_initial_basis2(), ILL_CLEANUP, ILL_IFFREE, ILL_SAFE_MALLOC, ILLbasis_build_basisinfo(), ILLbasis_factor(), ILLbasis_free_basisinfo(), ILLbasis_init_basisinfo(), ILLfct_check_dfeasible(), ILLfct_check_pfeasible(), ILLfct_compute_dz(), ILLfct_compute_piz(), ILLfct_compute_xbz(), ILLfct_dual_adjust(), ILLwrite_lp_file(), lpinfo::matcnt, MESSAGE, lpinfo::ncols, lpinfo::nrows, NULL, lpinfo::O, tol_struct::pfeas_tol, lpinfo::pinfeas, PRIMAL_SIMPLEX, set_basis_indices(), lpinfo::tol, feas_info::totinfeas, and zeroLpNum.
Referenced by ILLsimplex().
Here is the call graph for this function:

| int ILLbasis_get_initial | ( | lpinfo * | lp, | |
| int | algorithm | |||
| ) |
Definition at line 1104 of file basis.c.
References lpinfo::basisid, CHECKRVALG, E_SIMPLEX_ERROR, EG_RETURN, get_initial_basis1(), get_initial_basis2(), ILL_IFFREE, ILL_SAFE_MALLOC, ILLbasis_build_basisinfo(), ILLbasis_free_basisinfo(), ILLbasis_init_basisinfo(), ILLwrite_lp_file(), lpinfo::ncols, NULL, lpinfo::O, PRIMAL_SIMPLEX, and set_basis_indices().
Referenced by ILLsimplex().
Here is the call graph for this function:

| void ILLbasis_init_basisinfo | ( | lpinfo * | lp | ) |
Definition at line 90 of file basis.c.
References lpinfo::baz, lpinfo::f, lpinfo::nbaz, lpinfo::vindex, and lpinfo::vstat.
Referenced by ILLbasis_get_cinitial(), ILLbasis_get_initial(), ILLbasis_load(), and ILLsimplex_init_lpinfo().
| void ILLbasis_init_vardata | ( | var_data * | vd | ) |
Definition at line 48 of file basis.c.
References var_data::cmax, and EGlpNumInitVar.
Referenced by get_initial_basis1(), and get_initial_basis2().
| int ILLbasis_load | ( | lpinfo * | lp, | |
| ILLlp_basis * | B | |||
| ) |
Definition at line 140 of file basis.c.
References lpinfo::basisid, lpinfo::baz, CHECKRVALG, ILLlp_basis::cstat, EG_RETURN, lpinfo::fbasisid, ILLbasis_build_basisinfo(), ILLbasis_free_basisinfo(), ILLbasis_init_basisinfo(), lpinfo::nbaz, ILLlpdata::ncols, ILLlpdata::nrows, ILLlpdata::nstruct, lpinfo::O, QS_COL_BSTAT_BASIC, QS_COL_BSTAT_FREE, QS_COL_BSTAT_LOWER, QS_COL_BSTAT_UPPER, QS_ROW_BSTAT_BASIC, QS_ROW_BSTAT_LOWER, QS_ROW_BSTAT_UPPER, ILLlpdata::rowmap, ILLlp_basis::rstat, ILLlpdata::sense, STAT_BASIC, STAT_LOWER, STAT_UPPER, STAT_ZERO, ILLlpdata::structmap, lpinfo::vindex, and lpinfo::vstat.
Referenced by ILLsimplex().
Here is the call graph for this function:

| int ILLbasis_refactor | ( | lpinfo * | lp | ) |
Definition at line 1413 of file basis.c.
References __QS_SB_VERB, EG_RETURN, ILLbasis_factor(), MESSAGE, and QS_LP_CHANGE_PREC.
Referenced by ILLsimplex_retest_dsolution(), and ILLsimplex_retest_psolution().
Here is the call graph for this function:

Definition at line 1446 of file basis.c.
References lpinfo::f, and ILLfactor_btran().
Referenced by ILLfct_compute_binvrow(), ILLfct_compute_ppIzz(), ILLfct_compute_psteep_upv(), and ILLprice_get_newnorms().
Here is the call graph for this function:

| int ILLbasis_tableau_row | ( | lpinfo * | lp, | |
| int | row, | |||
| EGlpNum_t * | brow, | |||
| EGlpNum_t * | trow, | |||
| EGlpNum_t * | rhs, | |||
| int | strict | |||
| ) |
Definition at line 265 of file basis.c.
References __QS_SB_VERB, lpinfo::basisid, lpinfo::baz, lpinfo::bz, CHECKRVALG, svector::coef, E_BASIS_SINGULAR, E_GENERAL_ERROR, EGlpNum_t, EGlpNumAddInnProdTo, EGlpNumAddTo, EGlpNumAllocArray, EGlpNumClearVar, EGlpNumCopy, EGlpNumFreeArray, EGlpNumInitVar, EGlpNumIsGreatZero, EGlpNumIsLess, EGlpNumIsLessZero, EGlpNumIsNeq, EGlpNumOne, EGlpNumSet, EGlpNumSign, EGlpNumSubTo, EGlpNumToLf, EGlpNumZero, lpinfo::fbasisid, ILL_CLEANUP, ILL_IFTRACE, ILLbasis_factor(), ILLfct_compute_vA(), ILLfct_compute_zA(), ILLfct_compute_zz(), ILLsvector_alloc(), ILLsvector_free(), ILLsvector_init(), svector::indx, lpinfo::lz, MESSAGE, lpinfo::nbaz, lpinfo::ncols, ILLlpdata::nrows, lpinfo::nrows, NULL, svector::nzcnt, lpinfo::O, oneLpNum, PIVZ_TOLER, STAT_BASIC, STAT_LOWER, STAT_UPPER, lpinfo::uz, lpinfo::vindex, lpinfo::vstat, and lpinfo::xbz.
Referenced by ILLlib_tableau().
Here is the call graph for this function:

Definition at line 1454 of file basis.c.
References __QS_SB_VERB, E_FACTOR_BLOWUP, E_UPDATE_NOSPACE, E_UPDATE_SINGULAR_COL, E_UPDATE_SINGULAR_ROW, EG_RETURN, lpinfo::f, ILLbasis_factor(), ILLfactor_update(), ILLlib_writebasis(), ILLwrite_lp_file(), MESSAGE, NULL, and lpinfo::O.
Referenced by dual_phaseI_step(), dual_phaseII_step(), primal_phaseI_step(), and primal_phaseII_step().
Here is the call graph for this function:

| static int init_slack_basis | ( | lpinfo * | lp, | |
| int * | vstat, | |||
| int * | irow, | |||
| int * | rrow, | |||
| int * | unitcol, | |||
| int * | icol, | |||
| int * | rcol | |||
| ) | [static] |
Definition at line 456 of file basis.c.
References CLASS_LOGICAL, EGlpNumToLf, lpinfo::lz, lpinfo::matbeg, lpinfo::matind, lpinfo::ncols, NULL, STAT_BASIC, STAT_LOWER, STAT_UPPER, STAT_ZERO, lpinfo::uz, VARTIFICIAL, VBOUNDED, lpinfo::vclass, VFIXED, VFREE, VLOWER, lpinfo::vtype, and VUPPER.
Referenced by get_initial_basis1(), and get_initial_basis2().
| static int primal_col_select | ( | lpinfo * | lp, | |
| int * | vstat, | |||
| int * | irow, | |||
| int * | rrow, | |||
| int * | unitcol, | |||
| EGlpNum_t * | v, | |||
| int * | perm, | |||
| int * | porder, | |||
| int | nbelem, | |||
| int | pcols | |||
| ) | [static] |
Definition at line 510 of file basis.c.
References EGlpNum_t, EGlpNumClearVar, EGlpNumCopy, EGlpNumCopyAbs, EGlpNumDivTo, EGlpNumInitVar, EGlpNumIsLess, EGlpNumIsNeqq, EGlpNumIsNeqqZero, EGlpNumMultTo, EGlpNumZero, INFTY, lpinfo::matbeg, lpinfo::matcnt, lpinfo::matind, lpinfo::matval, NINFTY, lpinfo::nrows, PARAM_IBASIS_RPIVOT, PARAM_IBASIS_RTRIANG, and STAT_BASIC.
Referenced by get_initial_basis2().
| static int set_basis_indices | ( | lpinfo * | lp, | |
| int * | vstat | |||
| ) |
Definition at line 1061 of file basis.c.
References lpinfo::baz, E_SIMPLEX_ERROR, lpinfo::nbaz, lpinfo::ncols, lpinfo::nnbasic, lpinfo::nrows, STAT_BASIC, STAT_LOWER, STAT_UPPER, STAT_ZERO, lpinfo::vindex, and lpinfo::vstat.
Referenced by ILLbasis_get_cinitial(), and ILLbasis_get_initial().
int TRACE = 0 [static] |
1.5.2