本文整理汇总了C++中ColumnVector::sum方法的典型用法代码示例。如果您正苦于以下问题:C++ ColumnVector::sum方法的具体用法?C++ ColumnVector::sum怎么用?C++ ColumnVector::sum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ColumnVector
的用法示例。
在下文中一共展示了ColumnVector::sum方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doRegression
double CLocalRBFRegression::doRegression(ColumnVector *vector, DataSubset *subset)
{
// cout << "NNs for Input " << vector->t() << endl;
DataSubset::iterator it = subset->begin();
/* for (int i = 0; it != subset->end(); it ++, i++)
{
ColumnVector dist(*vector);
dist = dist - *(*input)[*it];
printf("(%d %f) ", *it, dist.norm_Frobenius());
}
printf("\n"); */
ColumnVector *rbfFactors = getRBFFactors(vector, subset);
it = subset->begin();
double value = 0;
for (int i = 0; it != subset->end(); it ++, i++)
{
value += rbfFactors->element(i) * (*output)[*it];
}
double sum = rbfFactors->sum();
if (sum > 0)
{
value = value / sum;
}
//printf("Value: %f %f ", value ,sum);
//cout << rbfFactors->t();
return value;
}
示例2: test_feasible_test_fn
int CFeasibilityMap::test_feasible_test_fn(CData &Data, ColumnVector &x_tilde_i, ColumnVector &s_i){
int is_feasible = 0 ;
int n_var = x_tilde_i.nrows() ;
int n_EditVec = Data.EditVec.nrows() ;
int sum_s_1 = s_i.sum() ; int sum_s_0 = n_var - sum_s_1 ;
ColumnVector x_0(sum_s_0); x_0 = 0;
Matrix A_0(n_EditVec,sum_s_0) ; A_0 = 0;
Matrix A_1(n_EditVec,sum_s_1) ; A_1 = 0;
int count0 = 0;
int count1 = 0;
for (int j_var=1; j_var<=n_var; j_var++){
if ((int)s_i(j_var)==0){
count0++;
x_0(count0) = x_tilde_i(j_var) ;
A_0.column(count0) = Data.EditMat.column(j_var) ;
} else {
count1++;
A_1.column(count1) = Data.EditMat.column(j_var) ;
}
}
ColumnVector which_rows(n_EditVec); which_rows = 0 ;
for (int i_row=1; i_row<=n_EditVec; i_row++){
int n_zero = 0 ;
for (int j=1; j<=sum_s_1; j++){
if (A_1(i_row,j)==0) n_zero++;
}
if (n_zero<sum_s_1) which_rows(i_row) = 1 ;
}
Matrix A_1_red(which_rows.sum(),sum_s_1);
ColumnVector b_1_red(which_rows.sum());
Matrix A_0_red(which_rows.sum(),sum_s_0);
for (int i_row=1, count_row = 0; i_row<=n_EditVec; i_row++){
if (which_rows(i_row)==1){
count_row++;
A_1_red.row(count_row) = A_1.row(i_row) ; // Constraints
b_1_red.row(count_row) = Data.EditVec.row(i_row) ;
A_0_red.row(count_row) = A_0.row(i_row) ;
}
}
ColumnVector EditVec_shr = b_1_red - A_0_red * x_0 ;
is_feasible = SolveLP(A_1_red, EditVec_shr);
return is_feasible?1:0;
}
示例3: calculate_log_cond_norm
double CParam::calculate_log_cond_norm(CData &Data, int i_original, ColumnVector &item_by_rnorm, ColumnVector &tilde_y_i, ColumnVector &y_q, bool is_q, LowerTriangularMatrix &LSigma_1_i, ColumnVector &s_q) { // MODIFIED 2015/02/16
double log_cond_norm;
if ( item_by_rnorm.sum() >= 1 ) {
ColumnVector mu_z_i = Mu.column(z_in(i_original));
ColumnVector s_1_compact = Data.get_compact_vector(item_by_rnorm);
ColumnVector Mu_1 = subvector(mu_z_i,s_1_compact);
Matrix Sigma_1 = Submatrix_elem_2(SIGMA[z_in(i_original)-1],s_1_compact,s_1_compact);
// ADDED 2015/01/27
ColumnVector s_q_compact = Data.get_compact_vector(s_q) ; // MODIFIED 2015/02/16
ColumnVector VectorOne = s_q_compact ; VectorOne = 1 ; // MODIFIED 2015/02/16
ColumnVector s_0_compact = VectorOne - s_q_compact ; // MODIFIED 2015/02/16
int sum_s_0_comp = s_0_compact.sum() ;
LowerTriangularMatrix LSigma_cond ;
ColumnVector Mu_cond ;
if ( sum_s_0_comp>0 ){
ColumnVector Mu_0 = subvector(mu_z_i,s_0_compact); // (s_1_compact.sum()) vector
Matrix Sigma_0 = Submatrix_elem_2(SIGMA[z_in(i_original)-1],s_0_compact,s_0_compact);
Matrix Sigma_10 = Submatrix_elem_2(SIGMA[z_in(i_original)-1],s_1_compact,s_0_compact);
ColumnVector y_tilde_compact = Data.get_compact_vector(tilde_y_i) ;
ColumnVector y_tilde_0 = subvector(y_tilde_compact,s_0_compact) ;
SymmetricMatrix Sigma_0_symm ; Sigma_0_symm << Sigma_0 ;
LowerTriangularMatrix LSigma_0 = Cholesky(Sigma_0_symm) ;
Mu_cond = Mu_1 + Sigma_10 * (LSigma_0.i()).t()*LSigma_0.i() * ( y_tilde_0-Mu_0 ) ;
Matrix Sigma_cond = Sigma_1 - Sigma_10 * (LSigma_0.i()).t()*LSigma_0.i() * Sigma_10.t() ;
SymmetricMatrix Sigma_cond_symm ; Sigma_cond_symm << Sigma_cond ;
int sum_s_1_comp = s_1_compact.sum() ;
DiagonalMatrix D(sum_s_1_comp) ; Matrix V(sum_s_1_comp,sum_s_1_comp) ;
Jacobi(Sigma_cond_symm,D,V) ;
int is_zero_exist = 0 ;
for (int i_var=1; i_var<=sum_s_1_comp; i_var++){
if ( D(i_var) < 1e-9 ){
D(i_var) = 1e-9 ;
is_zero_exist = 1 ;
}
} // for (int i_var=1; i_var<=sum_s_1_comp; i_var++)
if ( is_zero_exist == 1 ){
Sigma_cond_symm << V * D * V.t() ;
if ( msg_level >= 1 ) {
Rprintf( " Warning: When generating y_j from conditional normal(Mu_-j,Sigma_-j), Sigma_-j is non-positive definite because of computation precision. The eigenvalues D(j,j) smaller than 1e-9 is replaced with 1e-9, and let Sigma_-j = V D V.t().\n");
}
} //
LSigma_cond = Cholesky(Sigma_cond_symm);
// y_part = rMVN_fn(Mu_cond,LSigma_cond);
// log_cond_norm = log_MVN_fn(y_part,Mu_cond,LSigma_cond) ;
} else {
Mu_cond = Mu_1 ;
SymmetricMatrix Sigma_1_symm = Submatrix_elem(SIGMA[z_in(i_original)-1],s_1_compact);
LSigma_cond = Cholesky(Sigma_1_symm) ;
// SymmetricMatrix Sigma_1_symm ; Sigma_1_symm << Sigma_1 ;
// LowerTriangularMatrix LSigma_1 = Cholesky_Sigma_star_symm(Sigma_1_symm);
// y_part = rMVN_fn(Mu_1,LSigma_1);
// log_cond_norm = log_MVN_fn(y_part,Mu_1,LSigma_1) ;
} // if ( sum_s_0_comp>0 ) else ...
// ADDED 2015/01/26
LowerTriangularMatrix LSigma_cond_i = LSigma_cond.i() ;
// LowerTriangularMatrix LSigma_1 = Cholesky(Sigma_1);
// LSigma_1_i = LSigma_1.i();
ColumnVector y_part;
if (is_q) {
y_part = rMVN_fn(Mu_cond,LSigma_cond);
} else {
ColumnVector y_i = (Y_in.row(i_original)).t();
y_part = subvector(y_i,item_by_rnorm);
}
log_cond_norm = log_MVN_fn(y_part,Mu_cond,LSigma_cond_i);
if (is_q) {
y_q = tilde_y_i;
for ( int temp_j = 1,temp_count1 = 0; temp_j<=n_var; temp_j++ ){
if ( item_by_rnorm(temp_j)==1 ){
y_q(temp_j) = y_part(++temp_count1);
}
}
} // if (is_q)
} else {
log_cond_norm = 0;
if (is_q) { y_q = tilde_y_i;}
} // if ( item_by_rnorm.sum() > = 1 ) else ..
return log_cond_norm;
}
示例4: feasible_test_fn
int CFeasibilityMap::feasible_test_fn(CData &Data, ColumnVector &x_tilde_i,
ColumnVector &s_i, int i_original, bool initD_S, float epsilon, ColumnVector &x){
int is_feasible = 0 ;
if (initD_S) {
if (!Data.PassStep0_for_init(x_tilde_i,s_i,epsilon)) { return is_feasible;}
} else {
// Step 0 - check balance edits hold, but only one s_ij has the value 1.
if (!Data.PassStep0(s_i,i_original)) { return is_feasible;}
}
// Step 1
int n_var = x_tilde_i.nrows() ;
int n_EditVec = Data.EditVec.nrows() ;
int sum_s_1 = s_i.sum() ; int sum_s_0 = n_var - sum_s_1 ;
ColumnVector x_0(sum_s_0); x_0 = 0;
Matrix A_0(n_EditVec,sum_s_0) ; A_0 = 0;
Matrix A_1(n_EditVec,sum_s_1) ; A_1 = 0;
int count0 = 0;
int count1 = 0;
for (int j_var=1; j_var<=n_var; j_var++){
if ((int)s_i(j_var)==0){
count0++;
x_0(count0) = x_tilde_i(j_var) ;
A_0.column(count0) = Data.EditMat.column(j_var) ;
} else {
count1++;
A_1.column(count1) = Data.EditMat.column(j_var) ;
}
}
Data.Debug = Debug;
if (!Data.PassStep1(s_i, A_0, x_0)) { return is_feasible;}
// Step 2: lpSolve to check whether s_i has a feasible solution of x_i
ColumnVector which_rows(n_EditVec); which_rows = 0 ;
for (int i_row=1; i_row<=n_EditVec; i_row++){
int n_zero = 0 ;
for (int j=1; j<=sum_s_1; j++){
if (A_1(i_row,j)==0) n_zero++;
}
if (n_zero<sum_s_1) which_rows(i_row) = 1 ;
}
Matrix A_1_red(which_rows.sum(),sum_s_1);
ColumnVector b_1_red(which_rows.sum());
Matrix A_0_red(which_rows.sum(),sum_s_0);
for (int i_row=1, count_row = 0; i_row<=n_EditVec; i_row++){
if (which_rows(i_row)==1){
count_row++;
A_1_red.row(count_row) = A_1.row(i_row) ; // Constraints
b_1_red.row(count_row) = Data.EditVec.row(i_row) ;
A_0_red.row(count_row) = A_0.row(i_row) ;
}
}
ColumnVector EditVec_shr = b_1_red - A_0_red * x_0 ;
if (initD_S) {
is_feasible = SolveLP(A_1_red, EditVec_shr,x);
} else {
is_feasible = SolveLP(A_1_red, EditVec_shr);
}
return is_feasible?1:0;
}