00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <base/LCP>
00026
00027 #include <vector>
00028
00029 using base::Matrix;
00030 using base::Vector;
00031
00032 using std::ostream;
00033
00034
00035 namespace {
00036
00037 typedef std::vector<bool> IndexSet;
00038
00039
00040 Real AiSxqS(const Matrix& A, Int i,
00041 const IndexSet& S, const Vector& q)
00042 {
00043 Real sum=0;
00044 for(Int k=1; k<=q.dimension(); k++)
00045 if (S[k]) sum += A(i,k)*q[k];
00046 return sum;
00047 }
00048
00049
00050 void transferiToN(Int i)
00051 {
00052 #ifdef DEBUG
00053
00054 #endif
00055 }
00056
00057
00058 }
00059
00060
00061 void base::LCPSolve(const Matrix& A, Vector& x,
00062 const Vector& b, Vector& w)
00063 {
00064 Int n=b.dimension();
00065
00066 Matrix L(A.rows(), A.columns());
00067 Vector d(n);
00068 Vector delta_x(n), delta_w(n);
00069 Vector Dell(n), ell(n), tmp(n);
00070 IndexSet p(n),C(n);
00071 Int i;
00072
00073 x = Vector(n);
00074 w = Vector(n);
00075
00076 for(i=1; i<=n; i++) {
00077 w[i] = AiSxqS(A,i,C,x) - b[i];
00078 if (w[i] >= 0)
00079 ;
00080
00081
00082 }
00083
00084 }
00085
00086
00087
00088 void base::LCPSolve(const Matrix& A, Vector& x,
00089 const Vector& b, Vector& w,
00090 Int numUnbounded,
00091 const Vector& lo, const Vector& hi)
00092 {
00093 }
00094
00095