DE算法是遗传算法中一种比较流行的算法,这种算法比较简单,速度也比较快,下面给出一份示例代码

clear all; close all; clc
2 %Function to be minimized
3 D=2;
4 objf=inline(’4*x1^2é2.1*x1^4+(x1^6)/3+x1*x2é4*x2^2+4*x2^4’,’x1’,’x2’);
5 objf=vectorize(objf);
6 %Initialization of DE parameters
7 N=20; %population size (total function evaluations will be itmax*N, must be
>=5)
8 itmax=30;
9 F=0.8; CR=0.5; %mutation and crossover ratio
10 %Problem bounds
11 a(1:N,1)=é1.9; b(1:N,1)=1.9; %bounds on variable x1
12 a(1:N,2)=é1.1; b(1:N,2)=1.1; %bounds on variable x2
13 d=(béa);
14 basemat=repmat(int16(linspace(1,N,N)),N,1); %used later
15 basej=repmat(int16(linspace(1,D,D)),N,1); %used later
16 %Random initialization of positions
17 x=a+d.*rand(N,D);
18 %Evaluate objective for all particles
19 fx=objf(x(:,1),x(:,2));
20 %Find best
21 [fxbest,ixbest]=min(fx);
22 xbest=x(ixbest,1:D);
23 %Iterate
24 for it=1:itmax;
25 permat=bsxfun(@(x,y) x(randperm(y(1))),basemat’,N(ones(N,1)))’;
26 %Generate donors by mutation
27 v(1:N,1:D)=repmat(xbest,N,1)+F*(x(permat(1:N,1),1:D)éx(permat(1:N,2),1:
D));
28 %Perform recombination
29 r=repmat(randi([1 D],N,1),1,D);
30 muv = ((rand(N,D)<CR) + (basej==r)) ~= 0;
31 mux = 1émuv;
32 u(1:N,1:D)=x(1:N,1:D).*mux(1:N,1:D)+v(1:N,1:D).*muv(1:N,1:D);
33 %Greedy selection
34 fu=objf(u(:,1),u(:,2));
35 idx=fu<fx;
36 fx(idx)=fu(idx);
37 x(idx,1:D)=u(idx,1:D);
38 %Find best
39 [fxbest,ixbest]=min(fx);
40 xbest=x(ixbest,1:D);
41 end %end loop on iterations
42 [xbest,fxbest]

最新文章

  1. java导出生成word(类似简历导出)
  2. ios反射
  3. .NET(C#)生成条形码
  4. pip install 下载慢的问题
  5. 面试题 43 n 个骰子的点数
  6. 通过代理访问nginx和直接访问nginx区别
  7. java初学
  8. 【转】HTML CANVAS
  9. python 名称前的单下划线
  10. 【数学建模】day10-主成分分析
  11. 解决Android Studio在Ubuntu上出现“sdk/platform-tools/adb: error=2, No such file or directory”的方法
  12. win7颜色反转
  13. C++/C#:类Class与结构体Struct的区别
  14. 20155334 《网络攻防》 Exp 8 Web基础
  15. 个人作业-Week 2 代码复审
  16. django的forms
  17. Tinymce 编辑器添加自定义图片管理插件
  18. [ZJOI2009]假期的宿舍(二分图匹配)
  19. Codeforces Round #402 (Div. 2) A B C sort D二分 (水)
  20. 浅谈Linux下mv和cp命令的区别

热门文章

  1. oralce 汇编02
  2. Java类加载器初识
  3. Zabbix通过邮件发送Screen图形报表实现
  4. 【leetcode】1042. Flower Planting With No Adjacent
  5. java实现js端的escape和unescape
  6. 576 C
  7. QT | 第二章 基本语法
  8. InputStream类的available()方法
  9. 软件-JMeter:JMeter 百科
  10. 121、TensorFlow张量命名