2017-02-21 70 views
0

这是一个自动体系结构代码(来源:http://openmdao.org/releases/0.13.0/docs/tutorials/mdao/optproblem.html) 我怀疑将打印目标函数的最小值的代码是什么。 这可能是非常微不足道的,但我没有得到它。我尝试使用eval_objective,但它不工作。什么代码将被添加到这个现有的?自动体系结构的eval_objective命令

def display_results(): 
    print "Minimum found at (%f, %f, %f)" % (problem.dis1.z1, 
            problem.dis1.z2, 
            problem.dis1.x1) 
    print "Couping vars: %f, %f" % (problem.dis1.y1, problem.dis2.y2) 
    print "Function calls dis1: %d, dis2: %d"%(problem.dis1.exec_count,problem.dis2.exec_count) 
    print "\n" 

回答

0

该代码假定优化程序完成并将模型放在提供最低目标的点上。对于所有基于梯度的优化器,这是一个合理的假设。

要做到同样的事情在openmdao> 1.7.x,请参阅以下教程: http://openmdao.readthedocs.io/en/1.7.3/usr-guide/tutorials/paraboloid-tutorial.html#optimization-of-the-paraboloid-with-a-constraint

print('Minimum of %f found at (%f, %f)' % (top['p.f_xy'], top['p.x'], top['p.y'])) 
+0

我同意你说的基于梯度的优化可以给我们一个局部最优解,但我的问题是,我该怎么办打印出最佳值。必须有一些命令来打印它。 –