找回密码
 注册
Simdroid-非首页
查看: 173|回复: 13

[iSIGHT] 求助设置设计空间

[复制链接]
发表于 2008-4-19 22:23:27 | 显示全部楼层 |阅读模式 来自 安徽合肥
现在有设计变量a,b
-0.006<a<0.006
-0.004<b<a-0.002
但是isight里面不能用式子做bound

现在在plan里面用了if,if的句子是如果b-a<0.002则执行
但是在解空间,不应该有b-a>0.002的值,现在却是目标函数的初始值,这是不对的。
这个问题可以怎样解决呢,谢谢了,就是把不要的设计空间去掉。
发表于 2008-4-22 15:38:19 | 显示全部楼层 来自 北京
Simdroid开发平台
可以集成的时候添加一个计算器组件,添加一个中间参数d=b-a
然后在Parameters窗口,定义优化问题的时候,定义约束d<0.002

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-22 21:16:22 | 显示全部楼层 来自 安徽合肥
嗯。我是这样做的,但是在计算的时候还是会计算d>0.002的值。因为执行的是仿真程序,不满足运动条件会导致仿真失败,这时目标值会得到初始值;但是我这里得到初始值是不对的,我的目的应该这里的目标值为空。

也就是仿真条件不符的话应该在设计空间里先把仿真无法进行的点去掉。
然后在可以仿真的范围内求近似模型,进行优化。

我在想可否嵌套task。但是还是理不清。。
大家能再给些建议吗?谢谢
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-22 21:40:44 | 显示全部楼层 来自 安徽合肥
1。现在的问题就是因为b其实是以a为变化范围的,a又是变化的。
所以我担心,如果不在范围内,得到的目标值是初始值,而这里的设计空间其实是仿真不可行的,这样的取值对后续近似模型是有影响的。

2。新问题:同样在优化变量范围的选取上有同样的问题,当然,这些点肯定不是优化可行点,应该还好解决一些。

-0.006<a<0.006
-0.004<b<a-0.002
这样的取值范围应该是比较常见的啊,isight不能直接设置,应该有一些常用的解决方式吧。
求教,谢谢~
回复 不支持

使用道具 举报

发表于 2008-4-22 23:32:47 | 显示全部楼层 来自 浙江杭州

回复 3# 的帖子

把如下的代码写入优化算法设置里面 plan detail 的prologue中试试
api_SetInputConstraintBoundValue [api_GetTaskName] a lower -0.006
api_SetInputConstraintBoundValue [api_GetTaskName] a upper 0.006
api_SetInputConstraintBoundValue [api_GetTaskName] b lower -0.004
api_SetInputConstraintBoundValue [api_GetTaskName] b upper [expr [api_GetParameterValue  [api_GetTaskName]  y11] - 0.002]

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-23 10:53:30 | 显示全部楼层 来自 安徽合肥
非常感谢楼上!回头来报告结果
回复 不支持

使用道具 举报

发表于 2008-4-23 12:51:02 | 显示全部楼层 来自 北京
在集成界面下,添加if判断,如果满足d<0.002约束条件,才执行分析计算,否则不计算
回复 不支持

使用道具 举报

发表于 2008-4-23 13:50:40 | 显示全部楼层 来自 浙江杭州
这个方法也不错,但似乎麻烦了些
回复 不支持

使用道具 举报

发表于 2008-4-23 15:18:25 | 显示全部楼层 来自 北京
你的使用水平挺高的啊

把如下的代码写入优化算法设置里面 plan detail 的prologue中试试
$ U8 Z. R- J/ h+ h; dapi_SetInputConstraintBoundValue [api_GetTaskName] a lower -0.0068 [" T# b: U: `1 ?& Z
api_SetInputConstraintBoundValue [api_GetTaskName] a upper 0.006
4 l; E" a+ \% Yapi_SetInputConstraintBoundValue [api_GetTaskName] b lower -0.004
" t9 q( r9 N2 }, x: u6 C* e. n: Uapi_SetInputConstraintBoundValue [api_GetTaskName] b upper [expr [api_GetParameterValue [api_GetTaskName] y11] - 0.002]


介绍一下使用二次开发的经验啊

[ 本帖最后由 yekai 于 2008-4-23 15:19 编辑 ]
回复 不支持

使用道具 举报

 楼主| 发表于 2008-4-25 14:19:47 | 显示全部楼层 来自 安徽合肥
经过尝试,不行,DOE时仍旧执行不要的空间。而且不知道为什么DOE时执行仿真过后结果不能直接反应在后处理曲线中(用if语句时可以)。您知道什么原因吗?

在5楼的命令中,y11报错
改为
api_SetInputConstraintBoundValue [api_GetTaskName] mocapian lower -0.003
api_SetInputConstraintBoundValue [api_GetTaskName] mocapian upper 0.003
api_SetInputConstraintBoundValue [api_GetTaskName] deltacao lower -0.002
set x [api_GetParameterValue [api_GetTaskName] mocapian]
api_SetInputConstraintBoundValue [api_GetTaskName] deltacao upper [expr $x+0.002]

又不行,改为

api_AddInputConstraintBoundValue [api_GetTaskName] mocapian lower -0.003
api_AddInputConstraintBoundValue [api_GetTaskName] mocapian upper 0.003
api_AddInputConstraintBoundValue [api_GetTaskName] deltacao lower -0.002
set x [api_GetParameterValue [api_GetTaskName] mocapian]
api_AddInputConstraintBoundValue [api_GetTaskName] deltacao upper [expr $x+0.002]


仍旧不行。

这个命令应该加在哪里?我加在DOE的最后那个属性页不行,加在优化的最后那个属性页不行,两个都加也不行。正确的应该加在哪里呢?望指点。谢谢
回复 不支持

使用道具 举报

发表于 2008-4-25 15:03:55 | 显示全部楼层 来自 浙江杭州
楼上的朋友,我给你的只是在优化过程中的设计空间范围,如果需要DOE的话,则要另外写命令。
回复 不支持

使用道具 举报

发表于 2008-4-28 16:40:54 | 显示全部楼层 来自 北京
你还是用if判断吧,这样不管优化还是DOE都可以控制。if满足条件,就执行simcode,else if违反条件,目标值为0或者penalty=10000000(总之就是非常大 呵呵)这样就不会浪费时间再计算了。
大力水手说的也是好办法,看来已经是很高的境界了 哈哈
回复 不支持

使用道具 举报

发表于 2008-4-28 18:06:39 | 显示全部楼层 来自 浙江杭州
原帖由 jane8802 于 2008-4-28 16:40 发表
你还是用if判断吧,这样不管优化还是DOE都可以控制。if满足条件,就执行simcode,else if违反条件,目标值为0或者penalty=10000000(总之就是非常大 呵呵)这样就不会浪费时间再计算了。
大力水手说的也是好办法,看 ...


回复 不支持

使用道具 举报

发表于 2010-3-26 10:21:12 | 显示全部楼层 来自 北京海淀
13# strongsailor

请问if是怎样添加的,if条件加哪?加在仿真代码前,还是仿真代码中的input文件后?怎样让他跟仿真代码连在一起?可不可以请您详细指导一下?万分感谢!!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 02:31 , Processed in 0.122178 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表