本文整理汇总了C++中AbstractLinAlgPack::force_in_bounds_buffer方法的典型用法代码示例。如果您正苦于以下问题:C++ AbstractLinAlgPack::force_in_bounds_buffer方法的具体用法?C++ AbstractLinAlgPack::force_in_bounds_buffer怎么用?C++ AbstractLinAlgPack::force_in_bounds_buffer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AbstractLinAlgPack
的用法示例。
在下文中一共展示了AbstractLinAlgPack::force_in_bounds_buffer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_step
bool PreEvalNewPointBarrier_Step::do_step(
Algorithm& _algo, poss_type step_poss, IterationPack::EDoStepType type
,poss_type assoc_step_poss
)
{
using Teuchos::dyn_cast;
using IterationPack::print_algorithm_step;
using AbstractLinAlgPack::force_in_bounds_buffer;
NLPAlgo &algo = dyn_cast<NLPAlgo>(_algo);
IpState &s = dyn_cast<IpState>(_algo.state());
NLP &nlp = algo.nlp();
NLPFirstOrder *nlp_foi = dynamic_cast<NLPFirstOrder*>(&nlp);
EJournalOutputLevel olevel = algo.algo_cntr().journal_output_level();
std::ostream& out = algo.track().journal_out();
if(!nlp.is_initialized())
nlp.initialize(algo.algo_cntr().check_results());
// print step header.
if( static_cast<int>(olevel) >= static_cast<int>(PRINT_ALGORITHM_STEPS) )
{
using IterationPack::print_algorithm_step;
print_algorithm_step( _algo, step_poss, type, assoc_step_poss, out );
}
IterQuantityAccess<value_type> &barrier_parameter_iq = s.barrier_parameter();
IterQuantityAccess<VectorMutable> &x_iq = s.x();
if( x_iq.last_updated() == IterQuantity::NONE_UPDATED )
{
if( static_cast<int>(olevel) >= static_cast<int>(PRINT_ALGORITHM_STEPS) )
{
out << "\nInitialize x with x_k = nlp.xinit() ...\n"
<< " and push x_k within bounds.\n";
}
VectorMutable& x_k = x_iq.set_k(0) = nlp.xinit();
// apply transformation operator to push x sufficiently within bounds
force_in_bounds_buffer(relative_bound_push_,
absolute_bound_push_,
nlp.xl(),
nlp.xu(),
&x_k);
// evaluate the func and constraints
IterQuantityAccess<value_type>
&f_iq = s.f();
IterQuantityAccess<VectorMutable>
&Gf_iq = s.Gf(),
*c_iq = nlp.m() > 0 ? &s.c() : NULL;
IterQuantityAccess<MatrixOp>
*Gc_iq = nlp_foi ? &s.Gc() : NULL;
using AbstractLinAlgPack::assert_print_nan_inf;
assert_print_nan_inf(x_k, "x", true, NULL); // With throw exception if Inf or NaN!
// Wipe out storage for computed iteration quantities (just in case?) : RAB: 7/29/2002
if(f_iq.updated_k(0))
f_iq.set_not_updated_k(0);
if(Gf_iq.updated_k(0))
Gf_iq.set_not_updated_k(0);
if (c_iq)
{
if(c_iq->updated_k(0))
c_iq->set_not_updated_k(0);
}
if (nlp_foi)
{
if(Gc_iq->updated_k(0))
Gc_iq->set_not_updated_k(0);
}
}
if (barrier_parameter_iq.last_updated() == IterQuantity::NONE_UPDATED)
{
barrier_parameter_iq.set_k(-1) = 0.1; // RAB: 7/29/2002: This should be parameterized! (allow user to set this!)
}
// Print vector information
if( static_cast<int>(olevel) >= static_cast<int>(PRINT_VECTORS) )
{
out << "x_k =\n" << x_iq.get_k(0);
}
return true;
}