首页/文章/ 详情

HyperStudy_进行内部Rosenbrock函数最小化研究

10月前浏览416

 

了解如何使用Preference文件(.mvw) 在HyperStudy中注册Compose/OML或python functions,然后使用已注册的函数在研究中进行输出响应评估。

Rosenbrock functions被定义为python或OML脚本,并在HyperStudy中注册。

该示例定义了两个分别标记为x和y的输入变量。优化的目标是最小化f(x,y)= 100(y-x^2)^2 +(1-x)^2*。x和y的范围设置为[-2 ; -2] ,起点为[-1 ; -1]。

一、定义Rosenbrock functions

在此步骤中,您将使用Compose或Python定义Rosenbrock functions。

使用Compose定义Rosenbrock functions。

1.启动Compose。

2.在菜单栏中,单击File>New>OML FILE。

3.在编辑器中,输入以下OML命令:

function f = ros_eval(x,y)

f = 100.0*(y-x^2)^2 + (1-x)^2

4.在菜单栏中,单击File>Save As。

5.在Save As对话框中,导航到您的工作目录并将文件另存为rosenbrock_function.oml。

6.通过单击菜单栏中的File>Exit退出编写。

Tip:在Compose中使用OML functions的Register functions ...功能时,请避免后续的Preferences File.步骤。突出显示函数名称,然后右键单击以在上下文菜单上 访问此功能。

使用Python定义Rosenbrock functions。

7.在您最喜欢的文本编辑器中,输入以下python命令:

  def ros_eval(x, y):
    return 100*(y-x*x)*(y-x*x) + (1-x)*(1-x)

8.在菜单栏中,单击File>Save As。

9.在Save As对话框中,导航到您的工作目录并将文件另存为rosenbrock_function.py。

二、将函数添加到Preferences File.

在此步骤中,您将把OML/python functions添加到Preference文件中。

将OML functions添加到Preference文件中。

1.在文本编辑器中,输入以下OML注册函数:

*Id(HyperGraph v11.0)

*BeginDefaults()

*BeginPlotDefaults()

*SetOMLRootDir(C:/Program Files/Altair/2019/Compose2019)

*RegisterOMLFunction(ros_eval,/rosenbrock_function.oml,2)

*EndPlotDefaults()

*EndDefaults()

2.将 替换为文件的实际位置。

3.修改*SetOMLRootDir语句以指向适当的位置。

4.将文件另存为名称为rosenbrock_prefs.mvw file的Preferences File.。

5.关闭文本编辑器。

将python functions添加到Preference文件中。

6.在文本编辑器中,输入以下python注册函数:

*Id(HyperStudy v14.0)

*BeginDefaults()

*BeginPlotDefaults()

*RegisterPythonFunction(ros_eval,/rosenbrock_function.py,2)

*EndPlotDefaults()

*EndDefaults()

7.将 替换为.py文件的实际位置。

8.将文件另存为名称为rosenbrock_prefs.mvw file的Preferences File.。

9.关闭文本编辑器。

三、执行研究设置

1.启动HyperStudy。

2.设置Preference文件。

a)在菜单栏中,单击File>UsePreferences File.。

b)在HyperStudy - setting - Preferences File.对话框中,打开rosenbrock_prefs.mvw文件。

3.通过以下方式开始新研究:

o在菜单栏中,单击File>New。

o在功能区上,单击。

4.在Add Study对话框中,输入研究名称,选择研究的位置,然后单击OK。

5.转到Define Models步骤。

6.添加Internal Math模型。

a)单击Add Model。

b)在Add对话框中,选择Internal Math,然后单击OK。

7.转到Define Input Variables步骤。

8.添加输入变量。

a)单击Add input variable两次。

b)在工作区中,标记输入变量x和y。

c)将输入变量的下限、初始和上限更改为图1中指示的值。

img  

四、执行试运行

1.转到Test Models步骤。

2.单击Run Define。在study Directory中创建approaches/setup_1-def/ 目录。approaches/setup_1-def/run__00001/m_1目录包含输入文件,该文件是试运行的结果。

五、创建和评估输出响应

1.转到Define Output Responses步骤。

2.单击Add Output Response。

3.在Response 1的Expression列中,单击。

4.在Expression Builder中,单击Functions选项卡。

5.从可用函数列表中,选择ros_eval。

6.单击Insert varname。函数ros_eval() 将显示在Evaluate Expression字段中。

7.单击Input Variables选项卡。

8.在工作区中,选择输入变量x和y。

9.单击Insert varname。

img  

输入变量在表达式中显示为ros_eval(var_1, var_2)。

img  

10.单击OK。

11.单击Evaluate。表达式ros_eval(var_1, var_2) 更改为404。

六、运行优化

1.添加优化。

a)在Explorer中,右键单击并从上下文菜单中选择Add。

b)在Add对话框中,选择Optimization。

c)对于Definition from,选择一种方法,然后单击OK。

2.转到Optimization>Definition>Define Output Responses步骤。

3.单击Objectives/Constraints - Goals选项卡。

4.将目标添加到响应1。

a)单击Add Goal。

b)在Type列中,选择Minimize。

img  

5.转到Optimization>Specifications步骤。

6.在工作区中,将Mode设置为Adaptive Response Surface Method(ARSM)。

Note:只启用对问题表述有效的方法。

7.单击Apply。

8.转到Evaluate步骤。

9.单击Evaluate Tasks。

10.Optional:点击Iteration Plot选项卡以监控优化进度。

迭代历程记录显示objective值显著减少。Rosenbrock functions有一个全局最小值,任何优化器都很难找到,因为它在真正最优区域是平坦的,并且ARSM没有找到(x,y)=(1,1) 的理论解。

img  

 


来源:TodayCAEer
python理论AltairDAP
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-05
最近编辑:10月前
TodayCAEer
本科 签名征集中
获赞 87粉丝 197文章 781课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈