matble 中ga迭代速度过慢解决方案

ga算法的通过修改调用函数的赋值方式增速

遗传算法(genetic algorithm)

是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程计算模型,是一种通过模拟自然进化过程搜索最优解的方法。下面我将分享自己在做GA模型的心得与困惑。

ga迭代代码

 LB = [1,0,0]; UB = [5,T(1),1]; % Input the ranges of parameters b, v, c

 [x,fval,exitflag,output] = ga(@(x)fun_text(x),length(LB),[],[],[],[],LB,UB);

ga 迭代加速的方法

将原来使用subs的替换方方法变成字符串替换

ga的迭代函数

global Mat2

在执行ga之前已经计算好的符号表达式

函数部分
function s = fun_test(P)


global Mat2;
 b=P(:,1);
 v=P(:,2);
 c = P(:,3);


newStr = strrep(Mat2,'b',num2str(b));
newStr = strrep(newStr,'v',num2str(v));
newStr = strrep(newStr,'c',num2str(c));
a=vectorize(newStr);
s =eval(a);

end

速度对比

原先运行需要几个小时,现在仅需分钟级别

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值