示例#1
0
文件: output.c 项目: sebasguts/4ti2
/* ----------------------------------------------------------------- */
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);
}
示例#2
0
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();

}