本文整理汇总了C++中Vec::Size方法的典型用法代码示例。如果您正苦于以下问题:C++ Vec::Size方法的具体用法?C++ Vec::Size怎么用?C++ Vec::Size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vec
的用法示例。
在下文中一共展示了Vec::Size方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LU_resolve
/* Solving LU=b for general matrix */
Vec EqSolver::LU_resolve(Vec c){
Vec dd=c;
double u=0;
/* Changes c to compensate swaping rows during LU decomposition */
for(int i=0;i<c.Size();++i){
if(b[i]!=i){
u=c[i];
c.SetEntrie(i,c[b[i]]);
c.SetEntrie(b[i],u);
}
b[(int) b[i]]=b[i];
}
/* Ly=b */
for(int i=0;i<c.Size();++i){
u=0;
for(int j=0;j<i;++j)
u+=m[i][j]*dd[j];
dd.SetEntrie(i,c[i]-u);
}
/* Ux=y */
for(int i=c.Size()-1;i>-.5;--i){
u=0;
for(int j=c.Size()-1;j>i;--j)
u+=m[i][j]*dd[j];
dd.SetEntrie(i,(dd[i]-u)/m[i][i]);
}
return dd;
}
示例2: while
double
ME_Model::constrained_line_search(double C,
const Vec & x0, const Vec & grad0, const double f0,
const Vec & dx, Vec & x, Vec & grad1)
{
// compute the orthant to explore
Vec orthant = x0;
for (size_t i = 0; i < orthant.Size(); i++) {
if (orthant[i] == 0) orthant[i] = -grad0[i];
}
double t = 1.0 / LINE_SEARCH_BETA;
double f;
do {
t *= LINE_SEARCH_BETA;
x = x0 + t * dx;
x.Project(orthant);
// for (size_t i = 0; i < x.Size(); i++) {
// if (x0[i] != 0 && sign(x[i]) != sign(x0[i])) x[i] = 0;
// }
f = regularized_func_grad(C, x, grad1);
// cout << "*";
} while (f > f0 + LINE_SEARCH_ALPHA * dot_product(x - x0, grad0));
return f;
}
示例3: FunctionGradient
double
ME_Model::regularized_func_grad(const double C, const Vec & x, Vec & grad)
{
double f = FunctionGradient(x.STLVec(), grad.STLVec());
for (size_t i = 0; i < x.Size(); i++) {
f += C * fabs(x[i]);
}
return f;
}
示例4: QueueMessageForSending
// transfers the data to a thread that does the actual sending
static void QueueMessageForSending(Vec<byte>& msg)
{
size_t len = msg.Size();
if (0 == len)
return;
MemBlock *block = GetBlock(len);
if (block) {
block->Append(msg.LendData(), len);
SetEvent(gSendThreadEvent);
} else {
lf("memtrace.dll: QueueMessageForSending() couldn't queu %d bytes", (int)len);
}
}
示例5: sign
static Vec
pseudo_gradient(const Vec & x, const Vec & grad0, const double C)
{
Vec grad = grad0;
for (size_t i = 0; i < x.Size(); i++) {
if (x[i] != 0) {
grad[i] += C * sign(x[i]);
continue;
}
const double gm = grad0[i] - C;
if (gm > 0) {
grad[i] = gm;
continue;
}
const double gp = grad0[i] + C;
if (gp < 0) {
grad[i] = gp;
continue;
}
grad[i] = 0;
}
return grad;
}