VectorXf NewSolution( VectorXf x0 , float Step, int point, VectorXf t_reg){ //generate new solution on the simplex defined in [t_reg(0)-x0-t_reg(N-1)] using a displacement of size Step // x0 : initial solution // Step : displacement size // point: knot to perturb // t_reg: time_grid VectorXf InitConf (2+ x0.size()); InitConf(0) = t_reg(0); InitConf( x0.size()+1) = t_reg.maxCoeff() ; InitConf.segment(1, x0.size()) = x0; float LowBou = InitConf(point-1); float UppBou = InitConf(point+1); float New_State = (UppBou - LowBou) * Step + LowBou; InitConf(point) = New_State; //if ( MonotonicityCheck( InitConf.segment(1, x0.size()) ) == -1) { // cout << "We generated a unacceptable solutiion" << endl << "Initial seed was : " << x0.transpose() // << endl << " and we produced :"<<InitConf.segment(1, x0.size()).transpose() << endl;} return (InitConf.segment(1, x0.size()) ) ; }
void DenseCRF::setKernelParameters( const VectorXf & v ) { std::vector< int > n; for( unsigned int k=0; k<pairwise_.size(); k++ ) n.push_back( pairwise_[k]->kernelParameters().rows() ); int np=0; for( unsigned int k=0; k<pairwise_.size(); k++ ) np += n[k]; for( unsigned int k=0,i=0; k<pairwise_.size(); k++ ) { pairwise_[k]->setKernelParameters( v.segment( i, n[k] ) ); i += n[k]; } }