/** @file OShL.h * * * @author Robert Fourer, Jun Ma, Kipp Martin, * @version 1.0, 10/05/2005 * @since OS1.0 * * \remarks * Copyright (C) 2005, Robert Fourer, Jun Ma, Kipp Martin, * Northwestern University, and the University of Chicago. * All Rights Reserved. * This software is licensed under the Common Public License. * Please see the accompanying LICENSE file in root directory for terms. * */ #ifndef OSDATASTRUCTURES_H #define OSDATASTRUCTURES_H #include "OSConfig.h" #ifdef HAVE_CSTDLIB # include #else # ifdef HAVE_STDLIB_H # include # endif #endif /*! \class SparseMatrix * \brief a sparse matrix data structure */ class SparseMatrix { public: /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; /** * isColumnMajor holds whether the coefMatrix (AMatrix) holding linear program * data is stored by column. If false, the matrix is stored by row. */ bool isColumnMajor; /** * startSize is the dimension of the starts array */ int startSize; /** * valueSize is the dimension of the starts array */ int valueSize; /** * starts holds an integer array of start elements in coefMatrix (AMatrix), * which points to the start of a column (row) of nonzero elements in coefMatrix (AMatrix). */ int* starts; /** * indexes holds an integer array of rowIdx (or colIdx) elements in coefMatrix (AMatrix). * If the matrix is stored by column (row), rowIdx (colIdx) is the array of row (column) indices. */ int* indexes; /** * values holds a double array of value elements in coefMatrix (AMatrix), * which contains nonzero elements. */ double* values; /** * * Default constructor. */ SparseMatrix(); /** * Constructor. * * @param isColumnMajor holds whether the coefMatrix (AMatrix) holding linear program * data is stored by column. If false, the matrix is stored by row. * @param startSize holds the size of the start array. * @param valueSize holds the size of the value and index arrays. */ SparseMatrix(bool isColumnMajor_, int startSize, int valueSize); /** * * Default destructor. */ ~SparseMatrix(); /** * This method displays data structure in the matrix format. *

* @return */ bool display(int secondaryDim); }; //SparseMatrix /*! \class SparseVector * \brief a sparse vector data structure */ class SparseVector{ public: /** * Constructor. * * @param number holds the size of the vector. */ SparseVector(int number); /** * * Default Constructor. */ SparseVector(); /** * * Default destructor. */ ~SparseVector(); /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; /** * number is the number of elements in the indexes and values arrays. */ int number; /** * indexes holds an integer array of indexes, which corresponding values are nonzero. */ int* indexes; /** * values holds a double array of nonzero values. */ double* values; }; //SparseVector /*! \class SparseJacobianMatrix * \brief a sparse Jacobian matrix data structure */ class SparseJacobianMatrix { public: /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; /** * startSize is the dimension of the starts array -- should equal number of rows + 1 */ int startSize; /** * valueSize is the dimension of the values array */ int valueSize; /** * starts holds an integer array of start elements, each start element * pints to the start of partials for that row */ int* starts; /** * conVals holds an integer array of integers, conVals[i] is the number of constant terms * in the gradient for row i. */ int* conVals; /** * indexes holds an integer array of variable indicies. */ int* indexes; /** * values holds a double array of nonzero partial derivatives */ double* values; /** * * Default constructor. */ SparseJacobianMatrix(); /** * Constructor. * * @param startSize holds the size of the start array. * @param valueSize holds the size of the value and index arrays. */ SparseJacobianMatrix(int startSize, int valueSize); /** * * Default destructor. */ ~SparseJacobianMatrix(); }; //SparseJacobianMatrix /*! \class SparseHessianMatrix SparseHessianMatrix.h "SparseHessianMatrix.h" * \brief The in-memory representation of a SparseHessianMatrix.. * * \remarks

Store and uppertriangular Hessian Matrix in sparse format

Assume there are n variables in what follows

* * */ class SparseHessianMatrix { public: /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; /** * hessDimension is the number of nonzeros in each array. */ int hessDimension; /** * hessRowIdx is an integer array of row indicies in the range 0, ..., n - 1. */ int* hessRowIdx; /** * hessColIdx is an integer array of column indicies in the range 0, ..., n - 1. */ int* hessColIdx; /** * hessValues is a double array of the Hessian values. */ double* hessValues; /** * * Default constructor. */ SparseHessianMatrix(); /** * An Alternative Constructor. * * @param startSize holds the size of the arrays. * @param valueSize holds the size of the value and index arrays. */ SparseHessianMatrix(int startSize, int valueSize); /** * * Default destructor. */ ~SparseHessianMatrix(); }; //SparseHessianMatrix /*! \class QuadraticTerms * \brief a data structure for holding quadratic terms */ class QuadraticTerms { public: /** * rowIndexes holds an integer array of row indexes of all the quadratic terms. * A negative integer corresponds to an objective row, e.g. -1 for 1st objective and -2 for 2nd. */ int* rowIndexes; /** * varOneIndexes holds an integer array of the first varialbe indexes of all the quadratic terms. */ int* varOneIndexes; /** * varTwoIndexes holds an integer array of the second varialbe indexes of all the quadratic terms. */ int* varTwoIndexes; /** * coefficients holds a double array all the quadratic term coefficients. */ double* coefficients; /** * * Default constructor. */ QuadraticTerms(); ~QuadraticTerms(); }; //QuadraticTerms /*! \class IntVector * \brief an integer Vector data structure */ class IntVector{ public: IntVector(); ~IntVector(); /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; int *el; };//class IntVector /*! \class DoubleVector * \brief a double vector data structure */ class DoubleVector{ public: DoubleVector(); ~DoubleVector(); /** * bDeleteArrays is true if we delete the arrays in garbage collection * set to true by default */ bool bDeleteArrays; double *el; };//class DoubleVector #endif