声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3093|回复: 6

[计算数学] 比例故障率模型参数估计及模型参数初始值的确定

[复制链接]
发表于 2014-3-19 15:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比例故障率模型,即PHM模型参数估计问题。采用极大似然函数估计方法求解,得到的非线性方程组图所示,很多文献都说采用Nelder-Mead方法求解,想请问各位:1.Nelder-Mead能求解这类非线性方程组问题吗?2由于常数项具体数值不确定,具体的函数表达式不能确定,这种情况下如何求解该非线性方程组?

极大似然函数方程组

极大似然函数方程组
回复
分享到:

使用道具 举报

 楼主| 发表于 2014-3-19 19:52 | 显示全部楼层
没有人知道吗?希望知道的帮帮忙!非常感谢
发表于 2014-3-25 09:39 | 显示全部楼层
不太了解PHM模型,只知道Nelder-Mead算法适合变量数不是很多的方程求极值。
不知道你的方程中哪些是变量,哪些是常量

另外“常数项具体数值不确定”不知道是什么意思?
发表于 2014-3-25 09:41 | 显示全部楼层

      算法原理:Nelder-Mead法是利用多面体来逐步逼近最佳点x*.设函数变量为n维,则在n维空间里多面体有(n+1)个顶点.设x1,x2,...,xn+1为多面体的顶点,且满足:
                                 f(x1)<=f(x2)<=...<=f(xn+1)
      Nelder-Mead法试着将多面体中最差的顶点xn+1(也就是函数的最大点)以新的最佳点替代,来更新多面体,使之逼近最佳解.更新的设定方式有四种,分别是:反射,扩展,外收缩,内收缩.如果这四种方法都不适用,则进行变小步骤.
      算法实现:
      在matlab中编程实现Nelder-Mead算法为:Opt-Nelder.
       功能:Nelder-Mead算法求无约束最优化解.
      调用格式:[xo,fo]=Opt_Nelder(f,x0,TolX,TolFun,MaxIter).
       其中,f为函数名;
               x0为搜索初值;  
              TolX为最优值点间的误差阈值;
              TolFun为函数的误差阈值;
              xo为最优化点值;
             fo为函数在点xo处的函数值;
      算法程序分Nelder0.m和Opt-Nelder.m其中子程序Nelder0.m用于二维空间上的多边形最优化逼近.对于大于2维的情形,可以通过若干次二维迭代计算求出最优值.Opt-Nelder.m可求解若干维变量的最优化问题.
      (1)Nelder0.m
  1. function [xo,fo]=Nelder0(f,abc,fabc,TolX,TolFun,k)
  2. %二维空间中的多边形逼近
  3. %   f:函数名
  4. %   abc:二维空间三个顶点值
  5. %   fabc:三个顶点处的函数值
  6. %   TolX:最优点的误差阈值
  7. %   TolFun:最优点处的函数值的误差阈值
  8. %   k:最大迭代次数
  9. %%%%确定三个顶点a,b,c并且按其函数值从小到大排列
  10. [fabc,I]=sort(fabc);%将二维空间中的多边形三个顶点的函数值按从小到大排列
  11. a=abc(I(1),:);
  12. b=abc(I(2),:);
  13. c=abc(I(3),:);
  14. fa=fabc(1);
  15. fb=fabc(2);
  16. fc=fabc(3);
  17. %%%%判断三点或三点函数值的距离是否小于给定阈值.若小于阈值则停止循环,得最优解x0=a
  18. fba=fb-fa;
  19. fcb=fc-fb;
  20. if k<=0 | abs(fba)+abs(fcb)<TolFun | abs(b-a)+abs(c-b)<TolX
  21. xo=a;
  22. fo=fa;
  23. else
  24. m=(a+b)/2;
  25. e=3*m-2*c;         %扩展
  26. fe=feval(f,e);
  27.    if fe<fb
  28.     c=e;
  29.     fc=fe;
  30.    else
  31.     r=(m+e)/2;     %反射
  32.     fr=feval(f,r);
  33.      if fr<fc
  34.       c=r;
  35.       fc=fr;
  36.    end
  37.    if fr>=fb
  38.    s=(c+m)/2;      %内收缩
  39.    fs=feval(f,s);
  40.     if fs<fc
  41.      c=s;
  42.    fc=fs;
  43.     else
  44.      b=m;
  45.      c=(a+c)/2; %变小
  46.      fb=feval(f,b);
  47.      fc=feval(f,c);
  48.     end
  49.    end
  50. end
  51. [xo,fo]=Nelder0(f,[a;b;c],[fa,fb,fc],TolX,TolFun,k-1);
  52. end
复制代码

      (2)Opt_Nelder.m
  1. function [xo,fo]=Opt_Nelder(f,x0,TolX,TolFun,MaxIter)
  2. %Nelder-Mead法用于多维变量的最优化问题,维数>=2
  3. %   f:函数名
  4. %   abc:二维空间三个顶点值
  5. %   fabc:三个顶点处的函数值
  6. %   TolX:最优点的误差阈值
  7. %   TolFun:最优点处的函数值的误差阈值
  8. %   MaxIter:最大迭代次数
  9. N=length(x0);
  10. if N==1                            %一维情况,用二次逼近计算
  11. [xo,fo]=Opt_Quadratic(f,x0,TolX,TolFun,MaxIter);
  12. return
  13. end
  14. S=eye(N);
  15. for i=1:N                          %自变量维数大于2时,重复计算每个子平面的情况
  16. i1=i+1;
  17. if i1>N
  18.    i1=1;
  19. end
  20. abc=[x0;x0+S(i,:);x0+S(i1,:)];   %每一个定向子平面
  21. fabc=[feval(f,abc(1,:));feval(f,abc(2,:));feval(f,abc(3,:))];
  22. [x0,fo]=Nelder0(f,abc,fabc,TolX,TolFun,MaxIter);
  23. if N<3                           %二维情况不需重复
  24.    break;
  25. end
  26. end
  27. xo=x0;
  28.       检验:
  29. f=inline('x(1)*(x(1)-5-x(2))+x(2)*(x(2)-4)','x');
  30. x0=[0 4];
  31. TolX=1e-4;
  32. TolFun=1e-9;
  33. MaxIter=100;
  34. [xN,fN]=Opt_Nelder(f,x0,TolX,TolFun,MaxIter)
复制代码
  1. xN =
  2.     4.6667    4.3333

  3. fN =
  4. -20.3333
复制代码
 楼主| 发表于 2014-3-26 08:58 | 显示全部楼层
gghhjj 发表于 2014-3-25 09:39
不太了解PHM模型,只知道Nelder-Mead算法适合变量数不是很多的方程求极值。
不知道你的方程中哪些是变量, ...

谢谢您的回复,上面那个方程组中求偏导的那三个量就是待求的未知变量,r是已知的一个常数,t以及Z都是已知的向量,不知道这个方程能不能用Nelder-Mead算法求解?“常数项具体数值不确定”这里写错了,应该是指变量前面的系数是不知道的情况下,我尝试过用Newton迭代、fminsearch这些方法求解,但是效果都不理想。
发表于 2014-4-9 09:37 | 显示全部楼层
ab77977 发表于 2014-3-26 08:58
谢谢您的回复,上面那个方程组中求偏导的那三个量就是待求的未知变量,r是已知的一个常数,t以及Z都是已 ...

理论上应该是可以的,至于效果不好评估

不知道你说的fminsearch是不是指matlab中自带的函数?
没记错的话这个函数应该就是基于Nelder-Mead算法的,至于它的具体实现方法个人不太了解
发表于 2017-5-22 16:26 | 显示全部楼层
请问一下,你有Newton迭代、fminsearch求解比例失效率模型参数的程序吗?万分感谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 06:45 , Processed in 0.079658 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表