
рд╣рдо рдмрд╣реБрдЖрдпрд╛рдореА рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ , рдФрд░ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдг рдЭреБрдВрдб рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдиреНрдпреВрдирддрдо рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ:
рдЬрд╣рд╛рдБ - рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдордиреНрд╡рдп, - рдЗрд╕ рдпреБрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдордиреНрд╡рдп, рдФрд░ - рд╡рдЬрди рдХрд╛рд░рдХ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд), рдЬрдбрд╝рддрд╛ рдХрд╛ рдЧреБрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕реЗ рдПрдХ рдпреБрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдХрдг рд╡реЗрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп
рдЪреВрдВрдХрд┐ рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рдо рдХреЛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
рджреВрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛parabol(x) = sum(u->u*u, x)
рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрд╡рдпрдВ MRC:
function mdpso(; nparts = 50, ndimes = 2, ages = 50,
рдЖрд░реЗрдЦрдг рдХреЗ рд╕рд╛рде, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрдгрдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╣реИ:
using Plots pyplot() function ploter(l, u, xy, z, n_age ) contour(Xs, Ys, Zs, fill = true);

mdpso(C1 = [1.2 1.2], C2 = [1.1 1.1], Ac = [0.08 0.08], lower = [-4 -4], upper = [4 4], ages = 30)

fun = ekly mdpso(C1 = [1.7 1.7], C2 = [1.7 1.7], Ac = [0.07 0.07], lower = [-5 -5], upper = [5 5], ages = 15)


fun = himmelblau mdpso(C1 = [1.1 1.1], C2 = [1.0 1.0], Ac = [0.09 0.09], lower = [-5 -5], upper = [5 5], ages = 20, parts = 50)


fun = holdertable mdpso(C1 = [1.1 1.1], C2 = [1.0 1.0], Ac = [0.09 0.09], lower = [-10 -10], upper = [10 10], ages = 20, parts = 50)


fun = levy13 mdpso(C1 = [1.1 1.1], C2 = [1.0 1.0], Ac = [0.09 0.09], lower = [-10 -10], upper = [10 10], ages = 20, parts = 50)


fun = shaffer4 mdpso(C1 = [1.1 1.1], C2 = [1.0 1.0], Ac = [0.09 0.09], lower = [-100 -100], upper = [100 100], ages = 20, parts = 50)


рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рдкреНрд░реЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рдХрд░ рд░рд╣рд╛ рд╣реИ: рдпрджрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдиреНрдпреВрдирддрдо рдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдг рдирд╣реАрдВ рдЙрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рдЪреАрдЬ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рдЧрд┐рд░ рд╕рдХрддреА рд╣реИ:
fun = rastrigin mdpso(mdpso(C1 = [0.1 0.1], C2 = [1 1], Ac = [0.08 0.08], lover = low, upper = up, ages = 30))


рд╣рд╛рдБ, рдФрд░ рдкреБрд░рд╛рдирд╛ рдмрд╣реБрдд рдирд╣реАрдВ рдЕрдЪреНрдЫрд╛ рд░реЛрд╕реЗрдирдмреНрд░реЛрдХ рдЕрднреА рднреА рдЦреБрдж рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ:
fun = rosenbrok mdpso(C1 = [1.7 1.7], C2 = [1.5 1.5], Ac = [0.15 0.15], lover = low, upper = up, ages = 20, nparts = 50) ... Age тДЦ 20 xbest: 0.37796421341886866 0.12799160066705667 Fmin: 0.409026370833564


рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдиреНрдпреВрдирддрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рдиреНрдирд┐рдХрдЯрди рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП FDM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, Nelder-Mead:
рд╕рд┐рдВрдкреНрд▓реЗрдХреНрд╕ рд╡рд┐рдзрд┐ vecl(x) = sqrt( sum(u -> u*u, x) ) function sortcoord(Mx) N = size(Mx,2) f = [fun(Mx[:,i]) for i in 1:N]
ofNelderMid(fit = [0.37796 0.127992]) ... 92 0.00022610400555036366 [1.0, 1.0] 93 0.00015987967588703512 [1.0, 1.0] 94 0.00011305200343052599 [1.0, 1.0] 2-element Array{Float64,1}: 0.9999999996645973 0.9999999995466575
рд╢рд╛рд╕реНрддреНрд░реАрдп рдПрдордПрдлрд╕реА рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рд░реЛрдХ рдорд╛рдкрджрдВрдб рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ: рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рдХрдИ рдпреБрдЧреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдХрдгреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рднреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпреБрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рдиреНрдпреВрдирддрдо рдЦреЛрдЬрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдгреЛрдВ рдФрд░ рдпреБрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рд╕реНрдореГрддрд┐ рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдордп (рдХреЛрдИ рдордЬрд╝рд╛рдХ рдирд╣реАрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреА 50 рдХреЙрд▓) рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред
рдиреИрддрд┐рдХрддрд╛
- рдпрджрд┐ рдЖрдк рдЬрдЯрд┐рд▓ рдФрд░ рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рдЕрдХреНрд╕рд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреАрд░реНрдг рд░реВрдк рд╕реЗ рддреАрдХреНрд╖реНрдг рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд╛рд░рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП)
- рд▓рдЧрд╛рддрд╛рд░ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╣рд╛рде рдкрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдордУ рд╣реЛрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред
- рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рд░рдЦрдирд╛ рдФрд░ рд╕рд╣реА рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рд╢реЛрдз рдореЗрдВ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЖрдк рд░рд╛рд╣рдд рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрднрд┐рд╕рд░рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдордзреНрдпрд╡рд░реНрддреА рдЧрдгрдирд╛ рдХрд╛ рдкреНрд░рд┐рдВрдЯ рдЖрдЙрдЯ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдЬ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдк рд╕рднреА рдХреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдХреВрд▓рди рдЪрд╛рд╣рд┐рдП!