ulu 发表于 2008-4-26 11:45

如何解决fmincon处理abs函数时的死循环问题

显然,如果在目标函数中使用了abs函数,目标函数将不可微,那么,能否使用fmincon来求最优呢?我用一个变参数的优化问题试了一下(fmincon默认选择中等规模算法——线搜索),有的时候可以成功出结果,有的时候fmincon看起来陷入死循环中。请问各位以下问题:
1、有没有办法使得fmincon不陷入死循环?
2、如果陷入了死循环,有没有办法跳出死循环,并继续运行?(人工的ctrl+c不行,这会使程序整个中断,白算了)

[ 本帖最后由 eight 于 2008-4-28 17:29 编辑 ]

ulu 发表于 2008-4-26 12:12

另外,不能用平方来等价,因为目标函数中除了abs外,还有别的,例如
         f =2 * x(1) + 5*abs(x(2)) ;

[ 本帖最后由 ulu 于 2008-4-26 12:14 编辑 ]

ch_j1985 发表于 2008-4-26 12:15

原帖由 ulu 于 2008-4-26 12:12 发表 http://www.chinavib.com/forum/images/common/back.gif
另外,不能用平方来等价,因为目标函数中除了abs外,还有别的,例如
         f =2 * x(1) + 5*abs(x(2)) ;

你有代码吗?有的话,一起帖出来吧

sogooda 发表于 2008-4-26 15:51

第一个我问题不知道,第二个问题可以记住循环的次数,超过一定次数就保存结果跳出循环就好了啊

kangtj 发表于 2008-4-29 08:59

fmincon目标函数如果超出定义的范围怎么办?比如exp(10.^10)
还有fmincon是如何求lambda算子系数的?

[ 本帖最后由 eight 于 2008-4-29 09:55 编辑 ]

ulu 发表于 2008-4-30 17:21

谢谢!
请问是在目标函数中加break吗?这样做不行呀
我遇到的问题是fmincon中的子函数死循环,而且还不知道是哪个函数死循环,怎么break?

zhjiaqing 发表于 2008-9-19 10:55

贴出问题大家才好帮你解决啊,这样凭空说是不能解决问题的

贴出问题大家才好帮你解决啊,这样凭空说是不能解决问题的
页: [1]
查看完整版本: 如何解决fmincon处理abs函数时的死循环问题