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


C++ Simplex::set_vertex_h方法代码示例

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


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

示例1: simplex_min

Point MainWindow::simplex_min(Simplex &smplx, double eps) { //number of simplex vertexes: N_DIM + 1
    const double alpha = 1.0;
    const double beta = 0.5;
    const double gamma = 2.0;
    double theta;
    double f_l, f_g, f_h, f_c, f_reflected;

    Point::n = N_DIM;
    unsigned iter=0;
    while(!smplx.QuitCase(smplx, eps))
    {
        sort_simplex(smplx);
        f_l = func(smplx.get_l());
        f_g = func(smplx.get_g());
        f_h = func(smplx.get_h());
//        Point a = (smplx.get_c()*(1 + alpha)); Point b = (smplx.get_h() * alpha);
//        smplx.set_reflected(a - b);
        Point a = (smplx.get_c()*(1 + alpha)) - (smplx.get_h() * alpha);
        smplx.set_reflected(a); //test reflection
        f_reflected = func(smplx.get_reflected());
        if (f_l < f_reflected && f_reflected < f_g) theta = alpha;
        if (f_reflected <= f_l) theta = gamma;
        if (f_g <= f_reflected && f_reflected < f_h)
            theta = beta;
        else if(f_reflected >= f_h) theta = -beta;
        Point temp = smplx.get_h() + (smplx.get_c() - smplx.get_h())*(1 + theta);
        smplx.set_vertex_h(temp);
        ++iter;
        if (iter > 1000)
        {
            qDebug()<<"x="<<smplx.get_h().coord[0];
            qDebug()<<"y="<<smplx.get_h().coord[1];
            break;
        }
//        smplx.set_vertex_h(smplx.get_h() + (smplx.get_c() - smplx.get_h())*(1 + theta));
    }
    return smplx.get_l();
}
开发者ID:stranger1,项目名称:resource_optimization,代码行数:38,代码来源:mainwindow.cpp


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