找回密码
 注册
关于网站域名变更的通知
查看: 501|回复: 1
打印 上一主题 下一主题

冠状病毒群体免疫优化算法(CHIO)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-1 09:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 uperrua 于 2021-3-1 09:56 编辑 ) x1 v2 o# Y) |$ M% N& i/ M; [

7 t* w% m) \3 |/ ^( A$ R/ F1 g一、简介
! m/ x% n- h& B* {, \本文提出了一种新的基于自然启发的人本优化算法:冠状病毒群免疫优化算法(CHIO)。
! z4 m1 l7 E% m7 _/ N1 x
+ q4 w3 T5 O* b5 `In this paper, a new nature-inspired human-based optimization algorithm is proposed which is called coronavirus herd immunity optimizer (CHIO).
/ V2 x4 Z, J- e" ^/ _( L; z% \% D0 v; U- `6 {8 L* O8 J' L
CHIO的灵感来源于群体免疫概念,作为应对冠状病毒大流行(COVID-19)的一种方法。$ d+ J; c7 y, }+ ]$ x; Z
" x( j# ]: s, \! f1 K+ v
The inspiration of CHIO is originated from the herd immunity concept as a way to tackle coronavirus pandemic (COVID-19).6 B& t3 i% Y; v+ T$ X1 Y
6 e" o! Q3 ?' n4 ^' O( C  t2 X- b! a
冠状病毒感染的传播速度取决于感染者如何与其他社会成员直接接触。' q# J! E6 E. Y
/ j- P  c2 ^/ P, D! \
The speed of spreading coronavirus infection depends on how the infected individuals directly contact with other society members.* K2 Y' h  p7 Q( p6 ?# Q
$ E; W/ J4 ]$ q  S( v6 Z
为了保护其他社会成员免受疾病的侵害,健康专家建议保持社会距离。
( y, ~+ a  x8 B5 X2 d, `/ Q# X( C; \0 t& Q8 t
In order to protect other members of society from the disease, social distancing is suggested by health experts.( c: \# ]1 l  D; O1 u

( f$ r4 T0 I/ t  P9 p5 R群体免疫是一种状态,当大多数人免疫时,人群达到这种状态,从而防止疾病传播。
7 G- P/ K9 k' P; n) i5 {/ n) k1 P% W& R( I5 N. v' c% |8 f0 p! ~  J) I
Herd immunity is a state the population reaches when most of the population is immune which results in the prevention of disease transmission.+ w, ?% @" r5 X

* S; _: d/ x1 R* J% C# O这些概念是根据优化理论建模的。
& K. M* p& v; _
2 m1 e3 s! E4 ~) _: H( ]These concepts are modeled in terms of optimization concepts.: Y% Z6 F! v8 s( c
: f8 E1 H8 ?& \  g- \9 N! T
CHIO模仿了群体免疫策略和社会距离概念。
# l6 D; g6 U0 Y' r7 w
+ f; s" N4 y! t/ p9 \5 O6 F. rCHIO mimics the herd immunity strategy as well as the social distancing concepts.3 @6 l$ B4 y# [# V1 a, r0 W
. A' |% r( g% `; k6 `, p- n
群体免疫利用了三种类型的个体病例:易感、感染和免疫。
  Z- e# P- r( \5 ]  |) V' w: O1 m) F, `8 w
Three types of individual cases are utilized for herd immunity: susceptible, infected, and immuned.& K9 u* S$ l! w# t6 B4 }0 T+ m
7 V, w  V) q- I- P* p
这是为了确定如何用社会距离策略更新其基因产生的解决方案。# s+ ]+ Z; L5 h) W. e9 d8 G$ g

! r' z  D' H- ]$ N$ W) t' T. R+ `; OThis is to determine how the newly generated solution updates its genes with social distancing strategies." Y% I6 ], i& O

) J7 W- |$ ~6 D8 `& `( X# vCHIO使用23个著名的基准函数进行评估。, R: g  P" U* \3 |( B7 _% N

* O6 F/ {- ?, t. d, uCHIO is evaluated using 23 well-known benchmark functions." W  ]& r9 ]- n' b" U

, a% u9 q8 A& m* ]( O首先,研究了CHIO对其参数的敏感性。. l, I9 \0 n" m+ [

* W: y5 `* a  ~! h$ o+ l' CInitially, the sensitivity of CHIO to its parameters is studied.
) r- u: q  A# q& W7 a5 G  `
( B2 |- |( t1 T, _# i在此基础上,对现有的七种方法进行了比较评价。  a# x6 [& v$ h. ?, n, f

0 A  B6 x' r- \5 PThereafter, the comparative evaluation against seven state-of-the-art methods is conducted.$ I% P* d; t4 ]- @! i& e0 P) |
! Y4 G; B* j0 Z. g; m! O2 x# D/ n
通过对比分析,证实了CHIO与其他成熟方法相比,能够产生非常有竞争力的结果。
+ ]* X: G, k7 b, Y% \2 ]& T# i
) K7 b; l3 A+ }& R& R. E& [- zThe comparative analysis verifies that CHIO is able to yield very competitive results compared to those obtained by other well-established methods.
, Z: Q) T+ V/ ^) V' `+ n1 t+ ]. N' Z3 z$ X
为了进一步验证,使用了从IEEE-CEC 2011中提取的三个实际工程优化问题。
' s7 j7 |6 o" ^2 L+ |3 O9 }! c: B& n* G. G6 H* a7 R; f1 N7 j
For more validations, three real-world engineering optimization problems extracted from IEEE-CEC 2011 are used.
6 q2 F9 u& d" t; g9 v( Y( n; T% W! q1 C2 {  m7 D6 |
同样,CHIO被证明是有效的。( L4 ^3 I3 L+ V0 Z
& s/ S  n" t( a$ \
Again, CHIO is proved to be efficient.
" i! Z2 r, V8 k( G
* s5 `* [* Q2 D. _总之,CHIO是一个非常强大的优化算法,可以用来解决跨各种优化领域的许多优化问题。- X+ R. s7 t! Q! l1 m& O
8 x- Q& K2 z3 J8 \' f& J
In conclusion, CHIO is a very poweRFul optimization algorithm that can be used to tackle many optimization problems across a wide variety of optimization domains.  O' j+ w9 A, Q& G2 d. |

1 t7 O/ T- z5 m7 M- e/ P4 x二、源代码  u: {+ V* a9 u" s/ ~  ~
%=======================================================================0 x: a1 R* v3 B0 d1 F7 ^
%            Coronavirus herd immunity optimizer (CHIO)% l; m6 a1 M  h" v% G6 g1 X" D
) S# ]( D6 n# s, H8 y7 B
% All rights reserved.       0 G" W( S' |, k, {
%=======================================================================* _* a0 Q: F: {4 U

  ?) b; K9 ?0 n6 K
' n3 x+ y0 x$ S. g6 W4 D$ jclear all( |! o4 M# }" F8 |( J# s
close all0 c% U: J" U0 T- N5 u' Z/ r2 M, \
clc
, b; u* ]2 N1 c7 f3 `
" y2 U% J% x' Y* f' X/ ~PopSize=30; %/* The number of Solutions*/
7 l! a: h  q6 D/ i% s; I/ J% U
3 |. [- x, f3 c2 E! CMaxAge = 100;0 v- S5 \" N, s' [
0 Q( T' X) q( f1 [
C0 = 1; % number of solutions have corona virus) e3 x% L7 n, @7 l% L
$ o7 G& T) m3 E& a! F. B3 s7 t
Max_iter=100000; %/*The number of cycles for foraging {a stopping criteria}*/
7 l' Q0 H! T2 P5 d# r& z' S( [& w: Z; d ' e9 n) o* ^6 J2 e
SpreadingRate = 0.05;   % Spreading rate parameter
( p& ~1 L2 @" c# b6 o0 z 8 C1 a4 d2 T! E5 x8 F' Y
runs = 1;%/*Algorithm can be run many times in order to see its robustness*/6 J# p7 \2 T  B5 }. D
0 M( r2 e7 r0 J+ R+ L
ObjVal = zeros(1,PopSize);5 D8 q, C6 P4 U

1 v. n2 J* X2 ?- I3 i' I2 L9 OAge = zeros(1,PopSize);
2 X2 {# o0 y( o+ ]$ d9 T- v$ o
8 v5 B& O. A" ?- \3 C6 t1 SBestResults = zeros(runs,1); % saving the best solution at each run/ [+ K  S$ m  K$ ]8 A' T& K$ }

: j  H' ]' |: Z$ t' jfor funNum=7:7  % fun#1 to fun#23
0 o2 ?/ U2 ~$ f7 B" Q; J    if(funNum==1)  X! b- W$ c* g% c  l+ i
        Function_name='F1';
; t4 G6 t  O. S% b3 H- `    elseif(funNum==2)" u7 o# r) B4 ?$ C4 _8 z9 v
        Function_name='F2';; p) g% L  T$ I0 I2 V
    elseif(funNum==3)9 @# l2 b# E1 H; G
        Function_name='F3';0 l5 f+ a. C2 `& I* y9 {# ?; p
    elseif(funNum==4)6 A1 n, Q5 c& h5 g- ^
        Function_name='F4';
' I8 X" a9 a, j6 @% T    elseif(funNum==5)( V: @# z4 X3 f% Q/ Q4 S
        Function_name='F5';: _( W7 H% T$ V9 W; g  R8 l
    elseif(funNum==6)$ e# e- r7 |+ ~
        Function_name='F6';: q! d, [0 r: x+ @; p, ]
    elseif(funNum==7)3 p5 h% U& M9 [1 A
        Function_name='F7';( M3 D2 W( x/ ~7 x+ t" s+ s
    elseif(funNum==8)
2 B4 P: a. [' {5 j! T4 N0 p4 W        Function_name='F8';
0 `# [3 h  g  q: @- s( D0 u    elseif(funNum==9)( d( [; I- h& k% I2 s- Z  T6 q
        Function_name='F9';5 l" \0 ?7 D1 d" Q
    elseif(funNum==10)
$ e3 w6 Z: w" u3 D        Function_name='F10';
' h2 c% k4 p# n$ Y) o! ~# Q    elseif(funNum==11)
4 d8 j9 W, m8 ?- E) A        Function_name='F11';4 b* k1 z5 r, K
    elseif(funNum==12)# f4 x  u/ C& I
        Function_name='F12';
/ e! p' o, f7 a( B    elseif(funNum==13)
9 o$ y8 t+ L) V1 b! a        Function_name='F13';
7 L) k0 N+ ^* ]& n* i    elseif(funNum==14)
/ W- ^/ Z8 e3 Q& A8 \& l        Function_name='F14';( n1 E( ?- I' p1 M8 N
    elseif(funNum==15)2 ?9 m4 ]/ C; z; |9 j8 A; j1 q
        Function_name='F15';
& u# x2 I" l& J% T1 S0 k8 h9 ~    elseif(funNum==16)- D$ }8 c: h) y% @' `
        Function_name='F16';
0 R* y" p$ Z- i+ E& Z/ G. O& b    elseif(funNum==17)
' D! I" a( ], |6 ]0 X2 ?        Function_name='F17';! J* i. J. m- W4 F
    elseif(funNum==18)
# s$ P$ s) N: c' w% Y        Function_name='F18';
& E1 S$ v% R# W    elseif(funNum==19)
& y; t. I& J+ ?6 x* n* k        Function_name='F19';7 y9 X, x. U9 c5 @- ]. L
    elseif(funNum==20)1 y' O7 p, T# D& P, g/ b
        Function_name='F20';' |! L7 F% _6 X
    elseif(funNum==21)+ I# n# A: m/ z8 ~! a, Z  G# X
        Function_name='F21';
1 s3 u! ], u3 ~6 n, y    elseif(funNum==22), M& b8 ^5 I; g0 _5 j8 i
        Function_name='F22';
0 K+ |6 l2 M( y( v6 o! N' m    elseif(funNum==23)
# p, L1 z# H, O        Function_name='F23';  B# A5 i, L' \6 d( E2 B' v
    end
' \1 h9 }9 J6 ~; }" J& \
" }+ o2 \5 r5 `    % Load details of the selected benchmark function
! D8 K- T# [; \" A8 w" X# ^    [lb,ub,dim,fobj]=Get_Functions_details(Function_name);) j8 _" F" `( n1 W, c% ?
; e+ g( a/ V( g7 U1 I
    for run = 1: runs
! z2 d! ^9 P  `8 B5 B# o% c/ D        % Initializing arrays
# s) R1 h/ W/ \2 ?& H- E4 ~        swARM=zeros(PopSize,dim);0 [& W* A  ~2 J7 d( a5 L5 ~4 P, g
        
( i. p3 ?7 W0 V+ ^  S* z        % Initialize the population/solutions
/ V" u1 o# l4 O4 i2 M        swarm=initialization(PopSize,dim,ub,lb);. U9 \$ _+ I6 ?/ ~8 d

& \; Q6 K0 N: B9 n$ g  i        for i=1: PopSize,
! d3 @. Z, L8 S3 r% r          ObjVal(i)=fobj(swarm(i,: ));
. Z( k6 z" ]' n  B7 O9 U$ n* p6 S        end
/ O' B. M, d; O+ f6 q: D        % i" R: h, x+ N% [6 U7 [
        Fitness=calculateFitness(ObjVal);
7 R2 q1 Z5 E' _* e7 G0 ]8 w1 G. w# k# \        & n  [( }. ], N  @$ @
        
( U+ d7 ^0 P2 Y' j. c        %% update the status of the swarms (normal, confirmed)
4 Y; t; J9 T& I' _        %%the minmum C0 Immune rate will take 1 status which means
% I* z# q' F7 L* w+ x; s" V        %%infected by corona
" \  s) s) ^/ v0 G; D# v# i ) V- c5 y6 K2 U8 R1 q. o8 M) `
        Status=zeros(1,PopSize);& R! v4 X2 s( b" ?* C
        
1 b7 R5 V8 Q! m- I, W# D5 F        for i=1: C0,
# _- w1 U0 W! ~5 J- x1 `4 Q            Status(fix(rand*(PopSize))+1)=1;  ( ?, y/ v$ `3 a' ^
        end  a) P; {. g: D2 i2 {8 G9 @. U& ?
        ; e! ?0 j9 P; W9 ?
      %===================== loop ===================================
; r6 X* M. l7 r  P5 e; T# }& d      tic
1 ?  A: l1 q) T- x# V% V      
3 G9 j# V: a( n7 j" [/ K      itr=0;   % Loop counter# b2 u* q) ?! x, r; s

+ N7 ^/ z4 X/ i' O: ?      while itr<Max_iter
5 c# }! B2 @: b) F          ! |1 ^; H+ }) ^, V4 ~+ q
          for i=1: PopSize,& Z- n& ^7 q2 n0 O5 c% V
           
. i0 i2 M& D/ q& `' k7 |              %evaluate new solution
/ s; ^8 [: ?3 c6 s  F7 _: T              ObjValSol=fobj(NewSol);: g$ {) k" m9 [5 Q- A( y+ F( j9 Q
              FitnessSol=calculateFitness(ObjValSol);" L' n9 f7 [' o
              4 \+ [# b/ `- Q% Q
              % Update the curent solution  & Age of the current solution  n0 T( @9 u7 Q
              if (ObjVal(i)>ObjValSol)
* Y, q# d. q+ ^" y- I                swarm(i,: )=NewSol;+ C5 p2 \6 c: [
                Fitness(i)=FitnessSol;
) ~* _# T; T& p+ r8 {$ j% v. z                ObjVal(i)=ObjValSol;
, |1 B+ C) q) j3 d3 ^              else
0 P" v2 X: H1 \' c+ c& Z                  if(Status(i)==1)
/ B& \' M$ W% p7 X8 P                      Age(i) = Age(i) + 1;
) n' f% m) N2 W& Y                  end
3 a* m0 I9 @4 n6 k. z# I! T              end            " a0 @5 i! e& n# x$ e
                             }8 c" u( ~3 x# r" Y* g
              % change the solution from normal to confirmed
, W6 t5 F2 a: {; ^: d5 V1 C$ _6 y              if ((Fitness(i) < mean(Fitness))&& Status(i)==0 && CountCornoa>0)' m" i# Y5 t4 Z
                  Status(i) = 1;' k4 H$ P/ ]5 H, e" l; L4 F
                  Age(i)=1;
$ l9 j* A5 T; i8 H& a* b7 F5 z% t- r; j              end
1 l: m7 {% y$ _+ `+ A5 A              
% f7 \! _, z/ C$ Y% }5 F9 g  n              % change the solution from confirmed to recovered
+ z/ m* @3 _, g/ a              if ((Fitness(i) >= mean(Fitness))&& Status(i)==1)
/ t: I5 M$ Y3 G8 b, X1 j: R" D                  Status(i) = 2;
4 K+ @4 V$ O# B; @; N3 P                  Age(i)=0;
$ Y: N- J/ _, j4 z              end  }" @3 j- n& M) G# H" z
              # g! ^) y+ R& z& N0 ~/ z$ W
              % killed the current soluion and regenerated from scratch
7 K- ^$ h: s  `; z              if(Age(i)>=MaxAge)
9 C' k) D; D  h' s7 X                  NewSolConst = initialization(1,dim,ub,lb);
* L4 }6 }$ r0 F+ n                  swarm(i,: ) = NewSolConst(: );: w  Z- e5 h( d7 [7 a/ i& c
                  Status(i) = 0;
$ A! r3 N3 @4 C; j9 M              end1 d- a3 q5 C; w; W$ X
          end
2 P' N" L1 S/ a+ R                ! p# {) n5 P! D4 O
          if(mod(itr,100)==0)
. z6 y- a8 `; r# }* ]) _. d  f. S             display(['Fun#',num2str(funNum),' Run#', num2str(run), ', Itr ', num2str(itr), ' Results ', num2str(min(ObjVal))]);
2 \6 c  N0 b+ ?3 L$ y6 L0 F" b% l7 u          end
. ~$ |8 p' T" J8 f& r7 Z/ b
* ^1 ~* W9 A) `          itr=itr+1;    / o4 o+ A" i9 j% p' ~6 c8 h
      end8 z" H" U, i* B$ z5 Q7 H2 o
      
5 T* v% s/ n& i% |7 {) f      toc;+ n' D4 g2 G0 [' O" W5 l  d+ e3 H
   
! ~9 Q0 a9 e! S7 A6 @      % Save the best results at each iteration4 ?4 L1 G& Y' F* E
      BestResults(run)=min(ObjVal);
  j2 [. w6 t- E' k+ P5 I 5 _# x7 G/ d0 k: h8 l( Y
    end % run6 r% H; o7 s" ]8 s$ K: L2 u- X) ^
  
7 a+ k5 ?) l# P/ J* K0 O    fprintf(1, '\n\n Done \n\n');
+ Z4 X# h4 |/ i  m0 h2 A  1 U& \- L% ]7 T
end
1 ^- {8 o* h2 Q! X. b) b. Y5 P5 k三、运行结果, b2 V+ v- @, I

该用户从未签到

2#
发表于 2021-3-1 10:54 | 只看该作者
冠状病毒群体免疫优化算法(CHIO)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-5 00:38 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表