你好,我的新遗传算法,不知道如何解决这个问题

6视图(30天)
%定义铬的维度
宁德= 10;%的人
据Nvar = 4;%的变量
%创建一个初始种群
PopSize =宁德;
MaxGenerations = 100;
选择= gaoptimset (“PopulationSize”PopSize,“代”,MaxGenerations);
磅= [0 0 0 0];%下界的变量
乌兰巴托= (100 100 100 100);%变量的上界
据Nvar铬= ga (@objfun2,[],[],[],[],磅,乌兰巴托,[],选项);
未识别的函数或变量“objfun2”。

错误在createAnonymousFcn > @ (x) fcn (x, FcnArgs{:})(11行)
fcn_handle = @ (x) fcn (x, FcnArgs {:});

错误makeState(58)行
firstMemberScore = FitnessFcn (state.Population (initScoreProvided + 1,:));

错误galincon(24)行
状态= makeState (GenomeLength FitnessFcn、迭代、output.problemtype选项);

错误ga(第420行)
[x, fval exitFlag、输出人口,分数)= galincon (FitnessFcn,据nvar,…
%显示优化铬矩阵
disp(铬);
%调用objfun2函数优化的铬矩阵
rtn_type = 2;%根据需要设置rtn_type的值
ObjVal = objfun2(铬、rtn_type);
%显示为每个单独的优化值
disp (ObjVal);
[m第九工业区a1 a2 w h C_beta_f C_beta_r C_alpha_f C_alpha_r C_Tf C_Tr C_delta_phi_f C_delta_phi_r C_phi_f C_phi_r cut_sws_front cut_sws_rear] = detail_handling;
%铬(我,1)= ksf
%铬(我,2)= ksr
%铬(3)= csf
%铬(4)= csr
我= 1:宁德,
%稳态转弯
%悬挂细节k、c kN / m和kNs / m
ksf =铬(我,1);
ksr =铬(我,2);
k = ksf + ksr;
csf =铬(我,3);
csr =铬(我,4);
c = csf +企业社会责任;
% k_phi -辊刚度;c_phi——横摇阻尼
k_phi = 0.5 * k * w ^ 2;
c_phi = 0.5 * c * w ^ 2;
% 4变量的传递函数
% Vx -前进速度,公里/小时
Vx = 1 * (1000/3600);
出售= 120 * (1000/3600);
j = 1:公开发表
C_r = - (a1 / Vx) * C_alpha_f + ((a2 / Vx) * C_alpha_r);%车辆偏航率侧向力系数
C_p = ((C_alpha_f * C_beta_f) / Vx) + ((C_alpha_r * C_beta_r) / Vx);%飞行器滚转率侧向力系数
C_beta = - (C_alpha_f + C_alpha_r);%车辆偏离角侧向力系数
C_phi = (C_alpha_r * C_delta_phi_r) + (C_alpha_f * C_delta_phi_f) - C_phi_f C_phi_r;%车辆偏航角侧向力系数
C_delta = C_alpha_f;%车辆steer-angle侧向力系数
E_r = - (a1 / Vx) * C_Tf * C_alpha_f + (a2 / Vx) * C_Tr * C_alpha_r;%车辆偏航率滚转力矩系数
E_p = (C_alpha_f * C_beta_f * C_Tf) / Vx + (C_alpha_r * C_beta_r * C_Tr) / Vx - c_phi;%汽车滚转角速度滚转力矩系数
E_beta = -C_alpha_f * C_Tf - C_alpha_r * C_Tr;%车辆滑移率滚转力矩系数
E_phi = -C_Tf * (C_phi_f - (C_alpha_f * C_delta_phi_f)) - k_phi C_Tr * (C_phi_r - (C_alpha_r * C_delta_phi_r));%车辆偏航角滚转力矩系数
E_delta = C_Tf * C_alpha_f;%车辆steer-angle滚转力矩系数
D_r = - (a1 ^ 2 / Vx) * C_alpha_f - (a2 ^ 2 / Vx) * C_alpha_r;%车辆偏航率力矩系数
D_p = (a1 / Vx) * C_beta_f * C_alpha_f - (a2 / Vx) * C_beta_r * C_alpha_r;%飞行器滚转率力矩系数
D_beta = - * C_alpha_f (a1 - a2 * C_alpha_r);%车辆滑移率力矩系数
D_phi = a1 * (C_phi_f - (C_alpha_f * C_delta_phi_f)) + a2 * (C_phi_r - (C_alpha_r * C_delta_phi_r));%车辆偏航角力矩系数
D_delta = a1 * C_alpha_f;%车辆steer-angle力矩系数
%稳态运动
A = [C_beta / (m * Vx) C_p / m C_phi / m (C_r / m) Vx;
第九E_beta / (* Vx) E_p / Ix E_phi / Ix E_r /第九;
0 1 0 0;
D_beta /(工业区* Vx) D_p /工业区D_phi /工业区D_r /工业区);
B = [C_delta / m;E_delta /第九;0;D_delta /工业区);
Z (:,:, j) = \ - b;
Sk (:, j) = Z (4 1 j) / Vx;%曲率响应
Sbeta Z (:, j) = (1, 1, j) / Vx;%滑动反应
Sr (:, j) = Z (4 1 j);%偏航率响应
Sa (:, j) = Sk (:, j) * Vx ^ 2;%侧向加速度响应
Sphi Z (:, j) = (3 1 j);%横摇角响应
Vx = Vx + 1;
结束
%均方根值
老Sr2 =总和(^ 2);
rms_Sr(我:=√Sr2 /公开发表);
Sa2 =总和(Sa。^ 2);
rms_Sa(我:=√Sa2 /公开发表);
Sphi2 =总和(Sphi。^ 2);
rms_Sphi(我:)= abs (sqrt (Sphi2 /出售));
%骑函数导出文件
[sws_rms_front_cutoff(我,:)sws_rms_rear_cutoff(我,:)rms_acc_front(我,:)rms_acc_rear(我,:)rms_acc_cg(我,:)dtl_rms_front(我,:)dtl_rms_rear(我,:)]=骑(ksr ksf, csf,企业社会责任、cut_sws_front cut_sws_rear);
%的出口处理瞬态响应
[settling_time_p(我,:)settling_time_r(我,:)overshot_r(我,:)range_p(我,:)LTR(我,:)]= transient_transtime (m,第九,工业区,a1, a2, w, k_phi, c_phi, C_alpha_f, C_alpha_r, C_beta_f, C_beta_r, C_Tf, C_Tr, C_delta_phi_f, C_delta_phi_r, C_phi_f, C_phi_r);
结束
%规范化方程0 - 1
norm_swsf = (sws_rms_front_cutoff-min (sws_rms_front_cutoff)。/ (max (sws_rms_front_cutoff)分钟(sws_rms_front_cutoff));
norm_swsr = (sws_rms_rear_cutoff-min (sws_rms_rear_cutoff)。/ (max (sws_rms_rear_cutoff)分钟(sws_rms_rear_cutoff));
norm_acc_cg = (rms_acc_cg - min (rms_acc_cg)。/ (max (rms_acc_cg)分钟(rms_acc_cg));
norm_acc_r = (rms_acc_rear-min (rms_acc_rear)。/ (max (rms_acc_rear)分钟(rms_acc_rear));
norm_acc_f = (rms_acc_front-min (rms_acc_front)。/ (max (rms_acc_front)分钟(rms_acc_front));
norm_sa = (rms_Sa-min (rms_Sa)。/ (max (rms_Sa)分钟(rms_Sa));
norm_stp = (settling_time_p-min (settling_time_p)。/ (max (settling_time_p)分钟(settling_time_p));
norm_str = (settling_time_r-min (settling_time_r)。/ (max (settling_time_r)分钟(settling_time_r));
norm_ovshr = (overshot_r-min (overshot_r)。/ (max (overshot_r)分钟(overshot_r));
norm_range_p = (range_p-min (range_p)。/ (max (range_p)分钟(range_p));
norm_LTR = (LTR-min (LTR)。/ (max (LTR)分钟(LTR));
norm_rms_Sphi = (rms_Sphi-min (rms_Sphi)。/ (max (rms_Sphi)分钟(rms_Sphi));
优化= 0.5 * (0.5。* norm_swsf + 0.5。* norm_swsr) * (0.5 + 0.15。* norm_acc_cg + 0.167。* norm_acc_r * norm_acc_f) + 0.30 + 0.333。* (0.25 + 0.25。* norm_stp +。* norm_str + 0.25。* norm_ovshr + 0.25。* norm_range_p) + 0.10。* * norm_LTR + 0.34 (0.36。* norm_rms_Sphi + 0.30。* norm_sa);
ObjVal =优化;
%的函数
试图执行脚本objfun2函数:
D: \ \处理和骑\ objfun2.m新文件夹
错误在createAnonymousFcn > @ (x) fcn (x, FcnArgs{:})(11行)
fcn_handle = @ (x) fcn (x, FcnArgs {:});
错误makeState(52行)
firstMemberScore = FitnessFcn (state.Population (initScoreProvided + 1,:));
错误galincon(22)行
状态= makeState (GenomeLength FitnessFcn、迭代、output.problemtype选项);
错误ga(第402行)
[x, fval exitFlag、输出人口,分数)= galincon (FitnessFcn,据nvar,…
错误objfun2(12)行
据Nvar铬= ga (@objfun2,[],[],[],[],磅,乌兰巴托,[],选项);
引起的:
在最初的用户提供的适应度函数评价失败。遗传算法不能继续。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年5月20日6
你有一个文件 objfun2.m 第一个可执行的字不是 函数 classdef 。在MATLAB中,这些文件被称为“脚本文件”。脚本文件不能被传递参数,只能由自己。
你想调用objfun2作为遗传算法目标函数()调用,但ga()只能接受处理函数,不处理脚本。
错误在objfun2(12)行
据Nvar铬= ga (@objfun2,[],[],[],[],磅,乌兰巴托,[],选项);
更仔细的查看错误消息:它表明我们 内部 objfun2内objfun2已经,你正试图说objfun2是一个函数。你已经执行objfun2但你告诉ga(),它需要执行objfun2产生答案。
它不是 总是 一个错误有一个函数调用它自己,但你必须小心等节目的一个函数。
%的函数
但你不是在任何函数!
这条线强烈暗示,你把现有的函数命名 objfun2.m 删除和编辑它 函数objfun2 声明,然后添加到行打算ga()调用objfun2。
你应该创建一个 单独的 文件,如optimize_objfun2。米有…嗯,可能到
disp (ObjVal);
行我怀疑……现有objfun2离开。m不变(除非事实证明,它有错误,需要固定的。)

类别

找到更多的在车辆的场景帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!