@@ -91,9 +91,15 @@ export class GWOAlgo extends Algo {
9191 */
9292 public updateChiefWolves ( sol : Solution [ ] ) {
9393
94- sol = sol . sort ( ( a , b ) => {
95- return b . fitness - a . fitness ;
96- } )
94+ if ( sol . length && sol [ 0 ] . problem . maximization ) {
95+ sol = sol . sort ( ( a , b ) => {
96+ return b . fitness - a . fitness ;
97+ } )
98+ } else {
99+ sol = sol . sort ( ( a , b ) => {
100+ return a . fitness - b . fitness ;
101+ } ) ;
102+ }
97103
98104 if ( ! this . alpha || ! this . beta || ! this . delta ) {
99105 this . alpha = sol [ 0 ] . copy ( ) ;
@@ -102,19 +108,41 @@ export class GWOAlgo extends Algo {
102108 return ;
103109 }
104110
105- for ( let i = 0 ; i < sol . length ; i ++ ) {
106- if ( sol [ i ] . fitness < this . delta . fitness ) break ;
107-
108- if ( sol [ i ] . fitness > this . alpha ?. fitness ) {
109- this . delta = this . beta . copy ( ) ;
110- this . beta = this . alpha . copy ( ) ;
111- this . alpha = sol [ i ] . copy ( ) ;
112- } else if ( sol [ i ] . fitness > this . beta ?. fitness ) {
113- this . delta = this . beta . copy ( ) ;
114- this . beta = sol [ i ] . copy ( ) ;
115- } else if ( sol [ i ] . fitness > this . delta ?. fitness ) {
116- this . delta = sol [ i ] . copy ( ) ;
111+ if ( sol . length && sol [ 0 ] . problem . maximization ) {
112+
113+ for ( let i = 0 ; i < sol . length ; i ++ ) {
114+ if ( sol [ i ] . fitness < this . delta . fitness ) break ;
115+
116+ if ( sol [ i ] . fitness > this . alpha ?. fitness ) {
117+ this . delta = this . beta . copy ( ) ;
118+ this . beta = this . alpha . copy ( ) ;
119+ this . alpha = sol [ i ] . copy ( ) ;
120+ } else if ( sol [ i ] . fitness > this . beta ?. fitness ) {
121+ this . delta = this . beta . copy ( ) ;
122+ this . beta = sol [ i ] . copy ( ) ;
123+ } else if ( sol [ i ] . fitness > this . delta ?. fitness ) {
124+ this . delta = sol [ i ] . copy ( ) ;
125+ }
126+ }
127+
128+ } else {
129+
130+ for ( let i = 0 ; i < sol . length ; i ++ ) {
131+ if ( sol [ i ] . fitness > this . delta . fitness ) break ;
132+
133+ if ( sol [ i ] . fitness < this . alpha ?. fitness ) {
134+ this . delta = this . beta . copy ( ) ;
135+ this . beta = this . alpha . copy ( ) ;
136+ this . alpha = sol [ i ] . copy ( ) ;
137+ } else if ( sol [ i ] . fitness < this . beta ?. fitness ) {
138+ this . delta = this . beta . copy ( ) ;
139+ this . beta = sol [ i ] . copy ( ) ;
140+ } else if ( sol [ i ] . fitness < this . delta ?. fitness ) {
141+ this . delta = sol [ i ] . copy ( ) ;
142+ }
117143 }
144+
118145 }
146+
119147 }
120148}
0 commit comments