✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
法医调查优化算法( Forensic-based investigation algorithm, FBI), 是由 Jui-Sheng Chou 等于2020 年提出的一种群体智能优化算法。其灵感来源于警官调查嫌疑人的过程。
警察的大规模案件调查通常包括五个步骤,其中步骤2、3和4可视为一个循环过程。
立案:对这起事件的调查从最先到达犯罪现场的警察发现的信息开始。这些信息构成了调查小组成员的主要出发点,他们从遵循几个标准程序开始,以获得可能发生的事情的第一印象。小组成员调查犯罪现场、受害者、可能的嫌疑人及其背景信息;小组找到证人并询问证人。
分析调查结果:通过在团队简报中共享信息,团队成员试图获得所有可用信息的概述。在第二步中,团队评估信息,并尝试将信息与他们对案件已有的印象联系起来,以评估可能的嫌疑人。
调查方向:在调查的第三步中,团队成员根据对调查结果的分析,做出几种猜想(包括犯罪场景、犯罪动机和调查路线)。团队再次评估调查结果,得出新的方向,或确认、更改或终止现有的调查方向。
行动:在确定了调查路线和优先顺序后,警察团队就要采取的进一步行动做出决定。这一步骤与关于优先事项的决策密切相关,通常首先追求最有希望的研究方向。所采取的行动再次提供了新的信息。一旦获得该信息,调查小组将根据现有信息解释其含义或含义。对新发现的分析可能会导致调查和行动方向的调整。
起诉:在做出起诉决定之前,一旦确定了一名严重嫌疑人,诉讼就结束了。
⛄ 部分代码
%_____________________________________________________________________________________________________
clearvars
close all
clc
disp('FBI is tracking the problem');
N=30; % Number of slime mould
Function_name='F12'; % Name of the test function that can be from F1 to F23
MaxIT=500; % Maximum number of iterations
[lb,ub,dim,fobj]=Get_Functions_details(Function_name); % Function details
Times=1; %Number of independent times you want to run the FBI
display(['Number of independent runs: ', num2str(Times)]);
for i=1:Times
[Destination_fitness(i),bestPositions(i,:),Convergence_curve(i,:)]=FBI(N,MaxIT,lb,ub,dim,fobj);
display(['The optimal fitness of FBI is: ', num2str(Destination_fitness(i))]);
end
[bestfitness,index]=min(Destination_fitness);
disp('--------Best Fitness, Average Fitness, Standard Deviation and Best Solution--------');
display(['The best fitness of FBI is: ', num2str(bestfitness)]);
display(['The average fitness of FBI is: ', num2str(mean(Destination_fitness))]);
display(['The standard deviation fitness of FBI is: ', num2str(std(Destination_fitness))]);
display(['The best location of FBI is: ', num2str(bestPositions(index,:))]);
figure('Position',[284 214 660 290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off
%Draw objective space
subplot(1,2,2);
semilogy(Convergence_curve(index,:),'LineWidth',3);
xlabel('Iterations');
ylabel('Best fitness obtained so far');
legend('FBI');
box on;
axis tight;
grid off;