COIN-OR::LEMON - Graph Library

Ignore:
Timestamp:
02/10/05 19:53:30 (20 years ago)
Author:
marci
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1545
Message:

trying to add constraints of kind 1 <= x[2]+x[3] <= 4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/marci/lp/max_flow_expression.cc

    r1143 r1144  
    4747  LPSolver lp;
    4848  lp.setMaximize();
    49   typedef LPSolver::ColIt ColIt;
    50   typedef LPSolver::RowIt RowIt;
    51   typedef Graph::EdgeMap<ColIt> EdgeIndexMap;
    52   typedef Graph::NodeMap<RowIt> NodeIndexMap;
     49  typedef LPSolver::Col Col;
     50  typedef LPSolver::Row Row;
     51  typedef Graph::EdgeMap<Col> EdgeIndexMap;
     52  typedef Graph::NodeMap<Row> NodeIndexMap;
    5353  EdgeIndexMap edge_index_map(g);
    5454  NodeIndexMap node_index_map(g);
     
    5757  // nonnegativity of flow and capacity function
    5858  for (Graph::EdgeIt e(g); e!=INVALID; ++e) {
    59     ColIt col_it=lp.addCol();
    60     edge_index_map.set(e, col_it);
     59    Col col=lp.addCol();
     60    edge_index_map.set(e, col);
    6161    // interesting property in GLPK:
    6262    // if you change the order of the following two lines, the
    6363    // two runs of GLPK are extremely different
    64       lp.setColLowerBound(col_it, 0);
    65       lp.setColUpperBound(col_it, cap[e]);
     64      lp.setColLowerBound(col, 0);
     65      lp.setColUpperBound(col, cap[e]);
    6666  }
    6767 
     
    7878    // flow conservation constraints
    7979    if ((n!=s) && (n!=t)) {
    80       RowIt row_it=lp.addRow();
    81       node_index_map.set(n, row_it);
    82       lp.setRowCoeffs(row_it, expr);
    83       lp.setRowLowerBound(row_it, 0.0);
    84       lp.setRowUpperBound(row_it, 0.0);
    85 //       cout << expr << endl;
    86 //       {
    87 //      LPSolver::Expression expr;
    88 //      lp.getRowCoeffs(node_index_map[n], expr);       
    89 //      cout << expr << endl;
    90 //       }
     80      node_index_map.set(n, lp.addRow(expr == 0.0));
    9181    }
    9282  }
    9383  lp.solveSimplex();
    94 //   cout << "num of nodes: " << countNodes(g) << endl;
    95 //   cout << "num of edges: " << countEdges(g) << endl;
    96 //   cout << "num of rows: " << lp.rowNum() << endl;
    97 //   cout << "num of rows: " << lp.int_row_map.size() << endl;
    98 //   for (int i=0; i<lp.int_row_map.size(); ++i) {
    99 //     cout << lp.int_row_map[i] << " " << endl;
    100 //   }
    101 //   cout << "num of columns: " << lp.colNum() << endl;
    102 //   cout << "num of columns: " << lp.int_col_map.size() << endl;
    103 //   for (int i=0; i<lp.int_col_map.size(); ++i) {
    104 //     cout << lp.int_col_map[i] << " " << endl;
    105 //   }
    10684  cout << "elapsed time: " << ts << endl;
    107 //   Graph::NodeIt n(g);
    108 //   ++n;
    109 //   for(Graph::OutEdgeIt e(g, n); e!=INVALID; ++e) {
    110 //     cout << edge_index_map[e] << endl;
    111 //   }
    112 //   for(Graph::InEdgeIt e(g, n); e!=INVALID; ++e) {
    113 //     cout << edge_index_map[e] << endl;
    114 //   }
    115 //   LPSolver::DualExpression expr;
    116 //   lp.getRowCoeffs(node_index_map[n], expr);
    117 //   cout << expr << endl;
    11885}
Note: See TracChangeset for help on using the changeset viewer.