/* ----------------------------------------------------------------- */ listVector* readListVector(int *numOfVars, char *fileName) { int numOfVectors; listVector *basis, *endBasis; vector b; FILE *in; int i, j; setbuf(stdout,0); if (!(in = fopen(fileName,"r"))) { printf("File \"%s\" not found for reading!\n",fileName); return(0); } fscanf(in,"%d",&numOfVectors); fscanf(in,"%d",numOfVars); if (numOfVectors==0) return (0); b=createVector(*numOfVars); for (j=0; j<(*numOfVars); j++) fscanf(in,"%d",&b[j]); basis = createListVector(b); endBasis = basis; for (i=1; i<numOfVectors; i++) { b=createVector(*numOfVars); for (j=0; j<(*numOfVars); j++) fscanf(in,"%d",&b[j]); endBasis = updateBasis(createListVector(b), endBasis); } fclose(in); return(basis); }
void Simplex::pivot() { assert(ctor[pivot_col] == -1); ctor[rtoc[pivot_row]] = -1; ctor[pivot_col] = pivot_row; rtoc[pivot_row] = pivot_col; // update objective row long double a = obj[pivot_col] / row[pivot_col]; for (int i = 0; i < R_nz.size(); i++) { int k = R_nz[i]; obj[k] -= a * row[k]; checkZero13(obj[k]); } if (num_lu_factors < REFACTOR_FREQ) updateBasis(); else refactorB(); calcObjBound(); // if (simplexs) checkObjective2(); }