下面是智能计算作业,哎呀,你们快来抄我作业呀╭(╯^╰)╮

问题描述:

算法理论我省略了,你们自己去百科上抄吧╭(╯^╰)╮

求解步骤:

(这个好像也是百科上的╭(╯^╰)╮我根据自己的需要改了一下)

(1)确定差分进化算法控制参数,确定适应度函数。差分进化算法控制参数包括:种群大小NP、变异算子F与交叉概率CR。

(2)随机产生初始种群。

(3)对初始种群进行评价,即计算初始种群中每个个体的适应度值。

(4)判断是否达到终止条件或进化代数达到最大。若是,则终止进化,将得到最佳个体作为最优解输

出;若否,继续。

(5)使用现行差分策略:

进行变异和交叉操作,得到中间种群。

(6)在原种群和中间种群中选择个体,得到新一代种群。

(7)进化代数g=g+1,转步骤(4)。

运行结果:

运用detest.m文件,得到的结果如下图所示:

会出现一个用户交互界面,亲自设计的,支持迭代数显示,支持调参╭(╯^╰)╮就问你骚不骚

在这里调整变异算子F和交叉概率CR的参数:

  1. 变异算子F=0.5,交叉系数CR=0.1:

当x(1)=-4.0000,x(2)=-3.9366时,函数最小值为-24.9329。

(2)变异算子F=0.6,交叉系数CR=0.5:

当x(1)=-3.9773,x(2)=-4.0000时,函数最小值为-24.8083。

(3)变异算子F=0.6,交叉系数CR=1.0:

当x(1)=-4.0000,x(2)=-3.9396时,函数最小值为-24.9322。

(4)变异算子F=0.1,交叉系数CR=0.5:

实验总结:

从图中看出,随着迭代次数的增加,目标函数逐渐向最小值靠拢。

交叉算子CR越大,收敛速度越快。变异算子F对结果的影响效果更小一些。

得到的最优结果在当x(1)=-4.0000,x(2)=-3.939时,函数最小值为-24.9332。

代码在这里:

这个是readme.txt文件内容(哦你在代码里面到处都要留下自己的名字才显得是你寄几写的呀╭(╯^╰)╮):

%  差分进化算法求解函数最值
%  姓名:
%  学号:
%  邮箱:
%  环境: MATLABR2017A
%  日期: 2018.10.3
%  运行说明: 运行detest.m即可弹出图形交互界面detest.gui
              输入参数:F和CR
              点击“运行”按钮即可运行程序;
              点击“重置”按钮恢复;
              支持当前迭代次数的实时显示。

这个是func2.m文件,里面只有一个我们要求解的函数啦╭(╯^╰)╮

function value=func2(x)  value=5*cos(x(1)*x(2))+4*x(1)+x(2);
end  

这个是detest.m文件╭(╯^╰)╮运行的时候点这个

function varargout = detest(varargin)
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  差分进化算法求解函数最值
%  姓名:
%  学号:
%  邮箱:
%  环境: MATLABR2017a
%  日期: 2018.10.3
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @detest_OpeningFcn, ...'gui_OutputFcn',  @detest_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
endfunction detest_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
%打开按钮的背景图片
A = imread('A.jpg');
A = imresize(A,[100,100]);
set(handles.kaishi,'CData',A);
set(handles.rek,'CData',A);
% CR = handles.edit7;
% F = handles.edit8;
guidata(hObject, handles);function varargout = detest_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;%% 开始按钮
function kaishi_Callback(hObject, eventdata, handles)
%初始化参数设置
NP=20;     %种群数量
D=2;       %变量的维数
G=100;     %最大进化代数
CR = str2double(get(handles.edit7,'String'));
F = str2double(get(handles.edit8,'String'));
F
CR
Xs=4;      %上限
Xx=-4;     %下限x=zeros(D,NP);       %初始种群
v=zeros(D,NP);       %变异种群
u=zeros(D,NP);       %选择种群
x=rand(D,NP)*(Xs-Xx)+Xx;  %赋初值%计算适应度函数值
for m=1:NPOb(m)=func2(x(:,m));
end
trace(1)=min(Ob);
%差分操作
for gen=1:G%% 提示迭代数set(handles.edit2,'String',num2str(gen));pause(0.01);%变异操作%r1,r2,r3和m互不相同for m=1:NPr1=randi([1,NP],1,1);%生成1—NP中间的随机数while(r1==m)r1=randi([1,NP],1,1);endr2=randi([1,NP],1,1);while(r2==m)|(r2==r1)r2=randi([1,NP],1,1);endr3=randi([1,NP],1,1);while((r3==m)|(r3==r1)|(r3==r2))r3=randi([1,NP],1,1);endv(:,m)=x(:,r1)+F*(x(:,r2)-x(:,r3));end%交叉操作r=randi([1,NP],1,1);for n=1:Dcr=rand(1);if(cr<CR)|(n==r)u(n,:)=v(n,:);elseu(n,:)=x(n,:);endend%边界条件处理%边界吸收for n=1:Dfor m=1:NPif u(n,m)<Xxu(n,m)=Xx;endif u(n,m)>Xsu(n,m)=Xs;endendend%选择操作for m=1:NPOb1(m)=func2(u(:,m));endfor m=1:NPif Ob1(m)<Ob(m)      %小于先前的目标值x(:,m)=u(:,m);endendfor m=1:NPOb(m)=func2(x(:,m));endtrace(gen+1)=min(Ob);
end[SortOb,Index]=sort(Ob);x=x(:,Index);X=x(:,1);          %最优变量Y=min(Ob);         %最优值%% 画进化曲线axes(handles.axes1)plot(trace);%plot(X,Y,'-ro');xlabel('迭代次数');ylabel('目标函数值');title('DE目标函数曲线');box on;%% 提示最优变量set(handles.edit5,'String',num2str(X(1,:)));set(handles.edit6,'String',num2str(X(2,:)));%% 提示最优值set(handles.edit4,'String',num2str(Y));%% 画函数图像axes(handles.axes2)nPlot = 100;bound = [-4 4 -4 4];xx = linspace(bound(1),bound(2),nPlot);yy = linspace(bound(3),bound(4),nPlot);[xx,yy] = meshgrid(xx,yy);zz = 5*cos(xx.*yy)+4.*xx+yy;mesh(xx,yy,zz);%text('Interpreter','latex','String','$$ f(x)=5*cos(x(1)*x(2))+4*x(1)+x(2)$$','Position',[0 0]);%用latex格式打印公式
%% 重置按钮
function rek_Callback(hObject, eventdata, handles)
cla(handles.axes1);
cla(handles.axes2);
set(handles.edit2,'String','');
set(handles.edit4,'String','');
set(handles.edit5,'String','');
set(handles.edit6,'String','');
set(handles.edit7,'String','');
set(handles.edit8,'String','');function edit2_Callback(hObject, eventdata, handles)function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit4_Callback(hObject, eventdata, handles)function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit5_Callback(hObject, eventdata, handles)function edit5_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit6_Callback(hObject, eventdata, handles)function edit6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit7_Callback(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit7 as text
%        str2double(get(hObject,'String')) returns contents of edit7 as a double% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit8_Callback(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit8 as text
%        str2double(get(hObject,'String')) returns contents of edit8 as a double% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end

还有一张图,这个是GUI界面的按钮的图╭(╯^╰)╮一定要保存在代码路径下,命名为‘A.png’,不然会报错:

好啦╭(╯^╰)╮就是这些啦,ctrl+c,ctrl+v交作业去吧

智能计算作业——差分进化算法求解函数最值相关推荐

  1. 差分进化算法求解函数最值问题

    差分进化算法求解函数最值问题 声明: 1.本文源代码来自书目<智能优化算法及其MATLAB实例(第3版)>,目的在于为MATLAB初学者提供更简明的代码解析,方便读者了解算法及MATLAB ...

  2. MATLAB差分进化算法求解超市物流配送选址问题实例

    差分进化算法编程问题实例: MATLAB差分进化算法求解超市物流配送中心选址问题代码实例 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表1.要 ...

  3. 【优化布局】基于差分进化算法求解电力系统负荷分配中的应用问题matlab代码

    1 简介 差分进化算法在处理连续域.非凸.不确定性和全局优化问题时具有优势,已在包括电力系统最优潮流在内的诸多领域得到广泛应用.电力系统最优潮流是一个复杂的非线性优化问题,要求在满足特定的电力系统运行 ...

  4. 【运筹优化】DE差分进化算法求解无约束多元函数最值(Java代码实现)

    文章目录 前言 优化目标 求解结果 进化过程可视化 Java算法代码 可视化代码 前言 本文以求解二元函数最小值为例,如果需要求解多元函数,只需要修改以下变量即可: varNum:变量维度数 ub和l ...

  5. 快速掌握差分进化算法

    系列链接         遗传算法讲解及实例         差分进化算法讲解及实例         模拟退火算法讲解及实例 定义 差分进化算法属于进化算法的一种,如果读者已经了解了遗传算法,那么该算 ...

  6. 【进阶一】Python实现MDCVRP常见求解算法——差分进化算法(DE)

    基于python语言,实现差分进化算法(DE)对多车场车辆路径规划问题(MDCVRP)进行求解. 目录 往期优质资源 1. 适用场景 2. 求解效果 3. 代码分析 4. 数据格式 5. 分步实现 6 ...

  7. Python实现VRP常见求解算法——差分进化算法(DE)

    基于python语言,实现经典差分进化算法(DE)对车辆路径规划问题(CVRP)进行求解. 目录 1. 适用场景 2. 求解效果 3. 问题分析 4. 数据格式 5. 分步实现 6. 完整代码 参考 ...

  8. 【进阶二】Python实现VRPTW常见求解算法——差分进化算法(DE)

    基于python语言,实现经典差分进化算法(DE)对带有时间窗的车辆路径规划问题( VRPTW )进行求解. 目录 往期优质资源 1. 适用场景 2. 求解效果 3. 代码分析 4. 数据格式 5. ...

  9. 【进阶四】Python实现(MD)HVRP常见求解算法——差分进化算法(DE)

    差分进化算法+Split 求解异构车辆路径规划问题 碧海蓝天 吹吹风 目录 信息传递 1. 适用场景 2. 求解效果 3. 代码分析 4. 数据格式 5. 分步实现 6. 完整代码 参考 信息传递 p ...

最新文章

  1. CentOS 6.5+Nagios4.0.2+Msmtp+Mutt邮箱报警
  2. (转载)(c#)数据结构与算法分析 --数组、向量和表
  3. android获取当前应用占用的内存大小,Android分析已安装应用占用内存
  4. 【推荐】一个不错的密码强度测试网站
  5. 802.11(wi-fi)的PHY层(编码与调制方法)
  6. exls导入数据库 php_PHP Excel导入数据到MySQL数据库
  7. oracle数据库报错1033,Oracle联机日志出现错误ORA-16038 ORA-19809 ORA-00312 解决
  8. java的file类中的方法_java中File类的使用方法|chu
  9. 2-5 ImageList 控件
  10. ashly理器4.8软件汉化版_工程造价专业 常用广联达CAD等软件 推荐什么笔记本电脑?...
  11. 10 年前被删的初恋,凌晨 1 点突然加我…屌丝的眼泪
  12. 反激变换器matlab仿真变压器demo,反激变换器建模Matlab仿真
  13. 解决maven打包 错误: 程序包com.sun.istack.internal不存在 - BBSMAX
  14. win7原版镜像_(超详细)WIN7原版系统win镜像安装教程
  15. UE 编辑器无法保存文件(图表被连接到外部包中的私有对象)
  16. 越是聪明人越要懂得下笨功夫!
  17. 拉姆达Lambda表达式对list分页,获取list总页数
  18. 比特大陆IPO之旅即将终结
  19. 利用 android手机DLNA功能,实现手机视频无线播放到电脑、电视
  20. Lr_debug_message,Lr_output_message,Lr_error_message,Lrd_stmt,Lrd_fetch

热门文章

  1. 疫情期间,程序员是如何靠副业赚钱的?​
  2. React中过渡动画的编写方式
  3. centos mysql部署_CentOS下MySQL 8.0安装部署,超详细!
  4. 威联通NAS配置1.18.1Minecraft服务器
  5. 一阶电路暂态响应的结果分析。_第八讲 线性电路的过渡过程分析二
  6. word 宏命令批量把当前文件夹下的doc另存为docx格式
  7. Python实现坦克大战(TankWar)游戏
  8. Win10怎么看内存条频率
  9. Composer -- PHP依赖管理的新时代
  10. 视频教程-必会神器之MySQL数据库-MySQL