Ignore:
Timestamp:
Sep 7, 2007 10:16:08 AM (12 years ago)
Author:
forrest
Message:

scale binvrow

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Clp/src/unitTest.cpp

    r1090 r1103  
    984984      printf("\n");
    985985    }
     986    /* Do twice -
     987       without and with scaling
     988    */
     989    // set scaling off
     990    model.scaling(0);
     991    for (int iPass=0;iPass<2;iPass++) {
     992      model.primal(0,3+4); // keep factorization
     993      const double * rowScale = model.rowScale();
     994      const double * columnScale = model.columnScale();
     995      if (!iPass)
     996        assert (!rowScale);
     997      else
     998        assert (rowScale); // only true for this example
     999      /* has to be exactly correct as in OsiClpsolverInterface.cpp
     1000         (also redo each pass as may change
     1001      */
     1002      printf("B-1 A");
     1003      for( i = 0; i < n_rows; i++){
     1004        model.getBInvARow(i, binvA,binvA+n_cols);
     1005        printf("\nrow: %d -> ",i);
     1006        int j;
     1007        // First columns
     1008        for(j=0; j < n_cols; j++){
     1009          if (binvA[j]) {
     1010            printf("(%d %g), ", j, binvA[j]);
     1011          }
     1012        }
     1013        // now rows
     1014        for(j=0; j < n_rows; j++){
     1015          if (binvA[j+n_cols]) {
     1016            printf("(%d %g), ", j+n_cols, binvA[j+n_cols]);
     1017          }
     1018        }
     1019      }
     1020      printf("\n");
     1021      printf("And by column (trickier)");
     1022      const int * pivotVariable = model.pivotVariable();
     1023      for( i = 0; i < n_cols+n_rows; i++){
     1024        model.getBInvACol(i, binvA);
     1025        printf("\ncolumn: %d -> ",i);
     1026        for(int j=0; j < n_rows; j++){
     1027          if (binvA[j]) {
     1028            // need to know pivot variable for +1/-1 (slack) and row/column scaling
     1029            int pivot = pivotVariable[j];
     1030            if (pivot<n_cols) {
     1031              // scaled coding is in just in case
     1032              if (!columnScale) {
     1033                printf("(%d %g), ", j, binvA[j]);
     1034              } else {
     1035                printf("(%d %g), ", j, binvA[j]*columnScale[pivot]);
     1036              }
     1037            } else {
     1038              if (!rowScale) {
     1039                printf("(%d %g), ", j, binvA[j]);
     1040              } else {
     1041                printf("(%d %g), ", j, binvA[j]/rowScale[pivot-n_cols]);
     1042              }
     1043            }
     1044          }
     1045        }
     1046      }
     1047      printf("\n");
     1048      printf("binvrow");
     1049      for( i = 0; i < n_rows; i++){
     1050        model.getBInvRow(i, binvA);
     1051        printf("\nrow: %d -> ",i);
     1052        int j;
     1053        for (j=0;j<n_rows;j++) {
     1054          if (binvA[j])
     1055            printf("(%d %g), ", j, binvA[j]);
     1056        }
     1057      }
     1058      printf("\n");
     1059      printf("And by column ");
     1060      for( i = 0; i < n_rows; i++){
     1061        model.getBInvCol(i, binvA);
     1062        printf("\ncol: %d -> ",i);
     1063        int j;
     1064        for (j=0;j<n_rows;j++) {
     1065          if (binvA[j])
     1066            printf("(%d %g), ", j, binvA[j]);
     1067        }
     1068      }
     1069      printf("\n");
     1070      // now deal with next pass
     1071      if (!iPass) {
     1072        // get scaling for testing
     1073        model.scaling(1);
     1074      }
     1075    }
    9861076    free(binvA);
    9871077    model.setColUpper(1,2.0);
Note: See TracChangeset for help on using the changeset viewer.