рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди


рдпрд╣ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдиреНрдпреВрдирддрдо рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рд╕реЙрд▓реНрд╡рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреВрд░реЗ рдкреИрдХреЗрдЬ рднреАред


рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдЬреВрд▓рд┐рдпрд╛ рднрд╛рд╖рд╛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ ред Https://juliacomputing.com рдкрд░ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЦрдЧреЛрд▓рд╡рд┐рдж, рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдФрд░ рдлрд╛рдЗрдиреЗрдВрд╕рд░ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рдХреНрдпреЛрдВ рдЪреБрдирддреЗ рд╣реИрдВ, рдФрд░ https://academy.juliabox.com рдкрд░ рдЖрдк рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдкрд╛рдареНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ, рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдФрд░ https://julialang.org/learning/ рдкрд░ рдмреГрд╣рд╕реНрдкрддрд┐ рд▓реИрдкрдЯреЙрдк рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдКрдкрд░ рд╕реЗ рд╣рдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ: рд╕реНрдерд╛рдкрдирд╛, рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдФрд░ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рд╣реЛрдЧрд╛ред рддрддреНрдХрд╛рд▓ред рдЕрдм рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛред


BlackBoxOptim


BlackBoxOptim - рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдкреИрдХреЗрдЬ ( http://julialang.org/ )ред рдпрд╣ рджреЛрдиреЛрдВ рдмрд╣реБрдЙрджреНрджреЗрд╢реНрдпреАрдп рдФрд░ рдПрдХрд▓-рдЙрджреНрджреЗрд╢реНрдп рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ (рдореЗрдЯрд╛) рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ / рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо (рдбреАрдИ, рдПрдирдИрдПрд╕, рдЖрджрд┐) рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ, рдирд┐рдпрддрд╛рддреНрдордХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдиреБрдХреВрд▓рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ / рднрд┐рдиреНрдирддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдзреАрд░реЗ-рдзреАрд░реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ


]add BlackBoxOptim using BlackBoxOptim 

Rosenbrock рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВ:


 f(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 

рд╣рдо рджреЛ-рдЖрдпрд╛рдореА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ (-5; 5) рдкрд░ рдПрдХ рдиреНрдпреВрдирддрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:


 res = bboptimize(f; SearchRange = (-5.0, 5.0), NumDimensions = 2) 

рдЙрддреНрддрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:


 Starting optimization with optimizer DiffEvoOpt{FitPopulation{Float64},RadiusLimitedSelector,BlackBoxOptim.AdaptiveDiffEvoRandBin{3},RandomBound{RangePerDimSearchSpace}} 0.00 secs, 0 evals, 0 steps Optimization stopped after 10001 steps and 0.12400007247924805 seconds Termination reason: Max number of steps (10000) reached Steps per second = 80653.17866385692 Function evals per second = 81628.98454510146 Improvements/step = 0.2087 Total function evaluations = 10122 Best candidate found: [1.0, 1.0] Fitness: 0.000000000 

рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрдардиреАрдп рдбреЗрдЯрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдиреНрдпреВрдирддрдо рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдЖрдпрд╛рдореА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЗ рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ


 function rosenbrock(x) return( sum( 100*( x[2:end] - x[1:end-1].^2 ).^2 + ( x[1:end-1] - 1 ).^2 ) ) end res = compare_optimizers(rosenbrock; SearchRange = (-5.0, 5.0), NumDimensions = 30, MaxTime = 3.0); 

рдЙрддреНрддрд▓


рдЙрддреНрддрд▓ рдЬреВрд▓рд┐рдпрд╛ рдЕрдиреБрд╢рд╛рд╕рд┐рдд рдЙрддреНрддрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдХреЗрдЬ (рдЕрдиреБрд╢рд╛рд╕рдирд╛рддреНрдордХ рдЙрддреНрддрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ?) рд╣реИред Convex.jl MathProgBase рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реИрдЦрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ, рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рд░реИрдЦрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ MCP, Gurobi, ECOS, SCS рдФрд░ GLPK рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рд╕реЙрд▓реНрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП DCP- рд╕рдВрдЧрдд рдЙрддреНрддрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЬрдЯрд┐рд▓ рдЪрд░ рдФрд░ рдЧреБрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рди рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


 using Pkg #      Pkg.add("Convex") Pkg.add("SCS") 

рд╕рд╛рдЗрдЯ рдкрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ: рдЯреЛрдореЛрдЧреНрд░рд╛рдлреА (рд╡рд┐рддрд░рдг рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рджрд┐рдП рдЧрдП рдЗрдВрдЯреАрдЧреНрд░рд▓ рджреНрд╡рд╛рд░рд╛ рдШрдирддреНрд╡ рд╡рд┐рддрд░рдг рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЯреЛрдореЛрдЧреНрд░рд╛рдлреА рдХреЗ рд╕рд╛рде рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдПрдиреНрдЯреНрд░рд╛рдкреА, рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди, рд░реИрдЦрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдЖрджрд┐ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


\ рд╢реБрд░реВ {рд╕рд░рдгреА} {ll} \ mbox {рд╕рдВрддреБрд╖реНрдЯ} рдФрд░ \ | x \ | _2 \ leq 100 \\ & e ^ {x_1} \ leq 5 \\ & x_2 \ geq 7 \\ & \ sqrt {x_3 x_4} \ geq x_2 \ end {рд╕рд░рдгреА}


 using Convex, SCS, LinearAlgebra x = Variable(4) p = satisfy(norm(x) <= 100, exp(x[1]) <= 5, x[2] >= 7, geomean(x[3], x[4]) >= x[2]) solve!(p, SCSSolver(verbose=0)) println(p.status) x.value 

рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ


 Optimal 4├Ч1 Array{Float64,2}: 0.0 8.554892320716046 15.329934133156783 15.329934133156783 

рдХреВрджрдирд╛



JuMP рдПрдХ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧрдгрд┐рддреАрдп рдЕрдиреБрдХреВрд▓рди рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдИ рдЦреБрд▓реЗ рдФрд░ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕реЙрд▓реНрд╡рд░ (рдЖрд░реНрдЯрд▓реАрдЬ рдирд┐рдЯрд░реЛ, рдмреИрд░рди, рдмреЛрдирдорд┐рди, рд╕реАрдмреАрдкреАрд╕реА, рдХреНрд▓реАрдк, рдХреМрдПрдиреЗ, рд╕реАрдкреАрдУрдПрд╕, рдИрд╕реАрдУрдПрд╕, рдлрд┐рдХреЛ рдПрдХреНрд╕рдкреЗреНрд░рд╕, рдЬреАрдПрд▓рдкреАрдХреЗ, рдЧреБрд░реЛрдмреА, рдЗрдкреНрдЯреЙрдк, рдореЛрд╕реНрдХреЛ, рдПрдирдПрд▓рдУрдЯреАрдкреА, рдПрд╕рд╕реАрдПрд╕) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


JuMP рдХреЛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдФрд░ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдпрд╣ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЛ рдЙрдиреНрдирдд рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рднрд╛рд╡реА "рд╣реЙрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реЗрдЦреАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдЦрд╛ рдФрд░ рд╕реАрдорд╛ рд╕реЙрд▓реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред JuMP рднреА рддреЗрдЬ рд╣реИ - рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП AMPL рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рдЧрддрд┐ рдкрд░ рдЧрдгрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред JuMP рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рдореБрд▓реЗрд╢рди рдФрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред


рдпрд╣ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


  • рдПрд▓рдкреА = рд░реИрдЦрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • QP = рджреНрд╡рд┐рдШрд╛рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • SOCP = рджреНрд╡рд┐рддреАрдп-рдХреНрд░рдо рд╢рдВрдХреНрд╡рд╛рдХрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдЙрддреНрддрд▓ рджреНрд╡рд┐рдШрд╛рдд рдмрд╛рдзрд╛рдУрдВ рдФрд░ / рдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕рд╣рд┐рдд)
  • MILP = рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рд░реИрдЦрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • рдПрдирдПрд▓рдкреА = рдиреЙрдирд▓рд╛рдЗрдирд┐рдпрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • MINLP = рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ nonlinear рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • рдПрд╕рдбреАрдкреА = рдЕрд░реНрдз-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
  • MISDP = рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдЕрд░реНрдзрд╡реГрддреНрддрд╛рдХрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрднреА рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:


Optim


рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рджреЛрдиреЛрдВ рдореБрдлреНрдд рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрдИ рд╕реЙрд▓реНрд╡рд░ рд╣реИрдВ, рдФрд░ рдХрдИ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдХреНрд╕рд░ рдлреЛрд░рдЯреНрд░рд╛рди рдпрд╛ рд╕реА рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд╕реАрдзреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╕реЙрд▓реНрд╡рд░ рдХреЗ рдХреБрдЫ рдлрд╛рдпрджреЗ рд╣реИрдВред


рдЬрдм рдЬреВрд▓рд┐рдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ (рдкреИрдХреЗрдЬ) рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдпрд╛ рддреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЙрдкрд▓рдмреНрдз рдХрдИ рд╕реЙрд▓реНрд╡рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ NLOpt рд╕реЗрдЯ рд╕реЗ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдзрд╛рд░рдгрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд┐рдд рд╣реИред рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЙрдЪрд┐рдд рд╕рдВрдХрд▓рдХ рд╣реИрдВ? рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ GPL рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?


рдпрд╣ рднреА рд╕рдЪ рд╣реИ рдХрд┐ рд╕реА рдпрд╛ рдлреЛрд░рдЯреНрд░рд╛рди рдореЗрдВ рд▓рд┐рдЦреЗ рдПрдХ рд╕реЙрд▓реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ: рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЗрд╖рдгред рдЪреВрдВрдХрд┐ рдСрдкреНрдЯрд┐рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╕реНрдЯрдо рдкреНрд░реЗрд╕реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЗрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдирд┐рдпреЛрдЬрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЙрд▓реНрд╡рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЪрд╛рд▓рд┐рдд рдЪрдпрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЧрдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░реЗрд╖рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред


рдЬреВрд▓рд┐рдпрд╛ рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдХрд╛ рдЕрд░реНрде рдпрд╣ рднреА рд╣реИ рдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдкрд╛рд╕ рдЬреВрд▓рд┐рдпрд╛рдбрд┐рдлрд╝ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднреЗрджрднрд╛рд╡ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред


рдиреЗрддреГрддреНрд╡


рдЖрдЗрдП рд╢реБрд░реВ:


 ]add Optim using Optim #   f(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 x0 = [0.0, 0.0] optimize(f, x0) 

рд╣рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ:


 Results of Optimization Algorithm * Algorithm: Nelder-Mead #   * Starting Point: [0.0,0.0] * Minimizer: [0.9999634355313174,0.9999315506115275] * Minimum: 3.525527e-09 * Iterations: 60 * Convergence: true * тИЪ(╬г(yс╡в-y╠Д)┬▓)/n < 1.0e-08: true * Reached Maximum Number of Iterations: false * Objective Calls: 118 

рдФрд░ рдореЗрд░реЗ рдиреЗрд▓реНрдбрд░ рдореАрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ!


рд╕реНрдкреЙрдЗрд▓рд░

рдореЗрд░рд╛ рдзреАрдореА рд╣реЛ рдЬрд╛рдПрдЧрд╛ :(


рджреВрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛
 using BenchmarkTools @benchmark optimize(f, x0) BenchmarkTools.Trial: memory estimate: 11.00 KiB allocs estimate: 419 -------------- minimum time: 39.078 ╬╝s (0.00% GC) median time: 43.420 ╬╝s (0.00% GC) mean time: 53.024 ╬╝s (15.02% GC) maximum time: 59.992 ms (99.83% GC) -------------- samples: 10000 evals/sample: 1 

рдЪреЗрдХ рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдиреНрдирд┐рдХрдЯрди (0, 0) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХрд╕реМрдЯреА рдорд╛рдирджрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╕рд┐рдореНрдкрд▓реЗрдХреНрд╕ рдХреЗ рдЖрдпрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдорд╛рдирджрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣рд╛рдВ рдЖрдк рдорд╛рдирджрдВрдб рдХреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╢реВрдиреНрдп рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рдкрддрд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛; рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЖрдк рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдиреНрдирд┐рдХрдЯрди рд╕реЗ рдЗрд╕рдХреЗ рдХреЛрдиреЗ рдХреА рджреВрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдХреЗ (рдФрд░ рдореЗрд░реА рддрд░рд╣ рдирд╣реАрдВ - рд╡реЗрдХреНрдЯрд░ рдХреА рдЖрдзреА рд▓рдВрдмрд╛рдИ, рдлреВ, рдХреНрдпрд╛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ ...), рддреЛ рд╡рд┐рдзрд┐ рд╕реЗрдЯрд┐рдВрдЧ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╣реЛрдЧреА, рдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рдХреЛрдиреЗ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдмреИрда рдЧрдпрд╛:


  for i = 1:N+1 Xx[:,i] = fit end for i = 1:N Xx[i,i] += 0.5*vecl(fit) + ╬╡ end 

рдареАрдХ рд╣реИ, рдореЗрд░рд╛ рд╕рд┐рдВрдкреНрд▓реЗрдХреНрд╕ рдЧреЛрд░рд╛рдЬрд╝рджреЛ рдзреАрдорд╛ рд╣реИ:


 ofNelderMid(fit = [0, 0.]) step= 118 7.7234e-5 f = 2.797-18 x = [1.0, 1.0] @benchmark ofNelderMid(fit = [0., 0.]) BenchmarkTools.Trial: memory estimate: 394.03 KiB allocs estimate: 6632 -------------- minimum time: 717.221 ╬╝s (0.00% GC) median time: 769.325 ╬╝s (0.00% GC) mean time: 854.644 ╬╝s (5.04% GC) maximum time: 50.429 ms (98.01% GC) -------------- samples: 5826 evals/sample: 1 

рдЕрдм рдЕрдзреНрдпрдпрди рдкреИрдХреЗрдЬ рдкрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдХрд╛рд░рдг


рдЖрдк рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ:


 optimize(f, x0, LBFGS()) Results of Optimization Algorithm * Algorithm: L-BFGS * Starting Point: [0.0,0.0] * Minimizer: [0.9999999926662504,0.9999999853325008] * Minimum: 5.378388e-17 * Iterations: 24 * Convergence: true * |x - x'| тЙд 0.0e+00: false |x - x'| = 4.54e-11 * |f(x) - f(x')| тЙд 0.0e+00 |f(x)|: false |f(x) - f(x')| = 5.30e-03 |f(x)| * |g(x)| тЙд 1.0e-08: true |g(x)| = 9.88e-14 * Stopped by an increasing objective: false * Reached Maximum Number of Iterations: false * Objective Calls: 67 * Gradient Calls: 67 

рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


 ?LBFGS() 

рдЖрдк рдпрд╛рдХреВрдмрд┐рдпрди рдФрд░ рд╣реЗрд╕рд┐рдпрди рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 function g!(G, x) G[1] = -2.0 * (1.0 - x[1]) - 400.0 * (x[2] - x[1]^2) * x[1] G[2] = 200.0 * (x[2] - x[1]^2) end function h!(H, x) H[1, 1] = 2.0 - 400.0 * x[2] + 1200.0 * x[1]^2 H[1, 2] = -400.0 * x[1] H[2, 1] = -400.0 * x[1] H[2, 2] = 200.0 end optimize(f, g!, h!, x0) Results of Optimization Algorithm * Algorithm: Newtons Method * Starting Point: [0.0,0.0] * Minimizer: [0.9999999999999994,0.9999999999999989] * Minimum: 3.081488e-31 * Iterations: 14 * Convergence: true * |x - x'| тЙд 0.0e+00: false |x - x'| = 3.06e-09 * |f(x) - f(x')| тЙд 0.0e+00 |f(x)|: false |f(x) - f(x')| = 3.03e+13 |f(x)| * |g(x)| тЙд 1.0e-08: true |g(x)| = 1.11e-15 * Stopped by an increasing objective: false * Reached Maximum Number of Iterations: false * Objective Calls: 44 * Gradient Calls: 44 * Hessian Calls: 14 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдиреНрдпреВрдЯрди рд╡рд┐рдзрд┐ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдврд╛рд▓ рд╡рдВрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 lower = [1.25, -2.1] upper = [Inf, Inf] initial_x = [2.0, 2.0] inner_optimizer = GradientDescent() results = optimize(f, g!, lower, upper, initial_x, Fminbox(inner_optimizer)) Results of Optimization Algorithm * Algorithm: Fminbox with Gradient Descent * Starting Point: [2.0,2.0] * Minimizer: [1.2500000000000002,1.5625000000000004] * Minimum: 6.250000e-02 * Iterations: 8 * Convergence: true * |x - x'| тЙд 0.0e+00: true |x - x'| = 0.00e+00 * |f(x) - f(x')| тЙд 0.0e+00 |f(x)|: true |f(x) - f(x')| = 0.00e+00 |f(x)| * |g(x)| тЙд 1.0e-08: false |g(x)| = 5.00e-01 * Stopped by an increasing objective: false * Reached Maximum Number of Iterations: false * Objective Calls: 84382 * Gradient Calls: 84382 

рдЦреИрд░, рдпрд╛ рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рд╕рдореАрдХрд░рдг рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ


 f_univariate(x) = 2x^2+3x+1 optimize(f_univariate, -2.0, 1.0) Results of Optimization Algorithm * Algorithm: Brents Method * Search Interval: [-2.000000, 1.000000] * Minimizer: -7.500000e-01 * Minimum: -1.250000e-01 * Iterations: 7 * Convergence: max(|x - x_upper|, |x - x_lower|) <= 2*(1.5e-08*|x|+2.2e-16): true * Objective Function Calls: 8 

рдФрд░ рдЙрд╕рдиреЗ рддреБрдореНрд╣реЗрдВ рдмреНрд░реЗрдВрдЯ рдореЗрдердб рдЪреБрдирд╛ред
рдпрд╛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдЧреБрдгрд╛рдВрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ


F(p1,p2,x)=p1 cos(p2x)+p2 sin(p1x)


p1=1,p2=0.2


 F(p, x) = p[1]*cos(p[2]*x) + p[2]*sin(p[1]*x) model(p) = sum( [ (F(p, xdata[i]) - ydata[i])^2 for i = 1:length(xdata)] ) xdata = [-2,-1.64,-1.33,-0.7,0,0.45,1.2,1.64,2.32,2.9] ydata = [0.699369,0.700462,0.695354,1.03905,1.97389,2.41143,1.91091,0.919576,-0.730975,-1.42001] res2 = optimize(model, [1.0, 0.2]) Results of Optimization Algorithm * Algorithm: Nelder-Mead * Starting Point: [1.0,0.2] * Minimizer: [1.8818299027162517,0.7002244825046421] * Minimum: 5.381270e-02 * Iterations: 34 * Convergence: true * тИЪ(╬г(yс╡в-y╠Д)┬▓)/n < 1.0e-08: true * Reached Maximum Number of Iterations: false * Objective Calls: 71 

 P = Optim.minimizer(res2) Y = [ F(P, x) for x in xdata] using Plots plotly() plot(xdata, ydata) plot!(xdata, Y) 


рдмреЛрдирд╕ред рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ


рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЦрд╛рдмрд░реЛрд╡ рд▓реЗрдЦ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рдиреАрдп рдиреНрдпреВрдирддрдо рдХреЛ рд╕реНрд╡рдпрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 """ https://habr.com/ru/post/349660/ :param n:   :param a:    ,   ,    /      :param c:    :param p:       :param b:    :return:  ,       ,          """ function feldbaum(x; n=5, a=[3 2; 4 3; 2 1; 4 5; .5 .5], c=[-1 2; 2 1; -3 2; -2 -2; 1.5 -2], p=[9 6; 1 1; 1.5 1.4; 1.2 1.3; 0.5 0.5], b=[0 1 3.2 2 4.6]) l = zeros(n) for i = 1:n res = 0 for j = 1:size(x,1) res += a[i,j] * abs(x[j] - c[i,j]) ^ p[i,j] end res += b[i] l[i] = res end minimum(l) end 



рдФрд░ рдЖрдк рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ


 n=10 m = 2 a = rand(0:0.1:6, n, m) c = rand(-2:0.1:2, n, m) p = rand(0:0.1:2, n, m) b = rand(0:0.1:8, n, m) function feldbaum(x) l = zeros(n) for i = 1:n res = 0 for j = 1:m res += a[i,j] * abs(x[j] - c[i,j]) ^ p[i,j] end res += b[i] l[i] = res end minimum(l) end 


рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢реБрд░реБрдЖрддреА рддрд╕реНрд╡реАрд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рд░рд╛рд╣рдд рдХреЗ рд╕рд╛рде рдХрдгреЛрдВ рдХрд╛ рдПрдХ рдЭреБрдВрдб рдбрд░рд╛рдирд╛ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рдЖрдзреБрдирд┐рдХ рдЧрдгрд┐рддреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдЬреЛ рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд╛рд░ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрд╡рд╕рд░ рд╣реИред


рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

Source: https://habr.com/ru/post/hi440618/


All Articles