Changeset 579 for branches/devel


Ignore:
Timestamp:
Mar 15, 2007 1:48:04 PM (13 years ago)
Author:
forrest
Message:

add time and try two level bilinear

Location:
branches/devel/Cbc/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/devel/Cbc/src/CbcLinked.cpp

    r578 r579  
    14101410    if (obj) {
    14111411      int xyRow = obj->xyRow();
    1412       if (rowLength[xyRow]==4) {
     1412      if (rowLength[xyRow]==4&&false) {
    14131413        // we have simple bound
    14141414        nQ++;
     
    14701470// Set all biLinear priorities on x-x variables
    14711471void
    1472 OsiSolverLink::setBiLinearPriorities(int value)
    1473 {
     1472OsiSolverLink::setBiLinearPriorities(int value,double meshSize)
     1473{
     1474  OsiObject ** newObject = new OsiObject * [numberObjects_];
     1475  int numberOdd=0;
    14741476  int i;
    14751477  for ( i =0;i<numberObjects_;i++) {
     
    14771479    if (obj) {
    14781480      if (obj->xMeshSize()<1.0&&obj->yMeshSize()<1.0) {
    1479         obj->setPriority(value);
    1480       }
    1481     }
    1482   }
     1481        OsiBiLinear * objNew = new OsiBiLinear(*obj);
     1482        newObject[numberOdd++]=objNew;
     1483        objNew->setXSatisfied(0.5*meshSize);
     1484        objNew->setXMeshSize(meshSize);
     1485        objNew->setYSatisfied(0.5*meshSize);
     1486        objNew->setYMeshSize(meshSize);
     1487        objNew->setXYSatisfied(0.5*meshSize);
     1488        objNew->setPriority(value);
     1489        objNew->setBranchingStrategy(8);
     1490      }
     1491    }
     1492  }
     1493  addObjects(numberOdd,newObject);
     1494  for (i=0;i<numberOdd;i++)
     1495    delete newObject[i];
     1496  delete [] newObject;
    14831497}
    14841498// Say convex (should work it out)
     
    44344448      xSatisfied =  (fabs(xNew-x)<xSatisfied_);
    44354449    }
     4450    // but if first coarse grid then only if gap small
     4451    if ((branchingStrategy_&8)!=0&&xSatisfied&&
     4452        xB[1]-xB[0]>=xMeshSize_) {
     4453      xNew = 0.5*(xB[0]+xB[1]);
     4454      x = xNew;
     4455      xSatisfied=false;
     4456    }
    44364457  } else {
    44374458    xSatisfied=true;
     
    44524473      assert (yNew>=yB[0]-ySatisfied_);
    44534474      ySatisfied =  (fabs(yNew-y)<ySatisfied_);
     4475    }
     4476    // but if first coarse grid then only if gap small
     4477    if ((branchingStrategy_&8)!=0&&ySatisfied&&
     4478        yB[1]-yB[0]>=yMeshSize_) {
     4479      yNew = 0.5*(yB[0]+yB[1]);
     4480      y = yNew;
     4481      ySatisfied=false;
    44544482    }
    44554483  } else {
  • branches/devel/Cbc/src/CbcLinked.hpp

    r574 r579  
    171171  { return &coinModel_;};
    172172  /// Set all biLinear priorities on x-x variables
    173   void setBiLinearPriorities(int value);
     173  void setBiLinearPriorities(int value, double meshSize=1.0);
    174174  /// Set all mesh sizes on x-x variables
    175175  void setMeshSizes(double value);
  • branches/devel/Cbc/src/CoinSolve.cpp

    r578 r579  
    38293829                    OsiSolverLink * solver3 = dynamic_cast<OsiSolverLink *> (babModel->solver());
    38303830                    if (solver3) {
    3831                       if (tightenFactor>0.0) {
    3832                         // set grid size for all continuous bi-linear
    3833                         solver3->setMeshSizes(tightenFactor);
    3834                       }
    38353831                      int options = parameters[whichParam(MIPOPTIONS,numberParameters,parameters)].intValue()/10000;
    38363832                      CglStored stored;
     
    38453841                          32 - OA cuts strictly concave
    38463842                        */
    3847                         if ((options&2))
    3848                           solver3->setBiLinearPriorities(10);
     3843                        if ((options&2)) {
     3844                          solver3->setBiLinearPriorities(10,tightenFactor > 0.0 ? tightenFactor : 1.0);
     3845                        } else if (tightenFactor>0.0) {
     3846                          // set grid size for all continuous bi-linear
     3847                          solver3->setMeshSizes(tightenFactor);
     3848                        }
    38493849                        if ((options&4)) {
    38503850                          solver3->setSpecialOptions2(solver3->specialOptions2()|(8+4));
     
    41844184                      pos += sprintf(buf+pos," objective %g",value);
    41854185                  }
    4186                   sprintf(buf+pos,"\n%d nodes, %d iterations",
     4186                  sprintf(buf+pos,"\n%d nodes, %d iterations, %g seconds",
    41874187                          babModel->getNodeCount(),
    4188                           babModel->getIterationCount());
     4188                          babModel->getIterationCount(),
     4189                          totalTime);
    41894190                  if (bestSolution) {
    41904191                    free(info.primalSolution);
Note: See TracChangeset for help on using the changeset viewer.