24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1878  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ydwcheer

铁虫 (初入文坛)


[求助] 求助一种迭代算法已有2人参与

我最近遇到一个问题,困扰有一段时间了,新人,很多地方不会,还请多多关照。

     问题 是 :

     我这里有5个x,【x1,x2,  x3,  x4,  x5】(x有一定范围,0-5000), 经过一系列运算后,中间过程比较复杂,5个x都要参与运算,应该算是强耦合,得到新一代的5个x,如果第一代的5个x和第二代的5个x,分别互相都满足误差小于5%,就可以退出来,说明5个x算算正确了;不然就一代一代的运算,直到满足为止。

     大概流程如图,主要问题是图中红字的部分。之前我试着用2分法去做,发现误差波动很大,一直无法满足5个都收敛。后来又去用遗传算法计算,确实比较准确,但时间太长了,算了一天多,完全不能接受,反而把问题搞复杂了。我这个菜鸟只希望计算迭代过程最好可以控制在30代以内吧,不然计算时间就太长了,毕竟计算一代matlab都要2分钟,中间过程代码有点多,不要打我,呜呜。我是工科学生,对算法这块不了解,希望大神可以指点。

     谢谢啦
求助一种迭代算法
流程图.png
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

和一般的优化问题没什么不同吧,关键是如何定义目标函数:

Min. abs(abs(x1-x1')/x1-5/100)+abs(abs(x2-x2')/x2-5/100)+abs(abs(x3-x3')/x3-5/100)+abs(abs(x4-x4')/x4-5/100)+abs(abs(x5-x5')/x5-5/100);

上面的目标函数最小即可。
7楼2018-06-21 10:01:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ydwcheer 的主题更新
信息提示
请填处理意见