你好,这个程序已经可以运行了,不过为啥输出结果全是0 啊。您帮我看看。

clc;

clear;

close all;

Lk=1000;                                %马克链长1000

t=10;                                   %初始温度10

tf=0.001;                               %最低温度0.001

a=0.9;                                        %温度系数0.9

k=1;

a1=[8 9 10 15 15 17 15 18];

b1=[14 13 16 17 18 11 11 12];                %初始点(a1,b1)

while t>tf

for m=1:Lk

f(1)=vfunc([],[],[],a1,b1);                %f(1)为初始点的函数值

a2=a1.*(1-0.9^t);

b2=b1.*(1-0.9^t);                %产生新解(a2,b2)

f(2)=vfunc([],[],[],a2,b2);                %f(2)为新解的函数值

if f(2)-f(1)<0                        %如果新解函数值比初始解函数值小

a1=a2;

b1=b2;                        %用新解取代旧解

elseif exp((f(1)-f(2))/t)>rand        %准则接受

a1=a2;

end

temp{m,1}=a1;                                %将a(1)赋值到temp的m行1列

temp{m,2}=b1;                                %将b(1)赋值到temp的m行2列

temp{m,3}=vfunc([],[],[],a1,b1);                        %将最小函数值赋值到temp的m行3列

end

[fmin,i]=min(cell2mat(temp(:,3)));                %找出函数值的最小值且找到最小值所在的行数

a1=temp{i,1};                                %找出最小值对应的a

b1=temp{i,2};                                %找出最小值对应的b

ret1{k}=a1;                                %把a赋值给rek1变量

ret2{k}=b1;                                %把b赋值给rek2变量

se(k)=fmin;                                %把函数值赋值给se变量

k=k+1;

t=t*a;                %降温

end

[fmin I]=min(se);                        %找出函数值的最小值

I                                        %找出函数值最小值所在的行

a1=ret1(I);                                %将对应最小值的a找出

b1=ret2(I);                                %将对应最小值的b找出

a1                                        %输出a

b1                                        %输出b

fmin%输出最小函数值

tt=1:k-1;

plot(tt,se)

title('模拟退火算法求解二维Rosenbrock函数最优值');

xlabel('迭代次数');

ylabel('各代历史最优解');

函数为

function [s]=vfunc(V,Q,R,a,b)

t1=zeros(size(Q));

t2=zeros(size(R));

for i=1:8

t1=t1+a(i)*Q.^(0.2*(i-1));

t2=t2+b(i)*R.^(-0.1*(i-1));

end

v=Q.^0.3.*R.^(-0.1).*t1.*t2;

s=sum((V-v).^2);

Q=[3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2 3.2];

R=[22 24.2 29.8 21.9 24.1 29.7 21.7 23.9 29.5 21.5 23.7 29.4 21 24 30 21 23 29 21];

V=[0.86646319 0.804096194 0.682383301 1.561431619 0.778830951 0.711086254 1.419960105 0.984476313 0.864576596 1.745105103 1.343163002 1.296263098 2.02640873 1.380744198 1.18635545 2.97598251 1.768937362 1.722728725 1.302980787];

输出结果全为0

matlab中编写复杂函数,matlab编复杂函数相关推荐

  1. matlab10的阶层怎么输入,在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表...

    点击查看在Matlab中编写阶乘函数,并调用该函数来生成一个1!,......,10!的阶乘表具体信息 答:Matlab 2015R 及以后版本,都自带阶乘函数,代码为: >> facto ...

  2. matlab中conv什么意思,matlab卷积函数conv matlab中conv()是什么意思?

    matlab中conv()是什么意思? conv(向量卷积运算) 两个向量卷积,简单理解其实就是多项式乘法. 比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积计算方法如下: 把p的元素 ...

  3. matlab矩阵指定行最大值,求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.*...

    导航:网站首页 > 求Matlab程序:在2行矩阵中,如何求第1行最大值和第2行相应的最大,请问,如何在MATLAB中编写程序实现求两矩阵A*B,A.* 求Matlab程序:在2行矩阵中,如何求 ...

  4. 关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法

    MATLAB的M文件分为两种:一种为脚本文件,另一种为函数文件. 脚本文件很简单,就是由一堆命令构成的,里面第一行不是 function 开头,这种文件比如是encrypt.m编写好后直接点F5或者运 ...

  5. matlab中fval函数,请问matlab中[x,fval,exitflag,output] = simulannealbnd(fun,...)函数怎么调用...

    请问matlab中[x,fval,exitflag,output] = simulannealbnd(fun,...)函数怎么调用,有相应的实例吗?或者帮我看一下下面的程序,怎么改. function ...

  6. matlab 不允许函数定义,MATLAB中此上下文中不允许出现函数定义,急求~

    点击查看MATLAB中此上下文中不允许出现函数定义,急求~具体信息 答:从你讲的问题,虽然没讲太清楚,但我推测,你可能写了个脚本程序文件,其中定义了子函数,在运行时就弹出了这个提示.一般情况下,在函数 ...

  7. matlab中label的意思,matlab中label函数

    Xlabel Ylabel Text Gtext Grid MATLAB 编程语言 Function Eval Feval Global 箭头图 绘图函数 星点图 Isletter Isspace 当 ...

  8. 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)

    如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure) 详情参考matlab官方帮助手册:plotmf()函数 https://www.mathworks.co ...

  9. matlab中的函数调用法则,Matlab怎么调用函数?调用函数技巧一览

    Matlab作为一款专业性极强的商业数学软件,将诸多的算法开发.统计分析.数据可视化功能融入其中,用户可以方便地调用需要的函数,建立数学模型,为了满足你工作的需要,还可以自行设置自己需要的函数,下面就 ...

  10. matlab中rastrigin图形绘制,matlab函数function

    x?6 x?6 (1) 利用MATLAB语言编写S函数.程序如下: function [sys,x0,str,ts]=sfunction(t,x,u,flag) switch flag, case 0 ...

最新文章

  1. Windows10忘记锁屏密码,如何破解
  2. nodejs获得服务器响应,轻松创建nodejs服务器(6):作出响应
  3. 敏捷开发团队管理系列之一:序言与出发点
  4. 考研总分多少能去辽师_考研英语作文平均分出炉,你拖后腿了吗?
  5. python selenium安装教程_Python Selenium模块安装使用教程详解
  6. Leetcode 746.使用最小花费爬楼梯
  7. php中传址调用,PHP中foreach引用传地址
  8. 安全跑路指南2013之乌云版
  9. 51c语言单片机io口控制实验报告,单片机实验报告二 单片机IO口实验
  10. 苹果开发者账户续费 支付授权失败
  11. Linux中cd会进入什么位置,linux命令中cd/和cd命令是什么意思
  12. 【美化桌面】删除电脑桌面快捷键箭头
  13. 自我介绍html模板王,个性简短自我介绍模板十篇
  14. C语言题目:数字金字塔(有条件的老师同学点一下赞呀)
  15. 原局凶存,大运流年体现,早亡命例。
  16. 处理器中的流水线技术
  17. wdnas群晖nas_WD 西部数据 伪NAS折腾记 篇三:WD 西部数据 MyCloud安装黑群晖教程
  18. jdk9、jdk10、jdk11、jdk12、jdk13新特性
  19. protel 99se :format %x invalid or incompatible with argument
  20. 经典管理学书籍推荐:《经理人参阅:企业管理实务》

热门文章

  1. 无法访问srv解析_windows能连网络,可是打不开网页,出现无法解析server的DNS
  2. linux串口返回条件,c – Linux – 串口读取返回EAGAIN
  3. JavaScript实现插入排序
  4. 读《高效ML:理论,算法及实践》:(1) 机器学习基本概念
  5. 六、 网络互联与互联网
  6. 精简版openwrt配置frpc
  7. 【ASPICE】ASPICE中的变更管理-Change Management
  8. 正则表达式的使用——匹配手机号码、IP地址实例讲解
  9. spring 消息列队
  10. 神经网络——异构卷积