当前位置: 首页>>代码示例>>C++>>正文


C++ Eval_Point::set_mesh_index方法代码示例

本文整理汇总了C++中nomad::Eval_Point::set_mesh_index方法的典型用法代码示例。如果您正苦于以下问题:C++ Eval_Point::set_mesh_index方法的具体用法?C++ Eval_Point::set_mesh_index怎么用?C++ Eval_Point::set_mesh_index使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在nomad::Eval_Point的用法示例。


在下文中一共展示了Eval_Point::set_mesh_index方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Exception


//.........这里部分代码省略.........
      const NOMAD::Direction * dir = x[i]->get_direction();
      if ( dir && ( dir->is_mads() || dir->get_type()==NOMAD::MODEL_SEARCH_DIR ) ) {

	// get the x_k's signature:
	signature = x[i]->get_signature();
	if ( !signature )
	  throw NOMAD::Exception ( "Speculative_Search.cpp" , __LINE__ ,
	  "Speculative_Search::search(): could not get the signature" );
      
	xkm1 = *x[i] - *dir;
      
	lk = lkm1 = *x[i]->get_mesh_index();
	NOMAD::Mesh::update ( NOMAD::FULL_SUCCESS , lk );
      
	n           = signature->get_n();
	delta_m_k   = NOMAD::Point ( n );
	delta_m_km1 = NOMAD::Point ( n );
	factor      = NOMAD::Point ( n );

	signature->get_mesh().get_delta_m ( delta_m_k   , lk   );
	signature->get_mesh().get_delta_m ( delta_m_km1 , lkm1 );
      
	// multiplicative factor: takes into account the fact that
	// the direction contains \Delta^m_k:
	try {

	  // factor = delta_m_k / delta_m_km1 :
	  for ( int k = 0 ; k < n ; ++k ) {
	    if ( delta_m_k[k].is_defined()   && delta_m_km1[k].is_defined() &&
		 delta_m_k[k].value() != 0.0 && delta_m_km1[k].value() != 0.0 )
	      factor[k] = delta_m_k[k] / delta_m_km1[k];
	    else
	      factor[k] = 0.0;
	  }
	}
	catch ( NOMAD::Double::Invalid_Value & ) {
	  if ( display_degree == NOMAD::FULL_DISPLAY )
	    out << "could not compute " << _type << " point: stop" << std::endl
		<< NOMAD::close_block ( "end of speculative search" );
	  stop        = true;
	  stop_reason = NOMAD::MESH_PREC_REACHED;
	  return;
	}
      
	if ( lkm1 <= 0 )
	  factor *= NOMAD::Mesh::get_mesh_update_basis();
      
	// speculative search point:
	NOMAD::Direction new_dir ( n , 0.0 , dir->get_type() );
	new_dir.Point::operator = ( factor * *dir );
      
	sk = new NOMAD::Eval_Point;
	sk->set ( n , _p.get_bb_nb_outputs() );
	sk->set_signature  ( signature );
	sk->set_direction  ( &new_dir );
	sk->set_mesh_index ( &lk );
      
	sk->Point::operator = ( xkm1 + new_dir );

	if ( display_degree == NOMAD::FULL_DISPLAY ) {
	  out << "trial point #" << sk->get_tag()
	      << ": ( ";
	  sk->Point::display ( out ," " , 2 , NOMAD::Point::get_display_limit() );
	  out << " )" << std::endl;
	}
      
	// add the new point to the list of search trial points:
	ev_control.add_eval_point ( sk                      ,
				    display_degree          ,
				    _p.get_snap_to_bounds() ,
				    NOMAD::Double()         ,
				    NOMAD::Double()         ,
				    NOMAD::Double()         ,
				    NOMAD::Double()           );
      }
    }
  }
  
  nb_search_pts = ev_control.get_nb_eval_points();
  
  // eval_list_of_points:
  // --------------------
  new_feas_inc = new_infeas_inc = NULL;

  ev_control.eval_list_of_points ( _type                   ,
				   mads.get_true_barrier() ,
				   mads.get_sgte_barrier() ,
				   mads.get_pareto_front() ,
				   stop                    ,
				   stop_reason             ,
				   new_feas_inc            ,
				   new_infeas_inc          ,
				   success                   );

  if ( display_degree == NOMAD::FULL_DISPLAY ) {
    std::ostringstream oss;
    oss << "end of speculative search (" << success << ")";
    out << NOMAD::close_block ( oss.str() ) << std::endl;
  }
}
开发者ID:berndbischl,项目名称:R-Package-crs,代码行数:101,代码来源:Speculative_Search.cpp

示例2: delta_m_max


//.........这里部分代码省略.........
    int                      m          = _p.get_bb_nb_outputs();
    int                      mesh_index = NOMAD::Mesh::get_mesh_index();
    int                      pm1        = p-1;

    // mesh sizes:
    NOMAD::Point delta_m_max(n);
    signature->get_mesh().get_delta_m(delta_m_max , NOMAD::Mesh::get_min_mesh_index());

    NOMAD::Double delta_m_i;
    NOMAD::Point  delta_m;
    if (!_initial_search)
        signature->get_mesh().get_delta_m(delta_m , mesh_index);

    // fixed variables:
    const NOMAD::Point &fixed_variables = signature->get_fixed_variables();

    // bb input types:
    const std::vector<NOMAD::bb_input_type> &bbit = signature->get_input_types();

    // bounds:
    const NOMAD::Point &lb = signature->get_lb();
    const NOMAD::Point &ub = signature->get_ub();

    // pts contains n points of dimension p: each of these points contains
    // p different values for each variable:
    NOMAD::Point **pts = new NOMAD::Point * [n];

    // creation of p search points:
    for (int k = 0 ; k < p ; ++k)
    {

        x = new NOMAD::Eval_Point(n , m);
        x->set_signature(signature);
        x->set_mesh_index(&mesh_index);

        for (i = 0 ; i < n ; ++i)
        {

            if (k==0)
            {
                if (fixed_variables[i].is_defined())
                    pts[i] = new NOMAD::Point(p , fixed_variables[i]);
                else if (bbit[i] == NOMAD::CATEGORICAL)
                {
                    pts[i] = new NOMAD::Point(p , (*ref)[i]);
                }
                else
                {
                    pts[i] = new NOMAD::Point(p);

                    // for the initial mesh: delta_m is not used and there will
                    // be no projection on mesh:
                    if (!_initial_search)
                        delta_m_i = delta_m[i];

                    values_for_var_i(p               ,
                                     delta_m_i       ,
                                     delta_m_max[i]  ,
                                     bbit       [i]  ,
                                     lb         [i]  ,
                                     ub         [i]  ,
                                     *pts       [i]);
                }
            }

            (*x)[i] = (*pts[i])[k];
开发者ID:TheLoutre,项目名称:nomad,代码行数:67,代码来源:LH_Search.cpp


注:本文中的nomad::Eval_Point::set_mesh_index方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。