24小时热门版块排行榜    

查看: 828  |  回复: 4

cg2016

新虫 (初入文坛)

[求助] 使用matlab进行参数拟合可以在搜索的时候设置待求参数的大小顺序吗? 已有2人参与

在使用matlab做参数拟合时,使用了遗传算法(ga)和levenberg-marquardt算法,在ga算法里面可以设置待求参数的大小顺序吗?比如我要求的是5个k,那么我想要让k1>k2>k3>k4>k5,这该怎么实现?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

吟风舞墨

银虫 (小有名气)

最好是贴出流程图
贴出部分程序代码
2楼2016-12-08 18:20:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cg2016

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 吟风舞墨 at 2016-12-08 18:20:00
最好是贴出流程图
贴出部分程序代码

lb = zeros(1,11);   % 参数下限
ub = ones(1,11)*1e+8;                % 参数上限
%遗传算法全局优化
[k, fval, exitflag, output, population, scores] = ga(@ObjFunc4ga,nvars,[],[],[],[],lb,ub,[],Options);
  fprintf('\n使用函数ga()估计得到的参数值为:\n')
     for i=1:11
         fprintf('\t k %d = %.6f\n',i,k(i));
     end
  fprintf('  The sum of the squares is: %.8f\n\n',fval)
%其中有些k的大小顺序是一定的k(2)<=k(4)<=k(6)<=k(8)
if k(2)<=k(4)
    return %这里该怎么返回重新进行全局优化
else
    continue;
end
%上述结果达到要求后进行下一步局部优化
  [k_1,resnorm,residual,exitflag,output,lambda,jacobian] =...
                 lsqnonlin(@ObjFunc4LNL,k,lb,ub,Options,ExpData);
            
%其余的就是微分方程组
3楼2016-12-08 19:19:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
cg2016: 金币+10, ★★★★★最佳答案 2016-12-09 09:39:53
在构造目标函数的时候,使用if语句,诸如
if k1>k2>k3>k4>k5 (这里的写法只是示例,实际代码需要用到“与”运算语句)
obj=...
esle
obj=+inf;
这种类似于罚函数法,因为+inf不可能是最优值,所以搜索的结果将满足k1>k2>k3>k4>k5的约束。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2016-12-08 20:51:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
加约束,变为有约束的拟和来求解即可。

[ 发自手机版 http://muchong.com/3g ]
5楼2016-12-08 23:13:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cg2016 的主题更新
信息提示
请填处理意见