lpsolution.inc

Go to the documentation of this file.
00001 
00029 #ifndef ABA_LPSOLUTION_INC
00030 #define ABA_LPSOLUTION_INC
00031 
00032 #include "abacus/master.h"
00033 #include "abacus/lpsolution.h"
00034 #include "abacus/active.h"
00035 #include "abacus/sub.h"
00036 
00037   template <class BaseType, class CoType> 
00038   ABA_LPSOLUTION<BaseType, CoType>::ABA_LPSOLUTION(ABA_SUB *sub, 
00039         bool primalVariables, ABA_ACTIVE<BaseType, CoType> *active )
00040   :  
00041     master_(sub->master_), 
00042     nVarCon_(primalVariables?sub->nVar():sub->nCon()), 
00043     idSub_(sub->id_), 
00044     idLp_(sub->nIter_), 
00045     #ifdef PARALLLEL
00046     idProc_(0),         
00047     #endif
00048     zVal_(master_,nVarCon_) 
00049   { 
00050 
00051 
00052   if(active==0)
00053     active_=0;
00054   else   
00055       active_=new ABA_ACTIVE<BaseType, CoType>(*active);
00056 
00057   double *p;
00058   if(primalVariables==true)
00059     p=sub->xVal_;
00060   else
00061     p=sub->yVal_;
00062 
00063   for(int i=0;i<nVarCon_;i++)
00064     zVal_[i]=p[i];
00065 
00066 }
00067 
00068   template <class BaseType, class CoType> 
00069   ABA_LPSOLUTION<BaseType, CoType>::ABA_LPSOLUTION(ABA_MASTER *master) 
00070   :  
00071     master_(master), 
00072     nVarCon_(0), 
00073     idSub_(0), 
00074     idLp_(0), 
00075     #ifdef PARALLLEL
00076     idProc_(0),         
00077     #endif
00078     zVal_(master_,0) 
00079   { 
00080     active_=0;
00081     
00082   }
00083 
00084   template <class BaseType, class CoType>
00085   ABA_LPSOLUTION<BaseType, CoType>::ABA_LPSOLUTION(const ABA_LPSOLUTION<BaseType, CoType> &rhs)
00086   :  
00087     master_(rhs.master_), 
00088     nVarCon_(rhs.nVarCon_), 
00089     idSub_(rhs.idSub_), 
00090     idLp_(rhs.idLp_), 
00091     #ifdef PARALLLEL
00092     idProc_(rhs.idProc_),       
00093     #endif
00094     zVal_(rhs.zVal_) 
00095   {
00096    if(rhs.active_)
00097      active_=new ABA_ACTIVE<BaseType,CoType>(*rhs.active_);
00098   }
00099 
00100   template <class BaseType, class CoType>
00101   ABA_LPSOLUTION<BaseType, CoType>::~ABA_LPSOLUTION()
00102   {
00103     delete active_;
00104   }
00105 
00106   template <class BaseType, class CoType>
00107   ostream &operator<<(ostream &os, const ABA_LPSOLUTION<BaseType, CoType> &rhs)
00108   {
00109     double machEps=rhs.master_->machineEps();
00110     os << rhs.idSub_ << " ";
00111     os << rhs.idLp_ << " ";
00112     os << rhs.nVarCon_ << " ";
00113     for(int i=0;i<rhs.nVarCon_;i++) 
00114       if(fabs(rhs.zVal_[i])<machEps)
00115         os << "0.0 ";
00116       else
00117         os << rhs.zVal_[i] << " " ;
00118     os << endl;
00119     return os;
00120   }
00121 
00122   template <class BaseType, class CoType>
00123   int ABA_LPSOLUTION<BaseType, CoType>::nVarCon() const
00124   {
00125     return nVarCon_;
00126   }
00127 
00128   template <class BaseType, class CoType>
00129   double* ABA_LPSOLUTION<BaseType, CoType>::zVal() 
00130   {
00131     return &(zVal_[0]);
00132   }
00133 
00134   template <class BaseType, class CoType>
00135   ABA_ACTIVE<BaseType, CoType> * ABA_LPSOLUTION<BaseType, CoType>::active() 
00136   {
00137     return active_;
00138   }
00139 
00140   template <class BaseType, class CoType>
00141   int ABA_LPSOLUTION<BaseType, CoType>::idSub() const
00142   {
00143     return idSub_;
00144   }
00145 
00146   template <class BaseType, class CoType>
00147   int ABA_LPSOLUTION<BaseType, CoType>::idLp() const
00148   {
00149     return idLp_;
00150   }
00151 
00152   #ifdef PARALLLEL
00153   template <class BaseType, class CoType>
00154   int ABA_LPSOLUTION<BaseType, CoType>::idProc() const
00155   {
00156     return idProc_;
00157   }
00158   #endif
00159 
00160 
00161 #endif   // ABA_LPSOLUTION_INC

Generated on Tue Aug 14 18:09:53 2007 for ABACUS by  doxygen 1.5.1