ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ГСнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π—Π°Ρ‚Π΅ΠΌ Π½ΠΈΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти количСство Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π°». ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², Ρ‚. Π΅. ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π³ΠΎΡ€ΠΎΠ΄Π° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π°». ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ РСспублики ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½ ΠšΠ°Ρ€Π°Π³Π°Π½Π΄ΠΈΠ½ΡΠΊΠΈΠΉ ГосударствСнный ВСхничСский УнивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° БАПР ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ГСнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ РСспублики ΠšΠ°Π·Π°Ρ…ΡΡ‚Π°Π½ ΠšΠ°Ρ€Π°Π³Π°Π½Π΄ΠΈΠ½ΡΠΊΠΈΠΉ ГосударствСнный ВСхничСский УнивСрситСт ΠšΠ°Ρ„Π΅Π΄Ρ€Π° БАПР ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅: «ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ тСория систСм»

Π’Π΅ΠΌΠ°: «Π“СнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ»

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Ρ‹Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ систСмного рассмотрСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π·Π°Π΄Π°Ρ‡ ΠΈ Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡŽ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ). ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… понятий аксиоматики, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ исслСдования проСктирования слоТных систСм. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдств, прСдставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠ² ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ систСму. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠ² ΠΊΠ°ΠΊ систСму Π»ΠΎΠ³ΠΈΠΊΠΎ-матСматичСского Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π° ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΠΈΠ½Ρ‚Π΅Π·Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° иСрархичСского строСния систСм, ΠΈΡ… Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ повСдСния, управлСния ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… характСристик Π΅Ρ‘ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ эффСктивности ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для этого гСнСтичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π—Π°Π΄Π°Ρ‡Π°:

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ гСнСтичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΡΠΎΠΎΡ‚вСтствии с Π²Ρ‹Π΄Π°Π½Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду программирования.

Π’ ΠΈΠ½Ρ‚СрфСйсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

ΠΎΠ±ΡŠΡ‘ΠΌ популяции;

число ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ;

коэффициСнт скрСщивания;

коэффициСнт ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ;

для Π΄ΠΈΡ„Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ кроссовСра коэффициСнты k, c;

для Π·Π°Π΄Π°Ρ‡ΠΈ коммивояТёра Π²Π²ΠΎΠ΄ [4. .40] числа Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈ ΠΈΡ… Ρ€Π°ΡΡΡ‚Π°Π½ΠΎΠ²ΠΊΡƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Π°Π²Ρ‚оматичСски;

для биологичСской Π·Π°Π΄Π°Ρ‡ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° Π½Π°Π·Π²Π°Π½ΠΈΠΉ характСристик [10.15], ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ [4. .40], значимости ΠΈ Π²Π΅ΡΠ° [0.1] ΠΊΠ°ΠΆΠ΄ΠΎΠΉ характСристики.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ:

Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ поколСния ΠΈ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΡΡ‚ΠΎΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ;

Π»ΡƒΡ‡ΡˆΠ΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π²ΡΠ΅ поколСния ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΅ΠΉ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ особи;

для биологичСской Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости значСния Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° поколСния;

для Π·Π°Π΄Π°Ρ‡ΠΈ коммивояТёра Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΈ графичСски ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΡƒΡ‡Ρ‰ΠΈΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ характСристики гСнСтичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΡΠΎΠΎΡ‚вСтствии с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, свСдСния ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅, ΠΊΡ€Π°Ρ‚ΠΊΡƒΡŽ справку (руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ задания:

Π’ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ — коммивояТёр

Π’Ρ‹Π±ΠΎΡ€ ΠΏΠ°Ρ€Ρ‹ — панмиксия

ΠšΡ€ΠΎΡΡΠΎΠ²Π΅Ρ€ — Π΄Π²ΡƒΡ…Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ

ΠœΡƒΡ‚Π°Ρ†ΠΈΡ — пСрСстановка

ΠžΡ‚Π±ΠΎΡ€ — элитный

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ останова — количСство ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ — ΠΊΠ°Ρ€Ρ‚Π°.

Анализ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² модСлирования Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставляСтся Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

β„–

экспСримСнта

Кол-Π²ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²

Число поколСний

ΠšΠΎΡΡ„.

скрСщивания

ΠšΠΎΡΡ„.

ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ

ЀитнСс;

функция

(min)

0,5

0,001

0,5

0,001

0,5

0,001

0,5

0,001

0,5

0,001

0,5

0,001

0,001

1,5

0,001

0,001

0,5

0,01

0,5

0,01

0,01

0,01

0,5

0,1

0,1

Π’Ρ‹Π²ΠΎΠ΄:

Анализируя ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ модСлирования ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ 200, число ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ, Π½Π΅Ρ‚ нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ большС 500 Ρ€Π°Π· (ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’Π°ΠΊΠΆΠ΅ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ влияСт коэффициСнт скрСщивания: ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт скрСщивания — 1, коэффициСнт ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ гСнСтичСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ коэффициСнт ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ — 0,1. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фитнСс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ самоС минимальноС расстояниС Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Ρ…Π°Ρ‚ΡŒ 20 Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π·Π° ΡΡ‡Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 15.

Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΡ‹ΡˆΡŒΡŽ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ «ΠšΠΎΠΌΠΌΠΈΠ²ΠΎΡΠΆΡ‘Ρ€. exe». Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ графичСского Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «map. bmp» Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ (мСстС).

На ΡΠΊΡ€Π°Π½Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° появится Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π ΠΈΡ. 1

Рис. № 1 Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π³ΠΎΡ€ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΌΡ‹ΡˆΡŒΡŽ Π² Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС, Ρ‚Π°ΠΊ ΠΈ Π°Π²Ρ‚оматичСски. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π° автоматичСски Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ «Π—Π°Π΄Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π° автоматичСски» ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. № 2.

Рис. № 2

Π—Π°Ρ‚Π΅ΠΌ Π½ΠΈΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти количСство Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π°». ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², Ρ‚. Π΅. ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π³ΠΎΡ€ΠΎΠ΄Π° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π³ΠΎΡ€ΠΎΠ΄Π°» .

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² (4−40), для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска минимального ΠΏΡƒΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΠΈΡΠΊ». ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ выполнСния модСлирования прСдставлСн ProgressBar-ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится ΠΏΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ рис. № 3.

Рис № 3. ProgressBar

По ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ модСлирования, Π° ΡΡ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ProgressBar ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ заполнится синим Ρ†Π²Π΅Ρ‚ΠΎΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ отобразится ΠΏΠΎΠ΄ ProgressBar-ΠΎΠΌ рис. № 4.

Рис. № 4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ модСлирования Π’Π°ΠΊΠΆΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прорисован самый ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ рис. № 5.

Рис. № 5 ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚

Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСдусмотрСно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ основных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ модСлирования рис. № 6.

Рис. № 6. Π˜Π·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class (TForm)

Image1: TImage;

Button1: TButton;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Label2: TLabel;

Edit3: TEdit;

Label3: TLabel;

Edit4: TEdit;

Label4: TLabel;

Edit5: TEdit;

Label5: TLabel;

procedure Image1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Image1Click (Sender: TObject);

procedure FirstGeneration (Sender: TObject);

procedure CreaChildren (Sender: TObject);

procedure Mutation (Sender: TObject);

procedure TrackRead (Sender: TObject);

procedure DrawMarsh (Sender: TObject);

function CrossOver (p, m: integer): string;

procedure Mixer (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

pX, pY, elite: array of integer; // ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², элитныС

road: array of integer;

parents: array of string; // ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π΄Π΅Ρ‚Π΅ΠΉ; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

child: array of string;

result: array of string;

gl: integer; // количСство элитных

nCity, nMarsh: integer; // количСство Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²

kMut, kCross: real; // коэффициСнт ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ, скрСщивания

implementation

{$R *. dfm}

procedure TForm1. Mixer (Sender: TObject);

var

i, j, n, k: integer;

s: string;

label lbl4;

BEGIN

n: =round ((nMarsh) *kCross) — 1;

for i: =0 to nMarsh-1 do

begin

setLength (child, n+i+2);

child [n+i+1]: =parents [i] ;

end;

TrackRead (sender);

setlength (elite, 1);

s: ='_';

{1}for i: =0 to nMarsh-1 do

begin

lbl4:

elite [0]: =random (n+nMarsh);

if pos ('_'+inttostr (elite [0]) +'_', s) <>0 then goto lbl4;

for j: =0 to n+nMarsh-1 do

begin

if pos ('_'+inttostr (j) +'_', s) =0 then

begin

if road [elite [0]] >road [j] then

begin

elite [0]: =j;

end;

end;

end;

s: =s+inttostr (elite [0]) +'_';

parents [i]: =child [elite [0]] ;

{1}end;

END;

function TForm1. CrossOver (p, m: integer): string;

var

gen: char;

i, j: integer; // счСтчика

t1,t2: integer; // Ρ‚ΠΎΡ‡ΠΊΠΈ кроссовСра

nC, kC: integer; // Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ†ΠΈΠΊΠ»Π°

papa, mama: string;

label lbl3;

BEGIN

papa: =parents [p] ;

mama: =parents [m] ;

randomize;

t1: =random (nCity-1) +1; // Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ 1 Ρ‚ΠΎΡ‡ΠΊΡƒ

lbl3:

t2: =random (nCity-1) +1; // Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ 2 Ρ‚ΠΎΡ‡ΠΊΡƒ

if t2=t1 then goto lbl3; // 1 Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π΅ 2 Ρ‚ΠΎΡ‡ΠΊΠ°

if t1

begin

nC: =t1;

kC: =t2;

end

else

begin

nC: =t2;

kC: =t1;

end;

for i: =nC to kC do // Ρ†ΠΈΠΊΠ» скрСщивания

begin

if pos (mama [i], papa) =0 then // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π³Π΅Π½ΠΎΠ²

begin

delete (papa, i, 1);

insert (mama [i], papa, i); // добавляСм матСринскиС Π³Π΅Π½Ρ‹

end

else

begin // измСняСм ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ²ΡˆΠΈΠΉΡΡ Π³Π΅Π½

gen: =papa [i] ;

papa [i]: =papa [i+1] ;

papa [i+1]: =gen;

end;

end;

crossover: =papa; // Π²ΠΎΠ·Π²Π°Ρ€Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°

END;

procedure TForm1. TrackRead (Sender: TObject);

var

i, j: integer;

p1,p2: integer;

p: string;

BEGIN

{1}for i: =0 to length (child) — 1 do // большой Ρ†ΠΈΠΊΠ» ΠΏΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°ΠΌ

begin

setlength (road, i+1);

p: ='';

p: =child [i] ;

{2}for j: =1 to nCity-1 do // Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎ Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ²

begin

if j<>nCity-1 then // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π³ΠΎΡ€ΠΎΠ΄

begin

p1: =StrToInt (p [j]); //

p2: =StrToInt (p [j+1]); // сосСдний

end

else

begin

p1: =StrToInt (p [j+1]); // послСдний

p2: =StrToInt (p [1]); // ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ

end; // расчСт расстояния

road [i]: =road [i] +round (sqrt (sqr (pX [p1] -pX [p2]) +sqr (pY [p1] -pY [p2])));

{2}end;

{1}end;

END;

procedure TForm1. DrawMarsh (Sender: TObject);

var

i, j: integer;

p1,p2: integer;

p: string;

BEGIN

p: =parents ;

Image1. CleanupInstance;

with Image1. Canvas do

begin

for j: =1 to nCity do // Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

begin

if j=nCity then

begin

p1: =StrToInt (p [j]);

p2: =StrToInt (p [1]);

end

else

begin

p1: =StrToInt (p [j]);

p2: =StrToInt (p [j+1]);

end;

MoveTo (pX [p1], pY [p1]);

LineTo (pX [p2], pY [p2]);

end;

end;

END;

procedure TForm1. Mutation (Sender: TObject);

var

i, ran: integer; // счСтчик, случайноС число

gen: char; // ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π³Π΅Π½

mutant: string;

BEGIN

mutant: ='';

for i: =0 to round ((nMarsh) *kCross) — 1 do // Ρ†ΠΈΠΊΠ» ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ

begin

randomize;

if kMut

begin

mutant: =child [i]; // ΠΌΡƒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ особь

ran: =random (nCity-1);

gen: =mutant [ran]; //

mutant [ran]: =mutant [ran+1]; // ΠΌΡƒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ

mutant [ran+1]: =gen; //

child [i]: =mutant;

end;

end;

END;

procedure TForm1. FirstGeneration (Sender: TObject);

var

i, j, ram: integer; // счСтчики, Ρ€Π°Π½Π΄ΠΎΠΌΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

s: string; // строка ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

label lbl1; // ΠΌΠ΅Ρ‚ΠΊΠ°

BEGIN

randomize;

for i: =0 to nMarsh-1 do // Ρ†ΠΈΠΊΠ» формирования ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ поколСния

{1}begin

s: ='';

setlength (parents, i+1); // устанавливаСм Π΄Π»ΠΈΠ½Ρƒ массива Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ

for j: =0 to nCity-1 do // Ρ†ΠΈΠΊΠ» формирования строки ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

{2}begin

setlength (s, j+1); // устанавливаСм Π΄Π»ΠΈΠ½Ρƒ строки ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

lbl1:

ram: =random (nCity); // случайный Π²Ρ‹Π±ΠΎΡ€ Π½ΠΎΠΌΠ΅Ρ€Π° Π³ΠΎΡ€ΠΎΠ΄Π°

if pos (IntToStr (ram), s) =0 then // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ Π½ΠΎΠΌΠ΅Ρ€Π° Π³ΠΎΡ€ΠΎΠ΄Π°

begin

insert (IntToStr (ram), s,1); // Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π³ΠΎΡ€ΠΎΠ΄Π° Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°

end

else goto lbl1; // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ

{2}end;

parents [i]: =s; // заполняСм массив Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ (ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅)

{1}end;

END;

procedure TForm1. CreaChildren (Sender: TObject);

var

i: integer; // счСтчики

p, m: integer; // Π½ΠΎΠΌΠ΅Ρ€Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ

label lbl2;

BEGIN

randomize;

for i: =0 to round ((nMarsh) *kCross) — 1 do // Ρ†ΠΈΠΊΠ» создания ΠΏΠ°Ρ€

begin

setlength (child, i+1);

p: = random (nMarsh); // Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ°ΠΏΡ‹

lbl2:

m: = random (nMarsh); // Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ ΠΌΠ°ΠΌΡ‹

if m=p then goto lbl2; // ΠΏΠ°ΠΏΠ° Π½Π΅ ΠΌΠ°ΠΌΠ°

child [i]: =crossover (p, m); // создаСм ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ²

end;

END;

procedure TForm1. Image1Click (Sender: TObject);

begin

inc (nCity); // считаСм Π³ΠΎΡ€ΠΎΠ΄Π°

end;

procedure TForm1. Image1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

// // /

with Image1. Canvas do

begin

Brush. Color: =clRed;

Brush. Style: =bsSolid;

Rectangle (x-5,y-5,x+5,y+5);

Brush. Color: =clWhite;

TextOut (x, y, inttostr (nCity));

end;

// // /

SetLength (pX, nCity+1);

pX [nCity]: =x;

SetLength (py, nCity+1);

pY [nCity]: =y;

// // /

end;

procedure TForm1. Button1Click (Sender: TObject);

var

i, nPokol: integer;

begin

nMarsh: =StrToInt (Edit3. Text);

kMut: =StrToFloat (Edit2. Text);

kCross: =StrToFloat (Edit4. Text);

nPokol: =StrToInt (Edit5. Text);

FirstGeneration (sender);

for i: =1 to nPokol do

begin

CreaChildren (sender);

Mutation (sender);

Mixer (sender);

DrawMarsh (sender);

end;

end;

end.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ