- 在线时间
- 50 小时
- 最后登录
- 2017-9-17
- 注册时间
- 2014-4-26
- 听众数
- 9
- 收听数
- 0
- 能力
- 0 分
- 体力
- 332 点
- 威望
- 0 点
- 阅读权限
- 30
- 积分
- 142
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 81
- 主题
- 3
- 精华
- 0
- 分享
- 0
- 好友
- 24
升级   21% TA的每日心情 | 无聊 2017-5-12 07:54 |
---|
签到天数: 47 天 [LV.5]常住居民I
- 自我介绍
- 大家好~~~
 群组: 2017算法基础课程 群组: 学术交流B 群组: 数学建模培训课堂2 群组: 国赛讨论 |
5体力
function [err] = h(sol) %构造目标函数
t = 1:14;
L = [1016.1 84.89 553.4 339.7 268.5 414.7 416.3 317.5 242.2 141.2 80.4 115.9 70.3 22.9];
[m,n] = size (L) ;
err = zeros(1,n) ;
A = sol(1) ; B = sol(2)
err = 0;
for i = 1: n
err = err + (L(i) - 10.^(A +B*i)).^2
err
end
close all %主程序
clear
bound = [0 -1;4 0];
[m,n] = size(bound) ;
D = bound (1, 1: n) ;
U = bound (2, 1: n) ;
for i = 1: n
x1 ( i) =D ( i) + rand*(U ( i) - D ( i) ) ;
end
x1
N = 1;
T = 1000;
T0 = 01001;
k = 250;
a = 01965;
step = 01001;
T1 = clock;
s = sprintf ('程序运行正在进行,请稍等……') ;
disp ( s) ;
while T > T0
for t = 1: k
f1 = h ( x1) ;
for i = 1: n
x2 ( i) = x1 ( i) + step*( rand - 0.5) ;
while x2 ( i) <D ( i) || x2 ( i) >U ( i)
x2 ( i) = x1 ( i) + step*( rand - 015) ;
end
end
f2 = h ( x2) ;
if f2 - f1 < 0
x1 = x2;
elseif exp ( ( f1 - f2) /T) > rand
x1 = x2;
end
temp_x( t, 1: n) = x1;
temp_y( t, 1) = h ( x1) ;
end
[ ty, ti ] =min ( temp_y) ;
x1 = temp_x( ti, 1: n) ;
X (N, 1: n) = x1;
Y(N) = h ( x1) ;
N =N + 1;
T = a
3
T;
end
T2 = clock;
CostTime = T2 - T1;
if CostTime (6) < 0
CostTime (6) =CostTime (6) + 60;
CostTime (5) =CostTime (5) - 1;
end
if CostTime (5) < 0
CostTime (5) = CostTime ( 5) + 60; CostTime ( 4) = Cost2
Time (4) - 1;
end
问下大神这是个用模拟退火坐的非线性拟合函数哪里错了呀
|
最佳答案
madio 查看完整内容
试了一下,程序可以运行呀,你把它保存为一个h.m的文件,然后再matlab的命令行中就可以调用函数,不过误差是比较大的,你是不是说这个问题?下面是运行的过程
>> h([10,5])
B =
5
err =
1.0000e+030
err =
1.0000e+030
err =
1.0000e+040
err =
1.0000e+040
err =
1.0000e+050
err =
1.0000e+050
err =
1.0000e+060
err =
1.0000e+0 ...
zan
|