hanihaoma 发表于 2009-5-20 20:20

应用 fminsearch 函数时 如何限定所要求函数参数的范围

在用 fminsearch 函数时
=fminsearch(@abc,)
这样直接求出的 长宽高 h b L 超出了我需要求的范围。
我需要的条件是 5h<b 5b<L;
不知道用什么方法来对 fminsearch 函数限定这个条件。
有知道的朋友告诉下,谢。

[ 本帖最后由 hanihaoma 于 2009-5-20 23:02 编辑 ]

ChaChing 发表于 2009-5-20 21:04

有限制的问题还可用fminsearch吗?
fminsearch- Find minimum of unconstrained multivariable function using derivative-free method

hanihaoma 发表于 2009-5-20 21:19

那请问我这种情况,有没有其他比较合适的函数可以用呢??

ChaChing 发表于 2009-5-20 21:25

个人也不熟, 也要动手找! so 那就LZ找先了!

hanihaoma 发表于 2009-5-20 21:57

用 fminbnd 可以设定范围,但是只能有一个变量。
我需要同时设定3个变量的范围,暂时没有找到合适的。
有没有其他方法可以实现呢?

friendchj 发表于 2009-5-20 21:57

fmincon
Find minimum of constrained nonlinear multivariable function

hanihaoma 发表于 2009-5-20 22:25

我这样设定范围
=fmincon(@abc,,[-1 0 0;5 0 0;0 5 0;0 0 1],')
条件矩阵表示:1 h>0
                            2 5h<b
                            3 5b<L
                            4 L<5000e-6
不知道对不对,我的版本是6.5的 ,按照上述程序运行很慢,都15分钟了还没出结果呢。
所以上来求证下,所做正确否。

ChaChing 发表于 2009-5-20 22:47

条件矩阵好像与h<5b<5L不同!?

hanihaoma 发表于 2009-5-20 23:09

改了下条件应该是5h<b 5b<L
程序也改了下
=fmincon(@abc,',[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1;0 0 1],')

参数矩阵 改成了3行 1列。
条件 1      h1-10e-6<h1<h1+10e-6;
         2      b1-20e-6<b1<b1+20e-6;
         3      L1-100e-6<L1<L1+100e-6;
可以运行,能得到结果,虽然时间比较长。
但得到的结果 h1 不符合条件结果中 h1=1.6941e-021 不知道为什么
h1-10e-6这种形式matlab 认识吧,还是需要写成 h1-0.00001这种形式?

hanihaoma 发表于 2009-5-25 21:29

楼上的形式不知道为什么运行结果不再限定条件中,要在限定条件中可以用如下形式:
=fmincon(@abc,',[-1 0 0;1 0 0;0 -1 0;0 1 0;0 0 -1;0 0 1],','','',',')
页: [1]
查看完整版本: 应用 fminsearch 函数时 如何限定所要求函数参数的范围