Verwendung des Partikelschwarmalgorithmus zur Lösung von Problemen bei der Zuverlässigkeitsoptimierung

1. Problembeschreibung:

 Verwendung des Partikelschwarmalgorithmus zur Lösung von Problemen bei der Zuverlässigkeitsoptimierung

2. Teil des Programms:

 

klar;
clc;
alle schließen

popsize = 20; num = 5;
jiage = [3,12,8,5,10]; jiage = jiage ';
kekaoxing = [0,96,0,93,0,85,0,8,0,75]; r0 = 0,9;
bujian = Nullen (popsize) , num + 2);% Die Zuverlässigkeit der Spalte num + 1, der Preis der Spalte num + 2
newbujian = Nullen (popsize, num + 2);    
vol = Nullen (popsize, num); 
% quanzhong = 1; c1 = 1 ; c2 = 1;
c1 = 1,4962; c2 = 1,4962;
maxgen = 100;

für i = 1: popsize,
       für j = 1: num,
            bujian (i, j) = decken (5 * rand); newbujian (i, j) = decken (5 * rand);
       end
       bujian (i, num + 1) ) = 1; newbujian (i, num + 1) = 1;
       für j = 1: num,
                bujian (i, num + 1) = bujian (i, num + 1) * (1- (1-kekaoxing (j)) ) ^ bujian (i, j));
                newbujian (i, num + 1) = newbujian (i, num + 1) * (1- (1-kekaoxing (j)) ^ newbujian (i, j));
       end
       if bujian (i, num + 1) <r0 bujian (i, :) = kkxchangenew (bujian (i, :), jiage, kekaoxing, r0); end% Stellen Sie sicher, dass die Zuverlässigkeitsanforderungen nach der Initialisierung erfüllt sind,
       wenn newbujian (i, num +) 1) <r0 newbujian (i, :) = kkxchangenew (newbujian (i, :), jiage, kekaoxing, r0); end%, um sicherzustellen, dass die Zuverlässigkeitsanforderungen nach der Initialisierung erfüllt sind
            bujian (i, num + 2) = bujian ( i, 1: 5) * jiage;
            newbujian (i, num + 2) = newbujian (i, 1: 5) * jiage;
Ende

bestbujian = newbujian (1, :);

%%%%%%%%%%%% starten die Hauptschleife %%%%%%%%%%%%
für k = 1: maxgen,
    quanzhong = 0,9-0,5 * k / maxgen;
       % berechnen das individuelle Extrem Wert und globaler Extremwert
        für i = 1: popsize,                                                        
                %% bujian (i, num + 2) = bujian (i, 1: 5) * jiaga;
                wenn bujian (i, num + 2) <newbujian (i, num +) 2) newbujian (i, :) = bujian (i, :); end
                if newbujian (i, num + 2) <bestbujian (num + 2) bestbujian = newbujian (i, :); end
        end
       track (k, 1) = k; Spur (k, 2) = bestbujian (num + 2); Spur (k, 3) = min (bujian (:, num + 2)); Spur (k, 4) = max (bujian (:, num +2));
      % Position und Geschwindigkeit  
        für i = 1 aktualisieren: Popsize,
                für j = 1: num,
                        vol (i, j) = quanzhong * vol (i, j) + c1 * rand * (newbujian (i, j) -bujian (i, j)) + c2 * rand * (bestbujian (j) -bujian (i, j));% Aktualisierungsgeschwindigkeit       
                        bujian (i, j) = bujian (i, j) + vol (i, j);% Aktualisierungsort
                        bujian (i, j) = decken (bujian (i, j));
                        if ( bujian (i, j) <0) bujian (i, j) = 0; end
                end
        end
     % Berechnen Sie die Zuverlässigkeit und stellen Sie die Zuverlässigkeitsanforderungen sicher und berechnen Sie gleichzeitig den Preis
        für i = 1: popsize,
                bujian (i , num + 1) = 1;
                                für j = 1: num, bujian (i, num + 1) = bujian (i, num + 1) * (1- (1-kekaoxing (j)) ^ bujian (i, j )); end
                if bujian (i, num + 1) <r0 bujian (i, :) = kkxchangenew (bujian (i, :), jiage, kekaoxing, r0); end% garantiert, um die Zuverlässigkeitsanforderungen zu erfüllen
                 bujian (i, num + 2) = bujian (i, 1: 5) * jiage;
        Ende
Ende
%%%%%%%%%%% Ende der Hauptschleife
%%%%%%%%%% bestbujian,
Figurendiagramm
(Spur (:, 1), Spur (:, 2), 'b - +', Spur (:, 1), Spur (:, 3), 'r-x', Spur (:, 1), Spur (:, 4), 'm- *');
t = max (Spur (:, 2));
Figurendiagramm
(Spur (:, 1), Spur (:, 2), 'r');
Achse ( [1, maxgen, 80, t + 1]);
xlabel ('Anzahl der Iterationen'); ylabel ('Preis (Yuan)');

3. Simulationsschlussfolgerung:

D00004

Ich denke du magst

Origin blog.csdn.net/ccsss22/article/details/114645442
Empfohlen
Rangfolge