1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/src/lemon/lp_skeleton.h Thu Apr 07 06:38:56 2005 +0000
1.3 @@ -0,0 +1,115 @@
1.4 +/* -*- C++ -*-
1.5 + * src/lemon/lp_skeleton.h
1.6 + * - Part of LEMON, a generic C++ optimization library
1.7 + *
1.8 + * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
1.9 + * (Egervary Combinatorial Optimization Research Group, EGRES).
1.10 + *
1.11 + * Permission to use, modify and distribute this software is granted
1.12 + * provided that this copyright notice appears in all copies. For
1.13 + * precise terms see the accompanying LICENSE file.
1.14 + *
1.15 + * This software is provided "AS IS" with no warranty of any kind,
1.16 + * express or implied, and with no claim as to its suitability for any
1.17 + * purpose.
1.18 + *
1.19 + */
1.20 +
1.21 +#ifndef LEMON_LP_SKELETON
1.22 +#define LEMON_LP_SKELETON
1.23 +
1.24 +#include"lp_base.h"
1.25 +
1.26 +///\file
1.27 +///\brief A skeleton file to implement LP solver interfaces
1.28 +namespace lemon {
1.29 +
1.30 + ///A skeleton class to implement LP solver interfaces
1.31 + class LpSkeleton :public LpSolverBase {
1.32 + int col_num,row_num;
1.33 +
1.34 + protected:
1.35 + /// \e
1.36 + virtual int _addCol();
1.37 + /// \e
1.38 + virtual int _addRow();
1.39 + /// \e
1.40 +
1.41 + /// \warning Arrays are indexed from 1 (datum at index 0 is ignored)
1.42 + ///
1.43 + virtual void _setRowCoeffs(int i,
1.44 + int length,
1.45 + int const * indices,
1.46 + Value const * values );
1.47 + /// \e
1.48 +
1.49 + /// \warning Arrays are indexed from 1 (datum at index 0 is ignored)
1.50 + ///
1.51 + virtual void _setColCoeffs(int i,
1.52 + int length,
1.53 + int const * indices,
1.54 + Value const * values );
1.55 +
1.56 + /// \e
1.57 +
1.58 + /// The lower bound of a variable (column) have to be given by an
1.59 + /// extended number of type Value, i.e. a finite number of type
1.60 + /// Value or -\ref INF.
1.61 + virtual void _setColLowerBound(int i, Value value);
1.62 + /// \e
1.63 +
1.64 + /// The upper bound of a variable (column) have to be given by an
1.65 + /// extended number of type Value, i.e. a finite number of type
1.66 + /// Value or \ref INF.
1.67 + virtual void _setColUpperBound(int i, Value value);
1.68 + /// \e
1.69 +
1.70 + /// The lower bound of a linear expression (row) have to be given by an
1.71 + /// extended number of type Value, i.e. a finite number of type
1.72 + /// Value or -\ref INF.
1.73 + virtual void _setRowLowerBound(int i, Value value);
1.74 + /// \e
1.75 +
1.76 + /// The upper bound of a linear expression (row) have to be given by an
1.77 + /// extended number of type Value, i.e. a finite number of type
1.78 + /// Value or \ref INF.
1.79 + virtual void _setRowUpperBound(int i, Value value);
1.80 +
1.81 + /// \e
1.82 + virtual void _setObjCoeff(int i, Value obj_coef);
1.83 +
1.84 + ///\e
1.85 +
1.86 + ///\bug Wrong interface
1.87 + ///
1.88 + virtual SolveExitStatus _solve();
1.89 +
1.90 + ///\e
1.91 +
1.92 + ///\bug Wrong interface
1.93 + ///
1.94 + virtual Value _getPrimal(int i);
1.95 + ///\e
1.96 +
1.97 + ///\bug Wrong interface
1.98 + ///
1.99 + virtual Value _getPrimalValue();
1.100 + ///\e
1.101 +
1.102 + ///\bug Wrong interface
1.103 + ///
1.104 + virtual SolutionStatus _getPrimalStatus();
1.105 +
1.106 + ///\e
1.107 + virtual void _setMax();
1.108 + ///\e
1.109 + virtual void _setMin();
1.110 +
1.111 +
1.112 + public:
1.113 + LpSkeleton() : LpSolverBase(), col_num(0), row_num(0) {}
1.114 + };
1.115 +
1.116 +} //namespace lemon
1.117 +
1.118 +#endif // LEMON_LP_SKELETON