| 1 | /* $Id: ClpDummyMatrix.cpp 1665 2011-01-04 17:55:54Z lou $ */ |
| 2 | // Copyright (C) 2003, International Business Machines |
| 3 | // Corporation and others. All Rights Reserved. |
| 4 | // This code is licensed under the terms of the Eclipse Public License (EPL). |
| 5 | |
| 6 | #include <cstdio> |
| 7 | |
| 8 | #include "CoinPragma.hpp" |
| 9 | |
| 10 | #include "ClpSimplex.hpp" |
| 11 | #include "ClpDummyMatrix.hpp" |
| 12 | #include "ClpFactorization.hpp" |
| 13 | #include "ClpMessage.hpp" |
| 14 | |
| 15 | //############################################################################# |
| 16 | // Constructors / Destructor / Assignment |
| 17 | //############################################################################# |
| 18 | |
| 19 | //------------------------------------------------------------------- |
| 20 | // Default Constructor |
| 21 | //------------------------------------------------------------------- |
| 22 | ClpDummyMatrix::ClpDummyMatrix () |
| 23 | : ClpMatrixBase() |
| 24 | { |
| 25 | setType(14); |
| 26 | numberRows_ = 0; |
| 27 | numberColumns_ = 0; |
| 28 | numberElements_ = 0; |
| 29 | } |
| 30 | |
| 31 | /* Constructor from data */ |
| 32 | ClpDummyMatrix::ClpDummyMatrix(int numberColumns, int numberRows, |
| 33 | int numberElements) |
| 34 | : ClpMatrixBase() |
| 35 | { |
| 36 | setType(14); |
| 37 | numberRows_ = numberRows; |
| 38 | numberColumns_ = numberColumns; |
| 39 | numberElements_ = numberElements; |
| 40 | } |
| 41 | //------------------------------------------------------------------- |
| 42 | // Copy constructor |
| 43 | //------------------------------------------------------------------- |
| 44 | ClpDummyMatrix::ClpDummyMatrix (const ClpDummyMatrix & rhs) |
| 45 | : ClpMatrixBase(rhs) |
| 46 | { |
| 47 | numberRows_ = rhs.numberRows_; |
| 48 | numberColumns_ = rhs.numberColumns_; |
| 49 | numberElements_ = rhs.numberElements_; |
| 50 | } |
| 51 | |
| 52 | ClpDummyMatrix::ClpDummyMatrix (const CoinPackedMatrix & ) |
| 53 | : ClpMatrixBase() |
| 54 | { |
| 55 | std::cerr << "Constructor from CoinPackedMatrix nnot supported - ClpDummyMatrix" << std::endl; |
| 56 | abort(); |
| 57 | } |
| 58 | |
| 59 | //------------------------------------------------------------------- |
| 60 | // Destructor |
| 61 | //------------------------------------------------------------------- |
| 62 | ClpDummyMatrix::~ClpDummyMatrix () |
| 63 | { |
| 64 | } |
| 65 | |
| 66 | //---------------------------------------------------------------- |
| 67 | // Assignment operator |
| 68 | //------------------------------------------------------------------- |
| 69 | ClpDummyMatrix & |
| 70 | ClpDummyMatrix::operator=(const ClpDummyMatrix& rhs) |
| 71 | { |
| 72 | if (this != &rhs) { |
| 73 | ClpMatrixBase::operator=(rhs); |
| 74 | numberRows_ = rhs.numberRows_; |
| 75 | numberColumns_ = rhs.numberColumns_; |
| 76 | numberElements_ = rhs.numberElements_; |
| 77 | } |
| 78 | return *this; |
| 79 | } |
| 80 | //------------------------------------------------------------------- |
| 81 | // Clone |
| 82 | //------------------------------------------------------------------- |
| 83 | ClpMatrixBase * ClpDummyMatrix::clone() const |
| 84 | { |
| 85 | return new ClpDummyMatrix(*this); |
| 86 | } |
| 87 | |
| 88 | /* Returns a new matrix in reverse order without gaps */ |
| 89 | ClpMatrixBase * |
| 90 | ClpDummyMatrix::reverseOrderedCopy() const |
| 91 | { |
| 92 | std::cerr << "reverseOrderedCopy not supported - ClpDummyMatrix" << std::endl; |
| 93 | abort(); |
| 94 | return NULL; |
| 95 | } |
| 96 | //unscaled versions |
| 97 | void |
| 98 | ClpDummyMatrix::times(double , |
| 99 | const double * , double * ) const |
| 100 | { |
| 101 | std::cerr << "times not supported - ClpDummyMatrix" << std::endl; |
| 102 | abort(); |
| 103 | } |
| 104 | void |
| 105 | ClpDummyMatrix::transposeTimes(double , |
| 106 | const double * , double * ) const |
| 107 | { |
| 108 | std::cerr << "transposeTimes not supported - ClpDummyMatrix" << std::endl; |
| 109 | abort(); |
| 110 | } |
| 111 | void |
| 112 | ClpDummyMatrix::times(double , |
| 113 | const double * , double * , |
| 114 | const double * , |
| 115 | const double * ) const |
| 116 | { |
| 117 | std::cerr << "timesnot supported - ClpDummyMatrix" << std::endl; |
| 118 | abort(); |
| 119 | } |
| 120 | void |
| 121 | ClpDummyMatrix::transposeTimes( double, |
| 122 | const double * , double * , |
| 123 | const double * , |
| 124 | const double * ) const |
| 125 | { |
| 126 | std::cerr << "transposeTimesnot supported - ClpDummyMatrix" << std::endl; |
| 127 | abort(); |
| 128 | } |
| 129 | /* Return <code>x * A + y</code> in <code>z</code>. |
| 130 | Squashes small elements and knows about ClpSimplex */ |
| 131 | void |
| 132 | ClpDummyMatrix::transposeTimes(const ClpSimplex * , double , |
| 133 | const CoinIndexedVector * , |
| 134 | CoinIndexedVector * , |
| 135 | CoinIndexedVector * ) const |
| 136 | { |
| 137 | std::cerr << "transposeTimes not supported - ClpDummyMatrix" << std::endl; |
| 138 | abort(); |
| 139 | } |
| 140 | /* Return <code>x *A in <code>z</code> but |
| 141 | just for indices in y */ |
| 142 | void |
| 143 | ClpDummyMatrix::subsetTransposeTimes(const ClpSimplex * , |
| 144 | const CoinIndexedVector * , |
| 145 | const CoinIndexedVector * , |
| 146 | CoinIndexedVector * ) const |
| 147 | { |
| 148 | std::cerr << "subsetTransposeTimes not supported - ClpDummyMatrix" << std::endl; |
| 149 | abort(); |
| 150 | } |
| 151 | /// returns number of elements in column part of basis, |
| 152 | CoinBigIndex |
| 153 | ClpDummyMatrix::countBasis(const int * , |
| 154 | int & ) |
| 155 | { |
| 156 | std::cerr << "countBasis not supported - ClpDummyMatrix" << std::endl; |
| 157 | abort(); |
| 158 | return 0; |
| 159 | } |
| 160 | void |
| 161 | ClpDummyMatrix::fillBasis(ClpSimplex * , |
| 162 | const int * , |
| 163 | int & , |
| 164 | int * , int * , |
| 165 | int * , int * , |
| 166 | CoinFactorizationDouble * ) |
| 167 | { |
| 168 | std::cerr << "fillBasis not supported - ClpDummyMatrix" << std::endl; |
| 169 | abort(); |
| 170 | } |
| 171 | /* Unpacks a column into an CoinIndexedvector |
| 172 | */ |
| 173 | void |
| 174 | ClpDummyMatrix::unpack(const ClpSimplex * , CoinIndexedVector * , |
| 175 | int ) const |
| 176 | { |
| 177 | std::cerr << "unpack not supported - ClpDummyMatrix" << std::endl; |
| 178 | abort(); |
| 179 | } |
| 180 | /* Unpacks a column into an CoinIndexedvector |
| 181 | ** in packed foramt |
| 182 | Note that model is NOT const. Bounds and objective could |
| 183 | be modified if doing column generation (just for this variable) */ |
| 184 | void |
| 185 | ClpDummyMatrix::unpackPacked(ClpSimplex * , |
| 186 | CoinIndexedVector * , |
| 187 | int ) const |
| 188 | { |
| 189 | std::cerr << "unpackPacked not supported - ClpDummyMatrix" << std::endl; |
| 190 | abort(); |
| 191 | } |
| 192 | /* Adds multiple of a column into an CoinIndexedvector |
| 193 | You can use quickAdd to add to vector */ |
| 194 | void |
| 195 | ClpDummyMatrix::add(const ClpSimplex * , CoinIndexedVector * , |
| 196 | int , double ) const |
| 197 | { |
| 198 | std::cerr << "add not supported - ClpDummyMatrix" << std::endl; |
| 199 | abort(); |
| 200 | } |
| 201 | /* Adds multiple of a column into an array */ |
| 202 | void |
| 203 | ClpDummyMatrix::add(const ClpSimplex * , double * , |
| 204 | int , double ) const |
| 205 | { |
| 206 | std::cerr << "add not supported - ClpDummyMatrix" << std::endl; |
| 207 | abort(); |
| 208 | } |
| 209 | |
| 210 | // Return a complete CoinPackedMatrix |
| 211 | CoinPackedMatrix * |
| 212 | ClpDummyMatrix::getPackedMatrix() const |
| 213 | { |
| 214 | std::cerr << "getPackedMatrix not supported - ClpDummyMatrix" << std::endl; |
| 215 | abort(); |
| 216 | return NULL; |
| 217 | } |
| 218 | /* A vector containing the elements in the packed matrix. Note that there |
| 219 | might be gaps in this list, entries that do not belong to any |
| 220 | major-dimension vector. To get the actual elements one should look at |
| 221 | this vector together with vectorStarts and vectorLengths. */ |
| 222 | const double * |
| 223 | ClpDummyMatrix::getElements() const |
| 224 | { |
| 225 | std::cerr << "getElements not supported - ClpDummyMatrix" << std::endl; |
| 226 | abort(); |
| 227 | return NULL; |
| 228 | } |
| 229 | |
| 230 | const CoinBigIndex * |
| 231 | ClpDummyMatrix::getVectorStarts() const |
| 232 | { |
| 233 | std::cerr << "getVectorStarts not supported - ClpDummyMatrix" << std::endl; |
| 234 | abort(); |
| 235 | return NULL; |
| 236 | } |
| 237 | /* The lengths of the major-dimension vectors. */ |
| 238 | const int * |
| 239 | ClpDummyMatrix::getVectorLengths() const |
| 240 | { |
| 241 | std::cerr << "get VectorLengths not supported - ClpDummyMatrix" << std::endl; |
| 242 | abort(); |
| 243 | return NULL; |
| 244 | } |
| 245 | /* Delete the columns whose indices are listed in <code>indDel</code>. */ |
| 246 | void ClpDummyMatrix::deleteCols(const int , const int * ) |
| 247 | { |
| 248 | std::cerr << "deleteCols not supported - ClpDummyMatrix" << std::endl; |
| 249 | abort(); |
| 250 | } |
| 251 | /* Delete the rows whose indices are listed in <code>indDel</code>. */ |
| 252 | void ClpDummyMatrix::deleteRows(const int , const int * ) |
| 253 | { |
| 254 | std::cerr << "deleteRows not supported - ClpDummyMatrix" << std::endl; |
| 255 | abort(); |
| 256 | } |
| 257 | const int * |
| 258 | ClpDummyMatrix::getIndices() const |
| 259 | { |
| 260 | std::cerr << "getIndices not supported - ClpDummyMatrix" << std::endl; |
| 261 | abort(); |
| 262 | return NULL; |
| 263 | } |
| 264 | |