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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

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

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ комплСкс для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’Π•ΠœΠ: «ΠŸΠš Π΄Π»Ρ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ»

Π’Π’Π•Π”Π•ΠΠ˜Π•

БимплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½ Π²Ρ‹ΠΏΡƒΠΊΠ»ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊΠ° Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС. ΠœΠ΅Ρ‚ΠΎΠ΄ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ совСтским ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΌ ΠšΠ°Π½Ρ‚ΠΎΡ€ΠΎΠ²ΠΈΡ‡Π΅ΠΌ Π›. Π’. Π² 1937 Π³ΠΎΠ΄Ρƒ.

НазначСниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠΎΠ³Π΄Π° Π² Π·Π°Π΄Π°Ρ‡Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ N-нСизвСстных, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, задаваСмая систСмой ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… условий, прСдставляСтся Π²Ρ‹ΠΏΡƒΠΊΠ»Ρ‹ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊΠΎΠΌ Π² n-ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ достигаСтся Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ€ΡˆΠΈΠ½Π°Ρ…. Π Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ графичСски, ΠΊΠΎΠ³Π΄Π° количСство ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ 3 вСсьма Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. БущСствуСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

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

Основная Ρ†Π΅Π»ΡŒ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠœΠ°Ρ‚СматичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ» — ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ) Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

Для выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ я Π²Ρ‹Π±Ρ€Π°Π»Π° язык Object Pascal ΠΈ ΡΡ€Π΅Π΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Delphi. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ построСниС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Delphi позволяСт быстро ΠΈ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ интСрфСйс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΈΠ΅ трСбования Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния ΠΊ Ρ€Π΅ΡΡƒΡ€ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ Π·Π° ΡΡ‡Π΅Ρ‚ встраивания Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΡΡ€Π΅Π΄Ρƒ Delphi.

1 ΠΠΠΠ›Π˜Π— ΠŸΠ Π•Π”ΠœΠ•Π’ΠΠžΠ™ ΠžΠ‘Π›ΠΠ‘Π’Π˜ «ΠŸΠš Π”Π›Π― Π Π•Π¨Π•ΠΠ˜Π― ЗАДАЧ Π›Π˜ΠΠ•Π™ΠΠžΠ“Πž ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘Π˜ΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Πœ ΠœΠ•Π’ΠžΠ”ΠžΠœ»

Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прСдставляСт собой Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. К Ρ‡ΠΈΡΠ»Ρƒ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΌΠΎΠΆΠ½ΠΎ отнСсти Π·Π°Π΄Π°Ρ‡ΠΈ:

— Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования ΡΡ‹Ρ€ΡŒΡ ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²; Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ раскроя;

— ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ производствСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдприятий;

— ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ размСщСния ΠΈ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ†ΠΈΠΈ производства;

— ΡΠΎΡΡ‚авлСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΎΠΊ, Ρ€Π°Π±ΠΎΡ‚Ρ‹ транспорта;

— ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ производствСнными запасами;

— ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ сфСрС ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ планирования.

Для большого количСства практичСски интСрСсных Π·Π°Π΄Π°Ρ‡ цСлСвая функция выраТаСтся Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ — Ρ‡Π΅Ρ€Π΅Π· характСристики ΠΏΠ»Π°Π½Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ допустимыС значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Π΅Π½Ρ‹ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ равСнствам ΠΈΠ»ΠΈ нСравСнствам. НахоТдСниС ΠΏΡ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… условиях Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ экстрСмума Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ исслСдованиСм ΠΏΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ являСтся Ρ€Π°Π±ΠΎΡ‚Π° Π›. Π’. ΠšΠ°Π½Ρ‚ΠΎΡ€ΠΎΠ²ΠΈΡ‡Π° «ΠœΠ°Ρ‚СматичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ производства», опубликованная Π² 1939 Π³. Π’ Π½Π΅ΠΌ Π΄Π°Π½Π° постановка Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΈ Π΄Π°Π½ΠΎ Π΅Π³ΠΎ тСорСтичСскоС обоснованиС.

ΠŸΡ€ΡΠΌΠ°Ρ Π·Π°Π΄Π°Ρ‡Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования являСтся матСматичСской Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ составлСния Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° использования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов производства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ максимальноС количСство ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΏΡ€ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ рСсурсах.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — это прикладная ΠΎΡ‚Ρ€Π°ΡΠ»ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, которая являСтся тСорСтичСской основой Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ планирования.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ матСматичСского программирования: Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅, парамСтричСскоС, Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. НаиболСС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСмым Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ матСматичСского программирования являСтся Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слуТит отыскиваниС ΠΎΠΏΡ‚ΠΈΠΌΡƒΠΌΠ° (max, min) Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ нСравСнств.

БимплСксный ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ позволяСт Ρ€Π΅ΡˆΠΈΡ‚ΡŒ практичСски Π»ΡŽΠ±ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅.

1.1 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования Π—Π°Π΄Π°Ρ‡Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ограничСниях.

НСобходимо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†. Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ систСмы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅:

; (1)

; (2)

. (3)

БимплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ:

— ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊΠ° (исходного ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°);

— ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π²Π΅Ρ€ΡˆΠΈΠ½ (ΠΎΠΏΠΎΡ€Π½Ρ‹Ρ… ΠΏΠ»Π°Π½ΠΎΠ²), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС осущСствляСтся ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ.

1.2 Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ БимплСксный ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡΡΡŒ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ исходного ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈ ΠΏΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ Π΅Π³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½ ΠΈΠ»ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΠΎΡΡ‚ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ (Рисунок 1).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 1. Допустимым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ (ΠΏΠ»Π°Π½ΠΎΠΌ) Π·Π°Π΄Π°Ρ‡ΠΈ Π›ΠŸ называСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ X=(x1,x2,…, xn), ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ всСм Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΠΌ (2), (3).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2. План X=(x1,x2,…, xn) Π·Π°Π΄Π°Ρ‡ΠΈ (1) — (3) называСтся ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌ (допустимым базисным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ), Ссли Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ условий Aj=(a1j, a2j,…, amj) T, входящиС Π² Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° A0=(b1,b2,…, bm) T:

(4)

с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коэффициСнтами xj, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ нСзависимы.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 3. БистСма m Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ нСзависимых Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² условий {Asi}, , Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ всС Ρ‚Π΅ Asi, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… xsi>0, называСтся базисом ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ся Ρ‡Π΅Ρ€Π΅Π· Π‘x.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ Π›ΠŸ симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π΅Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅. РСшСниС начинаСтся с ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ базис. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Ссли ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° основных ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (2) содСрТит ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ m Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ m-Π³ΠΎ порядка.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли X0=(xs1,xs2,…, xs0,0,…, 0) — исходный ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π·Π°Π΄Π°Ρ‡ΠΈ с Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΌ базисом As1,…, Asm ΠΈ ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠ°Ρ модСль Π·Π°Π΄Π°Ρ‡ΠΈ, которая ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄

(5)

Из ΡΠΈΡΡ‚Π΅ΠΌΡ‹ (5) слСдуСт, Ρ‡Ρ‚ΠΎ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠΏΠΎΡ€Π½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ X0 базисныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ xsi=bi,. Алгоритм симплСксного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° начинаСтся с Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ:

X0=(b1,b2,…,bm, 0,…, 0). (6)

Для исслСдования X0 Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ всС Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Aj ΠΏΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌ базиса Asi:

(7)

ΠΈ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ разности:

j=Zj-cj. (8)

Π’ Ρ€Π°Π²Π΅Π½ΡΡ‚Π²Π΅ (7) xij=aij, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Asi ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ базис.

Записав всю ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π΄Π°Ρ‡Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ (Π½ΡƒΠ»Π΅Π²ΡƒΡŽ) ΡΠΈΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ (Π’Π°Π±Π»ΠΈΡ†Π° 1).

Π’Π°Π±Π»ΠΈΡ†Π° 1 — НулСвая симплСксная Ρ‚Π°Π±Π»ΠΈΡ†Π°

i

Π‘Ρ…

Π‘Π±

А0

c1

csr

ck

cn

t

A1

Asr

Ak

An

As1

cs1

xs1

xs11

x1k

x1n

t0

As2

cs2

xs2

xs21

x2k

x2n

r

Asr

csr

xsr

xr1

xrk

xrn

m

Asm

csm

xsm

xm1

xmk

xmn

m+1

;

;

Z0

sr=0

k

n

БимплСкс-Ρ‚Π°Π±Π»ΠΈΡ†Π° заполняСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: столбСц i, строка Π‘, столбСц Π‘x, столбСц Π‘Π±, столбСц A0, столбцы A1,…, An. Π’Π°ΠΊ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ m строк.

Π’ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ столбСц (m+1)-ΠΉ строки записываСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ для ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅

. (9)

Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ (m+1)-ΠΉ строки Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ значСния ΠΎΡ†Π΅Π½ΠΎΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² условий Aj (Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ j), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅

(10)

БазисныС разности si=0.

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ просматриваСм (m+1)-ю строку. ΠŸΡ€ΠΈ этом ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠ΅ случаи:

1) ВсС разности j0. Π’ΠΎΠ³Π΄Π° ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ X0 являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ minZ=Z0.

2) Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ фиксированного j j>0 ΠΈ Π²ΡΠ΅ коэффициСнты xij0,. Π’ΠΎΠ³Π΄Π° линСйная Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° мноТСством допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях процСсс вычислСния Π½Π° ΡΡ‚ΠΎΠΌ заканчиваСтся.

3) Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… индСксов j ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ j>0 ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ j, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‡ΠΈΡΠ΅Π» xij>0. Π­Ρ‚ΠΎ ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π·Π° ΡΡ‡Π΅Ρ‚ ввСдСния Π² Π±Π°Π·ΠΈΡ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… разностСй. Π’ Π±Π°Π·ΠΈΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Ρ‚ΠΎΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ maxj. Если Ρ‚Π°ΠΊΠΈΡ… разностСй нСсколько, Ρ‚ΠΎ Π±Π΅Ρ€ΡƒΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ с ΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ.

ΠŸΡƒΡΡ‚ΡŒ. Π’ΠΎΠ³Π΄Π° Π² Π±Π°Π·ΠΈΡ слСдуСт ввСсти Π²Π΅ΠΊΡ‚ΠΎΡ€ Ak Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния

. (11)

НСобходимо вывСсти ΠΈΠ· Π±Π°Π·ΠΈΡΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ Asr, Π½ΠΎΠ²Ρ‹ΠΉ базис Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²: As1,As2,…, Asr-1,Asr+1,…, Asm, Ak. Π’ ΡΡ‚ΠΎΠΌ случаС xrk Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ элСмСнтом симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† k ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠ° r Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ.

ВсС элСмСнты Π½ΠΎΠ²ΠΎΠΉ симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ столбца ΠΏΠΎ n-ΠΉ ΠΈ Ρ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΏΠΎ (m+1)-ю ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ:

(12)

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΈΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠΠ°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ строку r дСлят Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт xrk. Π’ Π½ΠΎΠ²ΠΎΠΉ симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π° ΠΌΠ΅ΡΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ элСмСнта получаСтся Π΅Π΄ΠΈΠ½ΠΈΡ†Π°: x=1, Π° Π½Π° ΠΌΠ΅ΡΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ столбца получаСтся Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ с Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ Π² Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ строкС. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ строки ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ: ΠΈΠ· Ρ‚ΠΎΠΉ строки исходной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π½Π° Ρ‚ΠΎΡ‚ элСмСнт строки, Π½Π° ΠΌΠ΅ΡΡ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠ»ΡŒ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ прСобразования Π½ΡƒΠ»Π΅Π²ΠΎΠΉ симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ (12) ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½. ΠžΠΏΡΡ‚ΡŒ просматриваСм (m+1)-ю строку. Если всС j0, Ρ‚ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠΏΠΎΡ€Π½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠ΄Π΅ΠΌ Π»ΠΈΠ±ΠΎ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠ»Π°Π½Ρƒ, Π»ΠΈΠ±ΠΎ убСдимся Π² Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΡΡ‚ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹. Алгоритм симплСксного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊ-схСмы прСдставлСн Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 1.

Рисунок 1 — ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊ-схСмы

2. ΠŸΠ ΠžΠ•Π’Π˜Π ΠžΠ’ΠΠΠ˜Π• ΠŸΠš Π”Π›Π― Π Π•Π¨Π•ΠΠ˜Π― ЗАДАЧ Π›Π˜ΠΠ•Π™ΠΠžΠ“Πž ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘Π˜ΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Πœ ΠœΠ•Π’ΠžΠ”ΠžΠœ

2.1 ВСстовый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

УсловиС Π·Π°Π΄Π°Ρ‡ΠΈ: для изготовлСния Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΡ‹Ρ€ΡŒΠ΅ Ρ‚Ρ€Π΅Ρ… Π²ΠΈΠ΄ΠΎΠ². Запасы ΡΡ‹Ρ€ΡŒΡ извСстны ΠΈ Ρ€Π°Π²Π½Ρ‹ соотвСтствСнно: 264, 136 ΠΈ 266 Ρ‚. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡΡ‹Ρ€ΡŒΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для производства Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎΠ²ΠΈΠ΄Π° соотвСтствСнно Ρ€Π°Π²Π½Ρ‹: 12, 4 ΠΈ 3. Для Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°: 3, 5 ΠΈ 14. ΠŸΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° составляСт 6 Ρƒ.Π΅., ΠΎΡ‚ Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° — 4 Ρƒ.Π΅.

Найти максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F (X) = 6×1 + 4×2.

Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ производству:

— Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ модСль;

— Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ;

РСшСниС:

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ модСль.

x1 — производство Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°;

x2 — производство Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°;

РСшим ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ F (X) = 6×1+4×2 ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условиях (ограничСниях).

12×1 + 3×2? 264;

4x1 + 5×2? 136 ;

3x1 + 14×2? 266.

Для построСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ систСму нСравСнств ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΏΡƒΡ‚Π΅ΠΌ ввСдСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅).

12×1 + 3×2 + 1×3 + 0×4 + 0×5 = 264;

4x1 + 5×2 + 0×3 + 1×4 + 0×5 = 136;

3x1 + 14×2 + 0×3 + 0×4 + 1×5 = 266.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° коэффициСнтов A = a (ij) этой систСмы ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

БазисныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ входят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ систСмы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΈΡ‚ΠΎΠΌ с Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΌ коэффициСнтом.

РСшим систСму ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ базисных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

x3, x4, x5.

Полагая, Ρ‡Ρ‚ΠΎ свободныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π²Π½Ρ‹ 0, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½: X1 = (0,0,264,136,266)

Π’Π°Π±Π»ΠΈΡ†Π° 2 — ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

План

Базис

Π’

x1

x2

x3

x4

x5

0

x3

264

12

3

1

0

0

x4

136

4

5

0

1

0

x5

266

3

14

0

0

1

ИндСксная строка

F (X0)

0

-6

-4

0

0

0

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π’Π°Π±Π»ΠΈΡ†Π° 3 — ΠŸΠ΅Ρ€Π²Π°Ρ симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†Π°

План

Базис

Π’

x1

x2

x3

x4

x5

min

1

x3

264

12

3

1

0

0

22

x4

136

4

5

0

1

0

34

x5

266

3

14

0

0

1

88.67

ИндСксная строка

F (X1)

0

-6

-4

0

0

0

0

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ № 0.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠΉ строкС находятся ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ коэффициСнты.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ столбСц, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это наибольший коэффициСнт ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.

Вычислим значСния Di ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ ΠΊΠ°ΠΊ частноС ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ

ΠΈ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ наимСньшСС:

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, 1-ая строка являСтся Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ. Π Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт Ρ€Π°Π²Π΅Π½ 12 ΠΈ Π½Π°Ρ…одится Π½Π° ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ столбца ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ строки. Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ВмСсто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x3 Π² ΠΏΠ»Π°Π½ 1 Π²ΠΎΠΉΠ΄Π΅Ρ‚ пСрСмСнная x1. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x1 Π² ΠΏΠ»Π°Π½Π΅ 1, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ дСлСния всСх элСмСнтов строки x3ΠΏΠ»Π°Π½Π° 0 Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт, Ρ€Π°Π²Π½Ρ‹ΠΉ 12. На ΠΌΠ΅ΡΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΏΠ»Π°Π½Π΅ 1 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 1. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ… столбца x1 ΠΏΠ»Π°Π½Π° 1 записываСм Π½ΡƒΠ»ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ 1 Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ строка x1 ΠΈ ΡΡ‚ΠΎΠ»Π±Π΅Ρ† x1. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° 1, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты индСксной строки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Для этого Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ· ΡΡ‚Π°Ρ€ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ числа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π°Ρ… ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт 12

НЭ = Π‘Π­ — (А*Π’)/Π Π­, Π³Π΄Π΅

Π‘Π’Π­ — элСмСнт старого ΠΏΠ»Π°Π½Π°, Π Π­ — Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт (12), А ΠΈ Π’ — элСмСнты старого ΠΏΠ»Π°Π½Π°, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π‘Π’Π­ ΠΈ Π Π­.

Π’Π°Π±Π»ΠΈΡ†Π° 4 — Вторая симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†Π°

План

Базис

Π’

x1

x2

x3

x4

x5

min

2

x1

22

1

0.25

0.0833

0

0

88

x4

48

0

4

-0.3333

1

0

12

x5

200

0

13.25

-0.25

0

1

15.09

ИндСксная строка

F (X2)

132

0

-2.5

0.5

0

0

0

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ № 1.

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠΉ строкС находятся ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ коэффициСнты. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ столбСц, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это наибольший коэффициСнт ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ. Вычислим значСния Di ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ ΠΊΠ°ΠΊ частноС ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ наимСньшСС:

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, 2-ая строка являСтся Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ. Π Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт Ρ€Π°Π²Π΅Π½ 4 ΠΈ Π½Π°Ρ…одится Π½Π° ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ столбца ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅ΠΉ строки.

Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ симплСксной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ВмСсто ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x4 Π² ΠΏΠ»Π°Π½ 2 Π²ΠΎΠΉΠ΄Π΅Ρ‚ пСрСмСнная x2. Π‘Ρ‚Ρ€ΠΎΠΊΠ°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x2 Π² ΠΏΠ»Π°Π½Π΅ 2, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ дСлСния всСх элСмСнтов строки x4 ΠΏΠ»Π°Π½Π° 1 Π½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ элСмСнт Π Π­=4. На ΠΌΠ΅ΡΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΏΠ»Π°Π½Π΅ 2 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 1. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ… столбца x2 ΠΏΠ»Π°Π½Π° 2 записываСм Π½ΡƒΠ»ΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ 2 Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ строка x2 ΠΈ ΡΡ‚ΠΎΠ»Π±Π΅Ρ† x2. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° 2, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты индСксной строки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. ΠšΠΎΠ½Π΅Ρ† ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ: индСксная строка Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов — Π½Π°ΠΉΠ΄Π΅Π½ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½.

Π’Π°Π±Π»ΠΈΡ†Π° 5 — ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

План

Базис

Π’

x1

x2

x3

x4

x5

3

x1

19

1

0

0.1042

-0.0625

0

x2

12

0

1

-0.0833

0.25

0

x5

41

0

0

0.8542

-3.31

1

ИндСксная строка

F (X3)

162

0

0

0.2917

0.625

0

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π½ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

x1 = 19; x2 = 12;

F (X) = 6*19 + 4*12 = 162.

3. Π ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ ΠŸΠš Π”Π›Π― Π Π•Π¨Π•ΠΠ˜Π― ЗАДАЧ Π›Π˜ΠΠ•Π™ΠΠžΠ“Πž ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘Π˜ΠœΠŸΠ›Π•ΠšΠ‘ΠΠ«Πœ ΠœΠ•Π’ΠžΠ”ΠžΠœ

3.1 Π’Ρ‹Π±ΠΎΡ€ языка программирования ΠΈ ΡΡ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠš для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

Для выполнСния курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° я Π²Ρ‹Π±Ρ€Π°Π»Π° язык Object Pascal ΠΈ ΡΡ€Π΅Π΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Delphi. Delphi сочСтаСт Π² ΡΠ΅Π±Π΅ удобство Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ компилятора ΠΈ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ. Delphi позволяСт ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ созданный ΠΊΠΎΠ΄, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ врСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык программирования, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ситуаций, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НовыС ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹Π΅ способы доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСроятности ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°, благодаря наслСдованию Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности этого инструмСнта.

3.2 ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ собой

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ допустимого базисного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

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

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ являСтся ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, максимальноС ΠΈΠ»ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ сообщСниС ΠΎ ΡΠΎΡΡ‚оянии выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ).

SDT-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° (Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² состояний) дСмонстрируСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… воздСйствий (ΠΈΠ·Π²Π½Π΅), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 5.

Рисунок — 5 Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² состояний (STD)

3.3 ОписаниС ПК для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ

Разработанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования симплСксным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ — максимальноС ΠΈΠ»ΠΈ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ X.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ exe-Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠΌ LP. ПослС Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 6.

Рисунок 6 — Окно Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ», которая находится Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΎΠΊΠ½ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 7, Π³Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ.

Рисунок 7 — Окно для Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π·Π°Π΄Π°Ρ‡ΠΈ

ПослС Ρ‡Π΅Π³ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ», Π³Π΄Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ°Ρ… 8−9.

Рисунок 8 — Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

Рисунок 9 — Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ

ПослС создания Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования, сохраняСм Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ «Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ».

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ симплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ» ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ исход Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π₯, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 10.

Рисунок 10 — ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ ПК

Для Π²Ρ‹Π·ΠΎΠ²Π° справки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов «Π‘ΠΏΡ€Π°Π²ΠΊΠ°», послС Ρ‡Π΅Π³ΠΎ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ ΠΎΠΊΠ½ΠΎ с Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠΌ ΠΏΠΎ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠŸΠš (Рисунок 11).

Рисунок 11 — Π’Ρ‹Π·ΠΎΠ² справки

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, удалСния ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ирования Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ…одимости Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·.

Π’Π«Π’ΠžΠ”Π«

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ симплСкс ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

Π’ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±Ρ‹Π» рассмотрСн ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ симплСкс ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования, Π±Ρ‹Π» составлСн тСкстовый ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простоту ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ расчСтов Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠŸΠš.

Разработанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ΡΡ€Π΅Π΄Π΅ Delphi ΠΈΠΌΠ΅Π΅Ρ‚ простой ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс для любого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов Π² Π²ΠΈΠ΄Π΅ свободного мСста Π½Π° Π΄ΠΈΡΠΊΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ вычислСния производятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

1 http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BF%D0% BB% D0%B5%D0%BA%D1%81%D0%BC%D0%B5%D1%82%D0%BE%D0%B4

2 http://saim.ts6.ru/pages/8.htm

3 Π“. Π–ΠΈΠΌΠ΅Ρ€ΠΈΠ½, Π’. А. Мясников — «ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π°Π²Ρ‚оматичСскиС систСмы уравнСния» — 1975 Π³.

4 Π•. Π‘. Π’Π΅Π½Ρ†Π΅Π»ΡŒ — «Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ» — 1972 Π³.

5 http://math.semestr.ru/simplex/primersolve.php

6 МУ ΠΊ Π›Π  «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ условной ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ «ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ синтСза ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ» /Бост.: Π“. Π‘. Π‘ΠΈΠ»Ρ‹ΠΊ, О. Π’. Π’Π΅Ρ€Π΅ΠΌΠ΅ΠΉ. — ΠšΡ€Π°ΠΌΠ°Ρ‚орск: Π”Π“ΠœΠ, 2000. — 56с.

7 ΠœΠΈΠ½Ρƒ М. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. — Πœ.: Наука, 1990. — 488 с.

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π•, А Π›ΠΈΡΡ‚ΠΈΠ½Π³ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

private

{ Private declarations }

procedure CreateChild (const Name: String);

public

{ Public declarations }

end;

var

MainForm: TMainForm;

ItemDel:integer;

implementation

uses Parameters, About;

{$R *.DFM}

procedure TMainForm. CreateChild (const Name: String);

var

Child: TChildForm;

begin

Child:=TChildForm.Create (Application);

child.Caption:=Name;

end;

procedure TMainForm. ExitPClick (Sender: TObject);

begin

Close;

end;

procedure TMainForm. NewClick (Sender: TObject);

begin

CreateChild ('Π—Π°Π΄Π°Ρ‡Π° '+IntToStr (MDIChildCount+1));

end;

procedure TMainForm. FileMenuClick (Sender: TObject);

begin

if ActiveMDIChild<>nil then

begin

MainForm.CloseChild.Enabled:=true;

MainForm.Save.Enabled:=true;

MainForm.SaveAs.Enabled:=true;

MainForm.Print.Enabled:=true

end

else

begin

MainForm.CloseChild.Enabled:=false;

MainForm.Save.Enabled:=false;

MainForm.SaveAs.Enabled:=false;

MainForm.Print.Enabled:=false

end

end;

procedure TMainForm. CloseChildClick (Sender: TObject);

begin

if ActiveMDIChild<>nil then ActiveMDIChild. Close;

end;

procedure TMainForm. EditClick (Sender: TObject);

begin

if ActiveMDIChild<>nil then

begin

MainForm.ChangeFun.Enabled:=true;

MainForm.AddLim.Enabled:=true;

MainForm.DelLim.Enabled:=true;

MainForm.N8.Enabled:=true;

MainForm.N20.Enabled:=true;

MainForm.N22.Enabled:=true;

MainForm.N24.Enabled:=true;

MainForm.N25.Enabled:=true;

end

else

begin

MainForm.ChangeFun.Enabled:=false;

MainForm.AddLim.Enabled:=false;

MainForm.DelLim.Enabled:=false;

MainForm.N8.Enabled:=false;

MainForm.N20.Enabled:=false;

MainForm.N22.Enabled:=false;

MainForm.N24.Enabled:=false;

MainForm.N25.Enabled:=false;

end

end;

procedure TMainForm. ChangeFunClick (Sender: TObject);

begin

ParametersForm.PageControl1.ActivePageIndex:=0;

ParametersForm.ShowModal;

end;

procedure TMainForm. AddLimClick (Sender: TObject);

begin

ParametersForm.PageControl1.ActivePageIndex:=1;

ParametersForm.ShowModal;

end;

procedure TMainForm. N2Click (Sender: TObject);

begin

MainForm.Enabled:=False;

AboutForm.Visible:=true;

end;

procedure TMainForm. N14Click (Sender: TObject);

begin

Cascade

end;

procedure TMainForm. N15Click (Sender: TObject);

begin

Tile

end;

procedure TMainForm. N16Click (Sender: TObject);

begin

ArrangeIcons

end;

procedure TMainForm. N18Click (Sender: TObject);

var i: integer;

begin

for i:=mdichildcount-1 downto 0 do

mdichildren[i]. WindowState:=wsminimized;

end;

procedure TMainForm. N5Click (Sender: TObject);

begin

if ActiveMDIChild<>nil then

begin

MainForm.N6.Enabled:=true;

MainForm.N7.Enabled:=true;

MainForm.N30.Enabled:=true

end

else

begin

MainForm.N6.Enabled:=false;

MainForm.N7.Enabled:=false;

MainForm.N30.Enabled:=false;

end

end;

procedure TMainForm. N13Click (Sender: TObject);

begin

if ActiveMDIChild<>nil then

begin

MainForm.N14.Enabled:=true;

MainForm.N15.Enabled:=true;

MainForm.N16.Enabled:=true;

MainForm.N18.Enabled:=true;

end

else

begin

MainForm.N14.Enabled:=false;

MainForm.N15.Enabled:=false;

MainForm.N16.Enabled:=false;

MainForm.N18.Enabled:=false;

end;

end;

procedure TMainForm. N4Click (Sender: TObject);

begin

Application.HelpCommand (3, 0);

end;

//БимплСкс-ΠΌΠ΅Ρ‚ΠΎΠ΄

procedure TMainForm. N6Click (Sender: TObject);

var

SimplexTable, SimplexTableNew: array of array of extended;

GoalFun:array of extended;

ArtFun:array of extended;

ExtrEstimation:extended;

k, i, j, MoreCount, LessCount, EquallyCount, extrItem, WLine, IterCount: integer;

Art, bil: boolean;

label fin, up;

begin

Art:=true;bil:=false;IterCount:=0;

SimplexTable:=nil;

MoreCount:=0;LessCount:=0;EquallyCount:=0;

{1}//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ: 1) >=; 2) =; 3) <=.

{2}//ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ базиса

{3}//Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ построСниС симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†

{1}//—————————————————————————————————————;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «Π‘ΠΎΠ»ΡŒΡˆΠ΅»

with MainForm. ActiveMDIChild as TChildForm do

begin

//строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с 1

//нулСвая строка рСзСрвная

for i:=1 to SignsChild. RowCount-1 do

begin

if (SignsChild.Cells[0,i]='>') or (SignsChild.Cells[0,i]='>=') then

begin

inc (MoreCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «Π Π°Π²Π½ΠΎ»

for i:=1 to SignsChild. RowCount-1 do

begin

if SignsChild. Cells[0,i]='=' then

begin

inc (EquallyCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount+EquallyCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount+EquallyCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount+EquallyCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount+EquallyCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «ΠœΠ΅Π½ΡŒΡˆΠ΅»

for i:=1 to SignsChild. RowCount-1 do

begin

if (SignsChild.Cells[0,i]='<') or (SignsChild.Cells[0,i]='<=') then

begin

inc (LessCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount+EquallyCount+LessCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount+EquallyCount+LessCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount+EquallyCount+LessCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount+EquallyCount+LessCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

end;

{2}//—————————————————————————————————————;

//ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ базиса

//2.1 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ коэф. -1 (>=)

for j:=0 to MoreCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-MoreCount+1 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=-1;

end;

//2.2 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ коэф. 1 (<=)

for j:=MoreCount+EquallyCount to MoreCount+EquallyCount+LessCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-LessCount+2 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=1;

end;

//2.3 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ искусствСнныС коэф. (>= ΠΈ =)

for j:=0 to MoreCount+EquallyCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-MoreCount+1 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=1;

end;

//ЦСлСвая функция GoalFun

GoalFun:=nil;

with MainForm. ActiveMDIChild as TChildForm do

begin

SetLength (GoalFun, GoalChild. ColCount+1);

for i:=1 to GoalChild. ColCount do

begin

if parametersForm.Min.Checked then GoalFun[i]: =StrToFloat (goalChild.Cells[i-1,1])

else GoalFun[i]: =-1*StrToFloat (goalChild.Cells[i-1,1]);

end;

end;

//Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Π°Ρ функция ArtFun

ArtFun:=nil;

SetLength (ArtFun, length (SimplexTable)-1-MoreCount);

//i=1 — Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ иск. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

for i:=1 to length (SimplexTable)-3 do

for j:=0 to MoreCount-1 do ArtFun[i-1]: =ArtFun[i-1]-SimplexTable[i, j];

//——————————————————————————————————————-;

//ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ искусствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

//Базис

if MoreCount>0 then

begin

for j:=0 to MoreCount-1 do

SimplexTable[0,j]: =length (simplexTable)-MoreCount+j-1;

for i:=MoreCount to length (simplexTable[0])-1 do

SimplexTable[0,i]: =length (simplexTable)-(LessCount+EquallyCount+MoreCount)+(i-MoreCount)-1;

end

else

for i:=0 to LessCount+EquallyCount-1 do

SimplexTable[0,i]: =length (simplexTable)-(LessCount+EquallyCount+MoreCount)+i-1;

//2 Π½ΠΈΠΆΠ½ΠΈΠ΅ строки для ΠΎΡ†Π΅Π½ΠΎΠΊ

SetLength (SimplexTable, length (SimplexTable), length (SimplexTable[0])+2);

for i:=0 to length (GoalFun)-1 do SimplexTable[i+1,length (SimplexTable[0])-2]: =goalFun[i];

for i:=0 to length (ArtFun)-1 do SimplexTable[i+1,length (SimplexTable[0])-1]: =ArtFun[i];

SimplexTableNew:=nil;

SetLength (SimplexTableNew, length (SimplexTable), length (SimplexTable[0]));

//ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ…

up:

repeat

if not art then inc (IterCount);

if IterCount=Parametersform.CountIteration.Value then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Достигнуто ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. РСшСниС Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ');

exit;

end;

end;

{

//ΠœΠΎΠΆΠ΅Ρ‚ функция Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°? => поиск столбца с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коэф.

k:=0;

if art then

for i:=2 to length (simplexTable)-1 do

begin

if simplexTable[i, length (SimplexTable[0])-1]<0 then

begin

// k:=0;

for j:=0 to length (SimplexTable[0])-3 do

if simplexTable[i, j]<=0 then inc (k);

if k=length (SimplexTable[0])-2 then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('НСвозмоТно Π½Π°ΠΉΡ‚ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ базис');

exit;

end;

k:=0;

end;

end;

end;

k:=0;

if not art then

for i:=2 to length (simplexTable)-1 do

begin

if simplexTable[i, length (SimplexTable[0])-1]<0 then

begin

k:=0;

for j:=0 to length (SimplexTable[0])-2 do

if simplexTable[i, j]<=0 then inc (k);

if k=length (SimplexTable[0])-1 then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('ЦСлСвая функция Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°');

exit;

end;

end;

end;

end;

}

//поиск ΠΏΠ΅Ρ€Π²ΠΎΠΉ минимальной ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ†Π΅Π½ΠΊΠΈ искуствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ExtrEstimation:=100 000;

extrItem:=0;

for i:=2 to length (simplexTable)-1 do

if (SimplexTable[i, length (SimplexTable[0])-1]<0) then

begin

extrItem:=i-1;{Π½ΠΎΠ²Ρ‹ΠΉ базис}

ExtrEstimation:=SimplexTable[i, length (SimplexTable[0])-1];

end;

if ExtrEstimation=100 000 then goto fin;

{Π’ΠΠ˜ΠœΠΠΠ˜Π•!!! Delphi пропускаСт Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ (ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡŽ Delphi) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.}

//Π²Ρ‹Π±ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строки (поиск минимального ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…)

ExtrEstimation:=100 000;

WLine:=0;

for j:=0 to length (simplexTable[0])-2 do

begin

if SimplexTable[extrItem+1,j]<>0 then

if (SimplexTable[1,j]/SimplexTable[extrItem+1,j]0) then

begin

WLine:=j;

ExtrEstimation:=SimplexTable[1,j]/SimplexTable[extrItem+1,j];

end;

end;

//Π½ΠΎΠ²Ρ‹ΠΉ базис

for i:=0 to length (SimplexTable[0])-1 do SimplexTableNew[0,i]: =SimplexTable[0,i];

SimplexTableNew[0,WLine]:=extrItem;

//пСрСрасчСт Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строки

for i:=1 to length (SimplexTable)-1 do SimplexTableNew[i, WLine]: =SimplexTable[I, wlINE]/SimplexTable[extrItem+1,wlINE];

//пСрСрасчСт коэффициСнтов

for i:=1 to length (SimplexTable)-1 do

for j:=0 to length (SimplexTable[0])-1 do

if j<>WLine then

SimplexTableNew[i, j]: =SimplexTable[i, j]-SimplexTable[i, Wline]*SimplexTable[extrItem+1,j]/SimplexTable[extrItem+1,WLine];

//ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†

for i:=0 to length (SimplexTable)-1 do for j:=0 to length (SimplexTable[0])-1 do SimplexTable[i, j]: =SimplexTableNew[i, j];

//Π’Ρ‹Π²ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

if ParametersForm. CheckBox1.Checked then begin

bil:=false;

if not art then

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ '+InttoStr (IterCount));

for i:=0 to GoalChild. ColCount-1 do

begin

for j:=0 to length (SimplexTable[0])-1 do

if i+1=SimplexTable[0,j] then

begin

task.Items.Add (' '+GoalChild.Cells[i, 0]+'='+FloatToStr (SimplexTable[1,j]));

bil:=true;

end;

if not bil then task.Items.Add (' '+GoalChild.Cells[i, 0]+'=0');

bil:=false;

end;

end;

end;

until false;

fin:

if art then

begin

art:=false;

SetLength (SimplexTable, Length (SimplexTable)-MoreCount, Length (SimplexTable[0])-1);

goto up;

end;

//Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚');

for i:=0 to GoalChild. ColCount-1 do

begin

for j:=0 to length (SimplexTable[0])-1 do

if i+1=SimplexTable[0,j] then

begin

task.Items.Add (' '+GoalChild.Cells[i, 0]+'='+FloatToStr (SimplexTable[1,j]));

bil:=true;

end;

if not bil then task.Items.Add (' '+GoalChild.Cells[i, 0]+'=0');

bil:=false;

end;

task.Items.Add ('');

if parametersForm.Min.Checked then

task.Items.Add ('МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ '+FloatToStr (-1*(SimplexTable[1,length (SimplexTable[0])-1])))

else

task.Items.Add ('МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ '+FloatToStr (SimplexTable[1,length (SimplexTable[0])-1]));

end;

end;

procedure TMainForm. SaveAsClick (Sender: TObject);

var

FExt: String;

begin

with SaveDialog1 do

begin

if ActiveMDIChild. Caption[1]='Π—' then

FileName:=ActiveMDIChild.Caption+'.tsk'

else

FileName:=ActiveMDIChild.Caption;

FExt:=ExtractFileExt (FileName);

if length (Fext)=0 then

FExt:='.tsk';

filter:='Files (*'+FExt+')|*'+FExt;

if Execute then

with ActiveMDIchild as TChildForm do

SaveData (FileName);

end;

end;

procedure TMainForm. PrintClick (Sender: TObject);

begin

PrintDialog1.Execute;

end;

procedure TMainForm. OpenClick (Sender: TObject);

var

s:string;

i, k: integer;

begin

if OpenDialog1. Execute then

begin

with fileMenu do

begin

if not N11. Visible then N11. Visible:=true;

k:=IndexOf (N1Name1);

for i:=count-3 downto k+1 do

begin

s:=items[i-1]. caption;

s[2]:=chr (ord ('0')+(i-k+1));

Items[i].Caption:=S;

Items[i].Visible:=Items[i-1].Visible;

end;

n1name1.Caption:='&1 '+OpenDialog1.FileName;

n1name1.Visible:=true;

end;

CreateChild (OpenDialog1.FileName);

with ActiveMDIChild as TChildForm do

LoadData (OpenDialog1.FileName);

ParametersForm.FormShow (Sender);

ParametersForm.Button3Click (Sender);

end;

end;

procedure TMainForm. N27Click (Sender: TObject);

begin

N27.checked:=not N27. checked;

if N27. checked then toolbar1. Visible:=true else toolbar1. Visible:=false;

end;

procedure TMainForm. N28Click (Sender: TObject);

begin

N28.checked:=not N28. checked;

if N28. checked then statusbar1. Visible:=true else statusbar1. Visible:=false;

end;

procedure TMainForm. N7Click (Sender: TObject);

var

SimplexTable, SimplexTableNew: array of array of extended;

GoalFun:array of extended;

ArtFun:array of extended;

ExtrEstimation:extended;

k, i, j, MoreCount, LessCount, EquallyCount, extrItem, WLine, IterCount: integer;

Art, bil: boolean;

label fin, up, up2;

begin

Art:=true;bil:=false;IterCount:=0;

SimplexTable:=nil;

MoreCount:=0;LessCount:=0;EquallyCount:=0;

{1}//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ: 1) >=; 2) =; 3) <=.

{2}//ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ базиса

{3}//Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ построСниС симплСкс-Ρ‚Π°Π±Π»ΠΈΡ†

{1}//—————————————————————————————————————;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «Π‘ΠΎΠ»ΡŒΡˆΠ΅»

with MainForm. ActiveMDIChild as TChildForm do

begin

//строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ ΠΎΠΊΠ½Π° Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с 1

//нулСвая строка рСзСрвная

for i:=1 to SignsChild. RowCount-1 do

begin

if (SignsChild.Cells[0,i]='>') or (SignsChild.Cells[0,i]='>=') then

begin

inc (MoreCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «Π Π°Π²Π½ΠΎ»

for i:=1 to SignsChild. RowCount-1 do

begin

if SignsChild. Cells[0,i]='=' then

begin

inc (EquallyCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount+EquallyCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount+EquallyCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount+EquallyCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount+EquallyCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° «ΠœΠ΅Π½ΡŒΡˆΠ΅»

for i:=1 to SignsChild. RowCount-1 do

begin

if (SignsChild.Cells[0,i]='<') or (SignsChild.Cells[0,i]='<=') then

begin

inc (LessCount);

SetLength (SimplexTable, LimChild. ColCount+2,MoreCount+EquallyCount+LessCount);

//коэффициСнты

for j:=0 to LimChild. ColCount-1 do

SimplexTable[j+2,MoreCount+EquallyCount+LessCount-1]: =StrToFloat (LimChild.cells[j, i]);

//Пока Π½ΡƒΠ»ΠΈ (ΠΏΠΎΡ‚ΠΎΠΌ базис…)

SimplexTable[0,MoreCount+EquallyCount+LessCount-1]: =0;

//Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (B i-Ρ‹ΠΉ)

SimplexTable[1,MoreCount+EquallyCount+LessCount-1]: =StrToFloat (BChild.cells[0,i]);

end;

end;

end;

{2}//—————————————————————————————————————;

//ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ базиса

//2.1 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ коэф. -1 (>=)

for j:=0 to MoreCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-MoreCount+1 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=-1;

end;

//2.2 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ коэф. 1 (<=)

for j:=MoreCount+EquallyCount to MoreCount+EquallyCount+LessCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-LessCount+2 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=1;

end;

//2.3 Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ искусствСнныС коэф. (>= ΠΈ =)

for j:=0 to MoreCount+EquallyCount-1 do

begin

Setlength (SimplexTable, length (SimplexTable)+1,MoreCount+EquallyCount+LessCount);

for i:=length (SimplexTable)-MoreCount+1 to length (SimplexTable)-1 do

SimplexTable[i, j]: =0;

SimplexTable[length (SimplexTable)-1,j]:=1;

end;

//ЦСлСвая функция GoalFun

GoalFun:=nil;

with MainForm. ActiveMDIChild as TChildForm do

begin

SetLength (GoalFun, GoalChild. ColCount+1);

for i:=1 to GoalChild. ColCount do

begin

if parametersForm.Min.Checked then GoalFun[i]: =StrToFloat (goalChild.Cells[i-1,1])

else GoalFun[i]: =-1*StrToFloat (goalChild.Cells[i-1,1]);

end;

end;

//Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Π°Ρ функция ArtFun

ArtFun:=nil;

SetLength (ArtFun, length (SimplexTable)-1-MoreCount);

//i=1 — Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ иск. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

for i:=1 to length (SimplexTable)-3 do

for j:=0 to MoreCount-1 do ArtFun[i-1]: =ArtFun[i-1]-SimplexTable[i, j];

//——————————————————————————————————————-;

//ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ искусствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

//Базис

if MoreCount>0 then

begin

for j:=0 to MoreCount-1 do

SimplexTable[0,j]: =length (simplexTable)-MoreCount+j-1;

for i:=MoreCount to length (simplexTable[0])-1 do

SimplexTable[0,i]: =length (simplexTable)-(LessCount+EquallyCount+MoreCount)+(i-MoreCount)-1;

end

else

for i:=0 to LessCount+EquallyCount-1 do

SimplexTable[0,i]: =length (simplexTable)-(LessCount+EquallyCount+MoreCount)+i-1;

//2 Π½ΠΈΠΆΠ½ΠΈΠ΅ строки для ΠΎΡ†Π΅Π½ΠΎΠΊ

SetLength (SimplexTable, length (SimplexTable), length (SimplexTable[0])+2);

for i:=0 to length (GoalFun)-1 do SimplexTable[i+1,length (SimplexTable[0])-2]: =goalFun[i];

for i:=0 to length (ArtFun)-1 do SimplexTable[i+1,length (SimplexTable[0])-1]: =ArtFun[i];

//ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ…

up:

repeat

if not art then inc (IterCount);

if IterCount=Parametersform.CountIteration.Value then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Достигнуто ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. РСшСниС Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ');

exit;

end;

end;

//ΠœΠΎΠΆΠ΅Ρ‚ функция Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°? => поиск столбца с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коэф.

k:=0;

if art then

for i:=2 to length (simplexTable)-1 do

begin

if simplexTable[i, length (SimplexTable[0])-1]<0 then

begin

// k:=0;

for j:=0 to length (SimplexTable[0])-3 do

if simplexTable[i, j]<=0 then inc (k);

if k=length (SimplexTable[0])-2 then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('НСвозмоТно Π½Π°ΠΉΡ‚ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ базис');

exit;

end;

k:=0;

end;

end;

end;

k:=0;

if not art then

for i:=2 to length (simplexTable)-1 do

begin

if simplexTable[i, length (SimplexTable[0])-1]<0 then

begin

k:=0;

for j:=0 to length (SimplexTable[0])-2 do

if simplexTable[i, j]<=0 then inc (k);

if k=length (SimplexTable[0])-1 then

begin

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('ЦСлСвая функция Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π°');

exit;

end;

end;

end;

end;

//поиск ΠΏΠ΅Ρ€Π²ΠΎΠΉ минимальной ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ†Π΅Π½ΠΊΠΈ искуствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ExtrEstimation:=100 000;

extrItem:=0;

for i:=2 to length (simplexTable)-1 do

if (SimplexTable[i, length (SimplexTable[0])-1]<0) then

begin

extrItem:=i-1;{Π½ΠΎΠ²Ρ‹ΠΉ базис}

ExtrEstimation:=SimplexTable[i, length (SimplexTable[0])-1];

end;

if ExtrEstimation=100 000 then goto fin;

{Π’ΠΠ˜ΠœΠΠΠ˜Π•!!! Delphi пропускаСт Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ (ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡŽ Delphi) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.}

//Π²Ρ‹Π±ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строки (поиск минимального ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…)

ExtrEstimation:=100 000;

WLine:=0;

for j:=0 to length (simplexTable[0])-2 do

begin

if SimplexTable[extrItem+1,j]<>0 then

if (SimplexTable[1,j]/SimplexTable[extrItem+1,j]0) then

begin

WLine:=j;

ExtrEstimation:=SimplexTable[1,j]/SimplexTable[extrItem+1,j];

end;

end;

up2:

SimplexTableNew:=nil;

SetLength (SimplexTableNew, length (SimplexTable), length (SimplexTable[0]));

//Π½ΠΎΠ²Ρ‹ΠΉ базис

for i:=0 to length (SimplexTable[0])-1 do SimplexTableNew[0,i]: =SimplexTable[0,i];

SimplexTableNew[0,WLine]:=extrItem;

//пСрСрасчСт Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строки

for i:=1 to length (SimplexTable)-1 do SimplexTableNew[i, WLine]: =SimplexTable[I, wlINE]/SimplexTable[extrItem+1,wlINE];

//пСрСрасчСт коэффициСнтов

for i:=1 to length (SimplexTable)-1 do

for j:=0 to length (SimplexTable[0])-1 do

if j<>WLine then

SimplexTableNew[i, j]: =SimplexTable[i, j]-SimplexTable[i, Wline]*SimplexTable[extrItem+1,j]/SimplexTable[extrItem+1,WLine];

//ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†

for i:=0 to length (SimplexTable)-1 do for j:=0 to length (SimplexTable[0])-1 do SimplexTable[i, j]: =SimplexTableNew[i, j];

//Π’Ρ‹Π²ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

if ParametersForm. CheckBox1.Checked then begin

bil:=false;

if not art then

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΡ '+InttoStr (IterCount));

for i:=0 to GoalChild. ColCount-1 do

begin

for j:=0 to length (SimplexTable[0])-1 do

if i+1=SimplexTable[0,j] then

begin

task.Items.Add (' '+GoalChild.Cells[i, 0]+'='+FloatToStr (SimplexTable[1,j]));

bil:=true;

end;

if not bil then task.Items.Add (' '+GoalChild.Cells[i, 0]+'=0');

bil:=false;

end;

end;

end;

until false;

fin:

if art then

begin

art:=false;

SetLength (SimplexTable, Length (SimplexTable)-MoreCount, Length (SimplexTable[0])-1);

goto up;

end;

//Если срСди базисных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚ Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ†…

bil:=false;

for i:=0 to ParametersForm. dim1.Value-1 do

if (SimplexTable[0,i]<=ParametersForm.dim1.Value) and (SimplexTable[1,i]<>trunc (SimplexTable[1,i])) then bil:=true;

if not bil then

begin

//Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

with MainForm. ActiveMDIChild as TChildForm do

begin

task.Items.Add ('');

task.Items.Add ('Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚');

for i:=0 to GoalChild. ColCount-1 do

begin

for j:=0 to length (SimplexTable[0])-1 do

if i+1=SimplexTable[0,j] then

begin

task.Items.Add (' '+GoalChild.Cells[i, 0]+'='+FloatToStr (SimplexTable[1,j]));

bil:=true;

end;

if not bil then task.Items.Add (' '+GoalChild.Cells[i, 0]+'=0');

bil:=false;

end;

task.Items.Add ('');

if parametersForm.Min.Checked then

task.Items.Add ('МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ '+FloatToStr (-1*(SimplexTable[1,length (SimplexTable[0])-1])))

else

task.Items.Add ('МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ '+FloatToStr (SimplexTable[1,length (SimplexTable[0])-1]));

end;

exit;

end;

//Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ строка ΠΈ ΡΡ‚ΠΎΠ»Π±Π΅Ρ†

SetLength (SimplexTable, Length (SimplexTable)+1,Length (SimplexTable[0])+1);

For i:=0 to Length (SimplexTable)-1 do

SimplexTable[i, Length (SimplexTable[0])-1]: =SimplexTable[i, Length (SimplexTable[0])-2];

for i:=0 to Length (SimplexTable[0])-1 do SimplexTable[Length (SimplexTable)-1,i]: =0;

SimplexTable[Length (SimplexTable)-1,Length (SimplexTable[0])-2]:=1;

//поиск максимальной Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части

ExtrEstimation:=0;

WLine:=0;

for i:=0 to Length (SimplexTable[0])-3 do

begin

if (abs (SimplexTable[1,i]-trunc (SimplexTable[1,i]))>ExtrEstimation) and (abs (SimplexTable[1,i]-round (SimplexTable[1,i]))>0.001) then

begin

ExtrEstimation:=abs (SimplexTable[1,i]-trunc (SimplexTable[1,i]));

WLine:=i;

end;

end;

SetLength (goalfun, Length (goalfun)+1);

GoalFun[Length (goalfun)-1]: =0;

SimplexTable[0,Length (SimplexTable[0])-2]:=Length (SimplexTable)-2;

SimplexTable[1,Length (SimplexTable[0])-2]:=-ExtrEstimation/ExtrEstimation;

for i:=2 to Length (SimplexTable)-2 do

begin

SimplexTable[i, Length (SimplexTable[0])-2]: =-(abs (SimplexTable[i, WLine]-trunc (SimplexTable[i, WLine])))/ExtrEstimation;

end;

SimplexTable[round (SimplexTable[0,WLine])+1,Length (SimplexTable[0])-2]:=0;

//поиск ΠΏΠ΅Ρ€Π²ΠΎΠΉ минимальной ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ†Π΅Π½ΠΊΠΈ искуствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ExtrEstimation:=100 000;

extrItem:=0;

for i:=2 to length (simplexTable)-1 do

if (SimplexTable[i, length (SimplexTable[0])-1]0) then

begin

extrItem:=i-1;{Π½ΠΎΠ²Ρ‹ΠΉ базис}

ExtrEstimation:=SimplexTable[i, length (SimplexTable[0])-1];

end;

//??? if ExtrEstimation=-100 000 then goto fin;

WLine:=length (SimplexTable[0])-2;

goto up2;

end;

procedure TMainForm. SaveClick (Sender: TObject);

begin

if pos ('Π—Π°Π΄Π°Ρ‡Π°', activemdichild. caption)=1 then

SaveAsClick (Sender) else with activemdichild as TChildForm do

SaveData (Caption);

end;

procedure TMainForm. DelLimClick (Sender: TObject);

var i: byte;

begin

with ActiveMDIChild as TChildForm do

begin

if ItemDel<4 then MessageDlg ('ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ', mtWarning,[mbOK], 0) else

begin

ParametersForm.FormShow (Sender);

for i:=0 to ItemDel-5 do ParametersForm. BitBtn3Click (Sender);

ParametersForm.BitBtn1Click (Sender);

ParametersForm.Button3Click (Sender);

end;

end;

end;

procedure TMainForm. N8Click (Sender: TObject);

var i: byte;

begin

with Mainform. ActiveMDIChild as TChildForm do

begin

GoalChild.ColCount:=2;

LimChild.ColCount:=2;

LimChild.RowCount:=1;

BChild.RowCount:=1;

SignsChild.RowCount:=1;

for i:=0 to 1 do

GoalChild.Cells[i, 1]: ='0';

GoalChild.Cells[0,0]:='X1';

GoalChild.Cells[1,0]:='X2';

Task.Clear;

end;

end;

procedure TMainForm. N1Name1Click (Sender: TObject);

var FileName: string;

begin

with sender as TMenuItem do

begin

FileName:=caption;

System.Delete (FileName, 1,2);

end;

CreateChild (OpenDialog1.FileName);

with ActiveMDIChild as TChildForm do

LoadData (OpenDialog1.FileName);

ParametersForm.FormShow (Sender);

ParametersForm.Button3Click (Sender);

end;

end.

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