2017-02-21 45 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

我同意你說的基於梯度的優化可以給我們一個局部最優解,但我的問題是,我該怎麼辦打印出最佳值。必須有一些命令來打印它。 –