matlab高手,在for循环中,设置每个循环的最大时间,如果超过该时间,跳出本次循环,进入下一次循环。

举个例子:fori=1:10000z=fmincon(@f(x),x0);end.这个例子里,如果我在某次,比如第k次吧,寻求f(x)的最小值时耗时过长,我需要直接进入到... 举个例子:
for i=1:10000
z=fmincon(@f(x),x0);
end.
这个例子里,如果我在某次,比如第k次吧,寻求f(x)的最小值时耗时过长,我需要直接进入到k+1次循环,请问具体的实现方法是什么?请大神指点!
假设我每次循环执行的时间上限是1分钟。
展开
 我来答
tianxiawulang
2016-08-31 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2624万
展开全部
题主的想法很不错,但答案可能让你失望:MATLAB 的循环并没有提供限制最大运行时间的这样一种机制。

事实上,这种机制要求完成时间限制的进程具备更高的优先级,能够终结循环体对应的进程,也就是异常退出。我想不出自己熟悉的编程语言有哪个提供了这种能力。
之所以不提供这种机制,原因也是可以理解的:如果要求一旦到达指定的最大时间限制,就直接立即结束该进程,显而易见的后果是,当然会导致这个进程不能提供正常的输出。而更严重的是,在这个进程内部,完全可能存在会造成其它影响的行为,异常结束进程往往会存在安全隐患。

作为一种变通的做法,可以通过改写循环体的内容,一定程度上达到希望的要求。比如,改写fmincon函数,在其主循环中加入时间判断,一旦到了要求的时间,就放弃该次优化,返回失败的结果。但这并不能保证精确地满足时间限制。
PeriShare
2016-08-30 · 分享PD理论最新研究成果和进展
PeriShare
采纳数:2408 获赞数:36827

向TA提问 私信TA
展开全部
建议不要这么弄,你可以试一试不同的初值,然后能够解决问题的那个就好。
追问
恩,这个我知道,不过因为是循环,我不确定到底到哪次会出现这种跑不下去的问题。
追答
[X,FVAL,EXITFLAG]=fmincon(@f(x),x0);
while(EXITFLAG~=1)
[X,FVAL,EXITFLAG]=fmincon(@f(x),rand(size(x0)));
end
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式