Matlab 源码,function前一行表文件名:

  1 multphr.m
  2 function [x, mu, lambda, output] = multphr(fun, hf, gf, dfun, dhf, dgf, x0)
  3 maxk=500; sigma=2; eta=2; theta=0.8; epsilon=1e-5; k=0; ink=0;
  4 x=x0; he=feval(hf, x); gi=feval(gf, x); l=length(he); m=length(gi);
  5
  6 mu=0.1*ones(l,1); lambda=0.1*ones(m,1);
  7 btak=10; btakold=10;
  8
  9 while btak>epsilon && k<maxk
 10     [x, ~, ik] = bfgs('mpsi', 'dmpsi', x0, fun, hf, gf, dfun, dhf, dgf, mu, lambda, sigma);
 11     ink = ink+ik;
 12     he=feval(hf, x); gi=feval(gf, x);
 13     btak=0;
 14     for i=1:l
 15         btak=btak+he(i)^2;
 16     end
 17     for i=1:m
 18         btak=btak+min(gi(i), lambda(i)/sigma)^2;
 19     end
 20     btak=sqrt(btak);
 21     if btak>epsilon
 22         if k>=2 && btak>theta*btakold
 23             sigma = eta*sigma;
 24         end
 25         for i=1:l
 26             mu(i)=mu(i)-sigma*he(i);
 27         end
 28         for i=1:m
 29             lambda(i)=max(0, lambda(i)-sigma*gi(i)); % lambda(i)=max(0, lambda(i)-gi(i));
 30         end
 31     end
 32     k=k+1;
 33     btakold=btak;
 34     x0=x;
 35     output.fval=feval(fun, x);
 36     output.iter=k;
 37     output.innter_iter=ink;
 38     output.bta=btak;
 39 end
 40
 41
 42 bfgs.m
 43 function [x, val, k] = bfgs(fun, gfun, x0, varargin)
 44 maxk=5000; k=0; rho=0.55; sigma=0.4; epsilon=1e-5;
 45 n=length(x0); Bk=eye(n);
 46 while (k<maxk)
 47     gk = feval(gfun, x0, varargin{:});
 48     if norm(gk)<epsilon
 49         break;
 50     end
 51     dk = -Bk\gk;
 52     m=0; mk=0;
 53     while (m<20)
 54         if(feval(fun, x0+rho^m*dk, varargin{:}) < feval(fun, x0, varargin{:})+sigma*rho^m*gk'*dk)
 55             mk=m; break;
 56         end
 57         m=m+1;
 58     end
 59     x=x0+rho^mk*dk;
 60     sk=x-x0;
 61     yk = feval(gfun, x, varargin{:})-gk;
 62     if yk'*sk>0
 63         Bk = Bk-(Bk*sk*sk'*Bk)/(sk'*Bk*sk)+(yk*yk')/(yk'*sk);
 64     end
 65     k=k+1; x0=x;
 66 end
 67 val = feval(fun, x0, varargin{:});
 68
 69 mpsi.m
 70 function psi = mpsi(x, fun, hf, gf, dfun, dhf, dgf, mu, lambda, sigma)
 71 psi=feval(fun, x); he=feval(hf, x); gi=feval(gf, x); l=length(he); m=length(gi);
 72 for i=1:l
 73     psi=psi-he(i)*mu(i)+0.5*sigma*he(i)^2;
 74 end
 75 for i=1:m
 76     psi=psi +(min(0, sigma*gi(i)-lambda(i))^2 - lambda(i)^2)/(2*sigma);
 77 end
 78
 79 dmpsi.m
 80 function dpsi=dmpsi(x, fun, hf, gf, dfun, dhf, dgf, mu, lambda, sigma)
 81 dpsi=feval(dfun, x); he=feval(hf, x); gi=feval(gf, x); dhe=feval(dhf, x); dgi=feval(dgf, x);
 82 l=length(he); m=length(gi);
 83 for i=1:l
 84     dpsi = dpsi+(sigma*he(i)-mu(i))*dhe(:,i);
 85 end
 86 for i=1:m
 87     dpsi = dpsi+(sigma*gi(i)-lambda(i))*dgi(:,i);
 88 end
 89
 90 fun.m
 91 function f=fun(x)
 92 f=(x(1)-2)^2+(x(2)-1)^2;
 93
 94 dfun.m
 95 function df = dfun(x)
 96 df = [2*x(1)-4, 2*x(2)-2]';
 97
 98 hf.m
 99 function he=hf(x)
100 he=x(1)-2*x(2)+1;
101
102 dhf.m
103 function dfe=dhf(x)
104 dfe=[1, -2]';
105
106 gff.m
107 function gi=gff(x)
108 gi= -0.25*x(1)^2-x(2)^2+1;
109
110
111 dgf.m
112 function dgi=dgf(x)
113 dgi=[-0.5*x(1), -2*x(2)]';
运行结果:
>> x0=[3 3]';
>> [x, mu, lambda, output] = multphr('fun', 'hf', 'gff', 'dfun', 'dhf', 'dgf', x0)
x =0.82290.9114
mu =-1.5945
lambda =
1.8465
output = fval: 1.3934iter: 23
innter_iter: 82bta: 9.5419e-006

转载于:https://www.cnblogs.com/visayafan/archive/2012/05/23/2514158.html

【Algorithm】一般约束优化问题——PHR算法及其Matlab实现相关推荐

  1. fdtd算法的matlab程序,FDTD算法的Matlab程序

    <FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...

  2. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

  3. 哈里斯鹰优化(HHO)算法(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

  4. matlab 增量学习,支持向量机在线增量学习算法的MATLAB实现

    支持向量机在线增量学习算法的MATLAB实现 杨志红,隆 涛 (江汉大学 物理与信息工程学院,湖北 武汉 430056) 摘 要:基于支持向量机在线训练理论,采用MATLAB工具实现了一种在线增量学习 ...

  5. NSGA3算法及其MATLAB版本实现(转载)

    wayjj的博客 "NSGA3算法及其MATLAB版本实现" https://blog.csdn.net/wayjj/article/details/78954506 一丶NSGA ...

  6. 白鲸优化(BWO)算法(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论. 原文在这里:点一下 白鲸优化(BWO)算法: 白鲸优化(Belug ...

  7. 毕设学习笔记(1):经典DV-Hop算法(MATLAB)

    最近忙着毕设,看到了一些有关无线传感器的定位算法,就先学了经典的DV-Hop算法, 传统的DV-Hop算法主要包括以下三个步骤: 1.确定最小跳数值         开始组网过程中,信标节点给通信半径 ...

  8. 粒子群算法的matlab实现

    转自:https://blog.csdn.net/just_do_it_123/article/details/50993439 粒子群算法,也称粒子群优化算法(Particle Swarm Opti ...

  9. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  10. 基于模拟退火的粒子群优化算法(Matlab实现)

    目录 混合粒子群算法 算法步骤 算法的Matlab实现 示例程序 参考文献 混合粒子群算法 混合粒子群算法是指借鉴其它一些智能优化算法的思想而形成的粒子群算法.除了粒子群算法外,还有遗传算法.模拟退火 ...

最新文章

  1. JAX-RS(基于Jersey) + Spring 4.x + MyBatis构建REST服务架构
  2. java中的队列详解
  3. 明天即将开工,把今年的Flag加到头像上,时刻鞭策自己吧!
  4. Windows PE 第十章 加载配置信息
  5. [你必须知道的.NET]第二十八回:说说Name这回事儿
  6. proguard java enum,Proguard没有这么说就不会混淆课堂
  7. 说一下syslog日志吧~~~
  8. HDU - 2602 01背包
  9. js实现全排列组合算法
  10. Atitit.100% 多个子元素自适应布局属性
  11. 2023年东南大学集成电路设计考研考情与难度、参考书及上岸前辈备考经验
  12. html 页面换皮肤,HTML中如何实现更换网页皮肤
  13. 使用分治法解最大连续子序列和问题
  14. react实现上传文件进度条功能_react-progress 自定义一个进度条插件
  15. 【转载】.btc勒索病毒删除+还原文件(Dharma家族新成员)
  16. SQL 里ESCAPE的用法
  17. 迈阿密大学计算机学科排名,迈阿密大学计算机科学(论文)专业介绍_计算机科学(论文)专业排名及就业方向和前景-小站留学...
  18. 如何用数据分析进行游戏道具的精准投放?
  19. 如何禁用 粘滞键(连按5次 shift键)
  20. WIN10如何绕过登录密码登录系统

热门文章

  1. linux 系统的磁盘 mbr 转gpt方法
  2. 红米手机如何抓取蓝牙log。
  3. 拼音转汉字算法(隐马尔科夫、维特比算法)
  4. 照片查看器找不见的解决办法
  5. HostGator 評價 – 優異的運行時間與支持一鍵安裝 WordPress,內含 4 折 60% 折扣優惠購買連結! - TechMoon 科技月球...
  6. 互联网之子——亚伦·斯沃茨:新时代网络自由的先驱
  7. 腾讯bugly接入详解
  8. zynq uart0和uart1设置
  9. golang 实现HTTP代理和反向代理
  10. 加速进化,浪潮存储正在梦想成真