рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрджреНрдзрддрд┐ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреНрдпрд╛ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЗрдЦ "рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдкрд░рд┐рдЪрдп" рдкрдврд╝рдХрд░ ред рдПрдирд▓рд┐рдВрдЧ рд╕рд┐рдореБрд▓реЗрд╢рди тАЭ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдореВрд▓ рд▓реЗрдЦ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛрдИ рдорд╛рддреНрд░рд╛рддреНрдордХ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рддреБрд▓рдирд╛ рдХреЗ рдорд╛рдирджрдВрдб рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред



рддреЛ, рдЖрдк "рдирдХрд▓реА рдПрдирд╛рд▓рд┐рдВрдЧ" рдХреЗ рд╕рдорд╛рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдХрд┐рди рдорд╛рдирджрдВрдбреЛрдВ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рддреБрд▓рдирд╛:
тАв рджрдХреНрд╖рддрд╛
тАв рдХрд╛рдо рдХреА рдЧрддрд┐
тАв рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ
рдФрд░ рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛
тАв рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рдпрд╣ рдХрд┐ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕реНрдерд┐рд░ рд╣реИ)ред

рдореВрд▓реНрдпрд╛рдВрдХрди рдорд╛рдирджрдВрдб

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

рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░: рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдЯрд▓реИрдм рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓ рд▓реЗрдЦ рдореЗрдВ, рд▓реЗрдХрд┐рди рдУрдХреНрдЯреЗрд╡ рдореЗрдВ [http://www.gnu.org/software/octave/]ред рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВ - рдкрд╣рд▓рд╛, рдореЗрд░реЗ рдкрд╛рд╕, рдФрд░ рджреВрд╕рд░рд╛, рдЗрд╕рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореИрдЯрд▓реИрдм рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИ ...

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

рддреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдорд╛рд░реЛрд╣:
function [timeUsed, distTotal] = Analyze( ) %         load points_data.dat cities %    timeStart = cputime(); %    result = SimulatedAnnealing(cities, 10, 0.00001); %     timeUsed = cputime - timeStart; %     distTotal = PathLengthMat(result); %    plot(result(:,1), result(:,2), '-*'); drawnow (); end 


рдореИрдВрдиреЗ рд╢рд╣рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  cities = rand(100, 2)*10; save points_data.dat cities; 


рд╣рд╛рдВ, рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдореВрд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рдХреИрд▓рдХреНрдпреБрд▓реЗрдЯрд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рджреЛ рдХрд╛рд░рдг рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдиреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдХреЛрдб рдореИрдирд╣рдЯреНрдЯрди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рджреЛ рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:
 function [dist] = distEuclid(A, B) dist = (A - B).^2; dist = sum(dist); dist = sqrt(dist); end 


рдЦреИрд░, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рдордп-рд╕рдордп рдкрд░ рдХрд┐рддрдирд╛ рд╕реНрдерд┐рд░ рд╣реИ, рд╣рдо рдпрд╣ рд╕рдм рдХрдИ рдмрд╛рд░ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдЪрд▓рд╛рдПрдВрдЧреЗ, рдкрд░рд┐рдгрд╛рдо рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рдФрд╕рдд рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗ:
 function [] = Statistics testNum = 1000; %      timeUsed = zeros(testNum,1); distTotal = zeros(testNum,1); for n=1:testNum [timeUsed(n), distTotal(n)] = Analyze; end %      time = [mean(timeUsed), std(timeUsed)] dist = [mean(distTotal), std(distTotal)] end 


рдкрд╣рд▓реА рдирд┐рд░рд╛рд╢рд╛ рдХрд┐рддрдиреА рджреЗрд░ рд▓рдЧрддреА рд╣реИ! рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛрд░ i5-3450 3.1GHz 8Gb рд░реИрдо рдкрд░, рдПрдХ рдкрд╛рд╕ рдФрд╕рддрди 578 рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП 1000 рдЪрдХреНрд░реЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдФрд╕рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ ... 6.69 рджрд┐рдиред рдореБрдЭреЗ 100 рдЪрдХреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд▓рдЧрднрдЧ 16 рдШрдВрдЯреЗ 4 рдорд┐рдирдЯ (рдпрд╛рдиреА рд╕реБрдмрд╣ рдХреЗ рд╕рдордп) рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдо рдЖрдпрд╛:
рдФрд╕рдд рдЧрдгрдирд╛ рд╕рдордп 578.1926 (рдирдореВрдирд╛ 3.056 рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди), рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрде рдХреА рдФрд╕рдд рд▓рдВрдмрд╛рдИ 91.0844 (рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди 2.49)ред рдпрд╣реА рд╣реИ, рд╕рдм рдХреБрдЫ рд╕реНрдерд┐рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░, рдЗрд╕рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдХрдм рддрдХред рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд▓рдЪрд╛ рдЧрдпрд╛ред

рдЕрдиреБрдХреВрд▓рди

рддреНрд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рджреВрд░реА рдХрд╛ рдЕрдиреБрдорд╛рди рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕рд▓реЗрдм рдХреА рддрд░рд╣ рдСрдХреНрдЯреЗрд╡ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ - рд╣рдо рдЗрд╕реЗ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА: рдП - рдЦрдВрдбреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд, рдмреА - рдХреНрд░рдорд╢рдГ, рдЙрдирдХреЗ рдЫреЛрд░:
 function [dist] = distEuclid(A, B) dist = (A - B).^2; dist = sum(dist, 2); dist = sqrt(dist); dist = sum(dist); end 


рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдПрдХ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЦрдВрдб рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд░рдгреА рдХреЛ рдЪрдХреНрд░реАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛:
 function [length] = PathLengthMat(cities) citiesShifted = circshift(cities, 1); length = distEuclid(cities, citiesShifted); end 


рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди SimulatedAnnealing рдФрд░ GenerateStateCandidate рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдкреВрд░реНрдг рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЕрдВрдд рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рджреЗрдЦреЛ ... рдФрд╕рдд рдЧрдгрдирд╛ рдХрд╛ рд╕рдордп 70.554 рд╣реИ (рдирдореВрдиреЗ рдореЗрдВ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди 0.096 рд╣реИ), рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрде рдХреА рдФрд╕рдд рд▓рдВрдмрд╛рдИ 90.403 (рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди 2.204) рд╣реИред
рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдЖрда рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ! рдЖрдЧреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдРрд╕реА рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИред рд╕рдЪ рд╣реИ, рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд (рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдореЗрдВ рдЕрдм рджреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдФрд░ рдирдП рдЙрдореНрдореАрджрд╡рд╛рд░) рдореЗрдВ рдЕрдВрдХ рдХреЗ рджреЛ рд╕рд░рдгрд┐рдпрд╛рдВ рд╣реИрдВ, рд╡рд╣ рд╣реИ ... рдПрди * 4ред рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдЪреВрдВрдХрд┐ рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рддрд╛рдкрдорд╛рди рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред рдЙрддреНрдкрдиреНрди рдмрд┐рдВрджреБ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ "рдКрд░реНрдЬрд╛" 500 рд╕реЗ 700 рддрдХ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ 90 рдкреНрд▓рд╕ / рдорд╛рдЗрдирд╕ 5. рдЙрддрд╛рд░ рдЪрдврд╝рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЧрдпрд╛ рддрд╛рдкрдорд╛рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ 100,000 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реАрдорд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рд╡реИрд╕реЗ, рдпрд╣ рдХреЛрдб рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рд╣реИред рд▓реВрдкрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рджрд╕ рдорд┐рд▓рд┐рдпрди рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЦреБрдж рдХреЛ рдХреНрдпреЛрдВ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП?)ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ Tmax = 300 рдФрд░ Tmin = 0.001 рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп 21 рд╕реЗрдХрдВрдб рддрдХ рдХрдо рд╣реЛ рдЧрдпрд╛ рдерд╛ред

рдЦреЛрдЬ рдХреЗ рд╡рд┐рдХрд▓реНрдк

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


рд╕рдВрднрд╡рддрдГ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд░ рдХреЗ рд░реИрдЦрд┐рдХрддрд╛ рдХрд╛ рдорддрд▓рдм рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рднрд╛рдЬрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрддрд░ рджрд┐рдЦрддреЗ рд╣реИрдВред
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рддрд╛рдкрдорд╛рди рдлрд╝рдВрдХреНрд╢рди T = Tmax * (A ^ k) рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ A рдХреЛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ 0.7 - 0.999 рдХреЗ рднреАрддрд░ред (рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд▓рд╛рд▓рдЪреА рдирд╣реАрдВ рд╣реИ - рддрд┐рд╡рд╛рд░реА = рдП * рдЯреАрдЖрдИ -1)ред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде "рдПрдиреАрд▓рд┐рдВрдЧ" рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ "рд╢рдорди" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдиреНрдпреВрдирддрдо рддрд╛рдкрдорд╛рди рддрдХ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЛрдорд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдо рддреЗрдЬреА рд╕реЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рддреЛ - рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рддрд╛рд▓рд┐рдХрд╛:
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдорд▓рдВрдмрд╛рдИ (рдлреИрд▓рд╛ рд╣реБрдЖ)рд╕рдордп (рдмрд┐рдЦрд░рд╛рд╡)рд╕реНрдореГрддрд┐
рд▓реЗрдЦ рд╕реЗ91.0844 (2.4900)578.1926 (3.0560)рдПрди * рек
рдбреЙрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ (10-0.00001)90.4037 (2.2038)70.554593 (0.096166)рдПрди * рек
рдбреЙрдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕ (300-0.001)90.7956 (2.1967)20.94024 (0.16235)рдПрди * рек
рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореИрдирд╣рдЯреНрдЯрди (10-0.00001)90.0506 (3.2397)70.96909 (0.7807)рдПрди * рек
рдореИрдЯреНрд░рд┐рдХреНрд╕ "рд╢рдорди" (300-0.001)92.0963 (2.3129)22.59591 (0.39581)рдПрди * рек


рдирд┐рд╖реНрдХрд░реНрд╖ред

  1. рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рди рд╣реЛред
  2. рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрддреЗ рд╕рдордп рдЯреВрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ - рддреЛ рдЖрдк рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  3. рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рдЖрдк рдереЛрдбрд╝рд╛ рдФрд░ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
  4. рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдЧрддрд┐ рджреНрд╡рд╛рд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реИ - рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд▓рдЧрднрдЧ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рд╣реЛрдЧрд╛ред
  5. рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЬрдбрд╝ рдХреЛ рдЙрдард╛рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛ рд▓рдЧрднрдЧ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд▓реЗрдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдЖрдк рд▓рдЧрднрдЧ рдХреЛрдИ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЧрдгрд┐рдд рдХреЛ рд╡рд┐рдХреГрдд рдФрд░ рд▓рд┐рдЦ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред
  6. рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХрдИ рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ рдмрд╣реБрдд рдХрд░реАрдмреА рдкрд░рд┐рдгрд╛рдо рджреЗрддреА рд╣реИрдВ, рдпрджрд┐ рдЧреНрд░рд╛рдлреЛрдореИрдирд┐рдХ рдирд╣реАрдВ - рдЬреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдпрд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рд╡рд╛рджрд╛ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ - рдЖрдк рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles