Board logo

标题: 有谁用过matlab里fimincon函数? [打印本页]

作者: ThereCS    时间: 2011-9-29 18:08     标题: 有谁用过matlab里fimincon函数?

如果函数找不到解,能否通过改变TolX使方程组有解?
作者: cs4ever    时间: 2011-9-29 18:23

如果函数找不到解,能否通过改变TolX使方程组有解?
ThereCS 发表于 2011-9-29 19:08



    建议换一个优化方法,比如用1stOpt试一下。
作者: ThereCS    时间: 2011-9-29 19:37

可以在Matlab里用吗?
作者: christian_chen    时间: 2011-9-30 08:02

找不到解的意思是迭代不收敛?还是什么? 我个人的经验是这个函数收敛到局部极值问题不大(dF/dxi=0),但是不一定是全局解。你如果对问题参数不熟悉且问题的规模也一般可以试试Generic Algorithm(GA)和Simulated Annealing (SA)。
作者: ThereCS    时间: 2011-9-30 10:39

提示说,options.TolX<设定值1e-3,但是TolCon超过设定值1e-3。所以optimization停止了,方程最小值,没找到。然后,我把TolCon的值改大到1e0,他算出了一个结果,但是下一个循环TolCon又超出了。
难道我只能把TolCon的值再改大?这个TolCon的值对结果会有影响吗?
作者: sophiemarceau    时间: 2011-9-30 16:56

options.DiffMinChange设了没?
作者: windyabit    时间: 2011-9-30 17:46

1。检查初始值值是否是feasible,对非线性问题初始值很关键
2。检查equation的Tol,适当调大一点,比如1e-3
3。换个solver,比如snopt。matlab自带的optimizer不好用
作者: ThereCS    时间: 2011-9-30 21:10

1。检查初始值值是否是feasible,对非线性问题初始值很关键
2。检查equation的Tol,适当调大一点,比如1e- ...
windyabit 发表于 2011-9-30 18:46


你是指MaxFunEvals(函数允许估值的最大值)还是TolFun(函数迭代的终止误差)?
不太明白两者的区别。
作者: ThereCS    时间: 2011-10-2 09:26

Ding
作者: windyabit    时间: 2011-10-2 17:08

回复 7# windyabit


   
应该都不是我说的,feasible是指初始值是否满足约束条件




欢迎光临 人在德国 社区 (http://csuchen.de/bbs/) Powered by Discuz! 7.2