- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
罚函数法MATLAB程序
一、进退法、0.618法、Powell法、罚函数法的Matlab程序设计罚函数法(通用)function y ff x,k y -17.86*0.42*x 1 / 0.8+0.42*x 1 * 1-exp -2* 0.8+0.42*x 1 /3 *exp -1.6 *x 2 -22.99*x 1 / 0.8+x 1 * 1-exp -2* 0.8+x 1 /3 *x 3 +k* x 2 - 1.22*10^2* 9517.8*exp -1.6-2*0.42*x 1 /3 *x 2 +19035.6*exp -2*x 1 /3 *x 3 / 1.22*10^2+9517.8*exp -1.6-2*0.42*x 1 /3 *x 2 +19035.6*exp -2*x 1 /3 *x 3 ^2+k* x 3 -exp -0.8-2*x 1 /3 *x 3 -exp -2.4-2*0.42*x 1 /3 *x 2 ^2;% 主函数,参数包括未知数的个数n,惩罚因子q,惩罚因子增长系数k,初值x0,以及允许的误差rfunction G FHS x0,q,k,n,r,h,a l 1;while l x powell x0,n,q,r 1 ,h,a ; %调用powell函数 g 1 ff1 x ,g 2 ff2 x . . . g p ffp x ; %调用不等式约束函数,将其值 %存入数组g h 1 hh1 x ,h 2 hh2 x . . . h t hht x ; %调用等式约束函数,将其值%存入数组h for i 1:p if g i r for j 1:t if abs h j r 2 continue; else break; end end else break; end end if i p j t %如果所有约束条件的值都在允许的范围内就结束%搜索,否则加大惩罚力度继续搜索 l 0; else x0 x; q k*q; endend G x%powell算法,用于寻找无约束最优值点 function powel powell x0,n,q,r,h,a d eye n ; %n个线性无关的初始搜索方向 k 1; kk 1; xx 1,1:n x0; while kk y 1,1:n xx k,1:n ; for j 1:n s j HJ y j,1:n ,d j,1:n ,q ; %调用0.618算法 y j+1,1:n y j,1:n +s j .*d j,1:n ; end d n+1,1:n y n+1,1:n -y 1,1:n ; if norm d n+1,1:n ,2 r kk 0; break; else ww 0; m 1; for i 1:n gg ff y i,1:n ,q -ff y i+1,1:n ,q ; if gg ww m i; end end cha ff y 1,1:n ,q -2*ff y n+1,1:n ,q +ff 2*y n+1,1:n -y 1,1:n ,q ; cha1 2* ff y m,1:n ,q -ff y m+1,1:n ,q ; if cha cha1 s n+1 HJ y n+1,1:n ,h,a,d n+1,1:n ,q xx k+1,1:2 y n+1,1:n +s n+1 .*d n+1,1:n for j m+1:n d j,1:n d j+1,1:n ; end k k+1; else xx k+1,1:n y n+1,1:n ; k k+1; end end end powel y n+1,1:n
function w HJ x0,h,d,dd,q %0.618算法 [a,b] JTF x0,h,d,dd,q ; %调用进退法算法,确定范围 r 0.618; r1 a+ 1-r * b-a ; r2 a+r* b-a ; y1 ff x0+r1.*dd,q ; y2 ff x0+r2.*dd,q ; k 1; while abs r1-r2 0.1 if y1 y2 b r2; r2 r1; y2 y1; r1 a+ 1-r * b-a ; y1 ff x0+r1.*dd,q ; else a r1; r1 r2; y1 y2; r2 a+r* b-a ; y2 ff x0+r2.*dd,q ; end end w r1+r2 /2%进退法function [a,b] JTF x0,h,d,dd,q r0 0; y0 ff x0+r0.*dd,q ; k 0; l 1; while l r1
文档评论(0)