- 积分
- 0
- 注册时间
- 2011-9-30
- 仿真币
-
- 最后登录
- 1970-1-1
|
。本人一直做优化方法的编程。最早接触的的是99行程序,一直以为是理解了。可现在发觉自己还是似懂非懂,知其然不知其所以然。
以99行程序为例,他的优化方法使用的是OC法,即准则法。通过对单约束问题的目标函数及体积约束得到拉格朗日函数,再通过K-T条件,推导出变量迭代因子。B。B为负的
目标函数敏度除以约束的敏度除以拉格朗日乘子。在程序里是xnew = max(0.001,max(x-move,min(1.,min(x+move,x.*sqrt(-dc./lmid)))));中的-dc./lmid,然后又给B开方以保证计算的稳定性和收敛性。拉格朗日乘子通过二分法计算。
这里,我想问的是,想要设计变量正常更新,B或者根号B应该是一个接近于1的数,才能保证更新后的设计变量取值在01之间。那又按照原理,如果目标函数的敏度,以及约束的敏度都推导正确的话,这个B的值是不是就能够保证在1附近呢?
也就是说,如果我的B求解出来都是10左右的数的话,说明敏度一定求错了吗?
另外,还想问一个问题,关于张卫红老师的多相多孔材料/结构的集成优化设计这篇文章,有两类设计变量,分别为ζ(j),γ(j),及实体材料的相对密度,其中一种材料的相对密度。所以目标函数对设计变量的敏度也分两类。如果用OC法求解的话,应该是分别对ζ(j),γ(j)更新呢?还是把ζ(j),γ(j)同时放到二分法的迭代中去求得一个相同的拉格朗日乘子?
不知道表达的够不够清楚,希望各位大侠挺身而出帮帮在下啦~~~感激不尽~~~ |
|