Транспорттық жұмыс көлемін минимизациялау

МАЗМҰНЫ
бет
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ... ... 3
І. Жалпы бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 5
1.1 Пәндік аумақты сипаттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
1.2 Бағдарламалау тілінің элементтерін көрсету ... ... ... ... ... ... ... ... . 9
ІІ. Арнайы бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 11
2.1 Транспорттық жұмыс көлемін минимизациялау есебінің экономикалық және математикалық моделін құру ... ... ... ... ... ... ... ..
11
2.2 Есепті математикалық әдіспен реализациялау ... ... ... ... ... ... ... ... ... 12
2.3 Модульдерді, процедураларды және функцияларды сипаттау ... ... ... . 16
2.4 Идентификаторлар кестесі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 19
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Пайдаланылған әдебиеттер тізімі
Қосымшалар
Қосымша А Қолданушы Басшылығы
Қосымша Ә Бағдарлама листингі
Қосымша Б Бақылау мысалы
КІРІСПЕ

Экономикалық талдау мен есептеу əдістерін жетілдіруде зерттеудің математикалық тəсілдерін қолдану үлкен рөл атқарады. Баға белгілеу заңдылықтары, өнім бірлігіне жұмсалатын еңбек пен материалдардың толық шығынын зерделеу, салааралық байланыстарды зерттеу, капитал салымының рентаельділігі, өндірісті орналастырудың тиімділігін анықтау, өндірістік процесті оңтайлы жоспарлау, шектеулі ресурстарды тиімді пайдалану секілді экономикалық проблемалар жəне басқа да маңыздылығы бұлардан кем емес мəселелер математикалық тəсілдерді кеңінен қолдану арқылы табысты шешіле алады. Мұндай есептер үшін құрамына желілік программалау, динамикалық программалау, ойындар теориясы жəне басқа математикалық пəндер кешені экономикалық нысандар мен процестердің математикалық модельдерімен бірге кіретін экономикалық-математикалық аппарат əзірленді жəне одан əрі жалғасуда. Бұл аппаратты, əсіресе өнеркəсіптік өндіріс, ауыл шаруашылығы, көлік, экономикалық зерттеулер жəне т.б. секілді салаларға қатысты есептердің кең айналымын шешуге мүмкіндік беретін желілік программалауды зерделеу экономистің тəжірибелік жұмысында күннен-күнге қажеттілікке айналуда.
Экономикалық есептерді шешудің барлығында да математикалық тəсілдер қолданыла бермейтінін атап өткен жөн. Бұл үшін қажетті шарт зерделеніп отырған мəселені сипаттайтын есептер мен тəуелдіктердің бастапқы деректерінің сандық көрінісі болып табылады. Математикалық модельді құру сандық мəні есепті шешу нұсқаларының бірін анықтайтын айнымалылардың кейбір сандарын енгізуден басталады. Оларды х, у жəне т.б. белгілейді. Оңтайлылықтың таңдалып алынған критерийіне сəйкес мақсатты функция құрылады. Содан соң математикалық теңдік немесе теңсіздік түрінде осы процесті сипаттайтын өзара бейнеленеді.
Менің өңделіп жатқан курстық жұмысымның мақсаты – транспорттық жұмыс көлемін минимизациялау болып табылады. Есептің тиімді жауабын табу үшін оның тіректі жоспар құру арқылы есептейміз.
Əдетте, экономикалық есептер қою барынша тиімді пайдалануды қажет ететін шектеулі ресурстардың бар екендігін білдіреді. Сондықтан зерделеніп отырған мəселе үшін қандай ресурстардың шешуші болып табылатындығын, олардың қоры қандай екендігін анықтау өте маңызды. Ресурстар бойынша
барлық шектеулер қарама-қайшы болмауы керек. Кейбір шектеулерді есепке алмау алынған шешімнің қолдануға тиімсіз болып қалуына жəне керісінше ресурстар бойынша қатаң шектеулер қою есептің шешімі аясын тым тарылтып жіберуге əкелуі мүмкін. Бұл оңтайлы шешім табу мүмкіндігін жоққа шығарады.
Құралда көптеген теориялық есептер дəлелдемелерсіз берілген жəне əдістер мен алгоритмдерді мысалдармен жəне есептермен көрнекілендіруге баса назар аударылған.
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ
1. Калихман И.Л. Линейная алгебра и линейное программирование. – М.: «Высшая школа», 1967.
2. Бирман И. Оптимальное программирование. – М.: Экономика, 1968.
3. Акулич И.Л. Математическое программирование в примерах и задачах. – М. «Высшая школа», 1986.
4. Ашманов С.А. Линейное программирование. – М.: «Наука», 1981.
5. Таха Х. Введение в исследовании операций. – М.: «Мир», 1985, ч. I, II.
6. Филлипс Д., Гарсиа-Диас А. Методы анализа сетей. – М.: «Мир», 1984.
7. Математические методы в планировании отраслей и предприятий /Под.ред.Попова Н.Ч. – М.: «Экономика», 1975.
8. Иванилов Ю.П., Лотов А.В. Математические модели в экономике. – М.: «Наука», 1979.
9. Замков О.О., Черемных Ю.А., Толстопятенко А.В. Математи- ческие методы в экономике. – М.: «Дело и Сервис», 1999.
10. Исследование операций в экономике /Под ред. Кремера Н.Ш. – М.: «ЮНИТИ», 1997
11. Экономико-математические методы и прикладные модели. Под ред. Федосеева В.В. – М.: ЮНИТИ, 1999.
12. Сабитова Х.К. Математическое программирование. Ч. 1, 2: Методическая разработка. – Алматы: Изд-во КазГУ им. аль-Фараби, 1999.
        
        КІРІСПЕ
Экономикалық талдау мен есептеу əдістерін жетілдіруде зерттеудің математикалық ... ... ... рөл ... Баға ... ... өнім бірлігіне жұмсалатын еңбек пен материалдардың толық шығынын зерделеу, ... ... ... ... ... ... ... орналастырудың тиімділігін анықтау, өндірістік процесті оңтайлы жоспарлау, шектеулі ресурстарды тиімді пайдалану секілді экономикалық проблемалар жəне басқа да ... ... кем емес ... математикалық тəсілдерді кеңінен қолдану арқылы табысты шешіле алады. Мұндай есептер үшін құрамына желілік программалау, динамикалық программалау, ойындар ... жəне ... ... ... ... ... нысандар мен процестердің математикалық модельдерімен бірге кіретін экономикалық-математикалық аппарат əзірленді жəне одан əрі ... Бұл ... ... өнеркəсіптік өндіріс, ауыл шаруашылығы, көлік, экономикалық зерттеулер жəне т.б. секілді ... ... ... кең ... шешуге мүмкіндік беретін желілік программалауды зерделеу экономистің тəжірибелік жұмысында күннен-күнге қажеттілікке айналуда.
Экономикалық есептерді шешудің барлығында да ... ... ... ... атап өткен жөн. Бұл үшін қажетті шарт зерделеніп отырған мəселені сипаттайтын ... мен ... ... деректерінің сандық көрінісі болып табылады. Математикалық модельді құру сандық мəні ... шешу ... ... анықтайтын айнымалылардың кейбір сандарын енгізуден басталады. Оларды х, у жəне т.б. белгілейді. Оңтайлылықтың таңдалып алынған критерийіне сəйкес мақсатты ... ... ... соң ... ... немесе теңсіздік түрінде осы процесті сипаттайтын өзара бейнеленеді.
Менің өңделіп ... ... ... ... - транспорттық жұмыс көлемін минимизациялау болып табылады. Есептің ... ... табу үшін оның ... ... құру ... ... ... экономикалық есептер қою барынша тиімді пайдалануды қажет ететін шектеулі ресурстардың бар екендігін ... ... ... ... ... үшін қандай ресурстардың шешуші болып табылатындығын, олардың қоры қандай екендігін анықтау өте маңызды. Ресурстар бойынша
барлық шектеулер қарама-қайшы болмауы ... ... ... есепке алмау алынған шешімнің қолдануға тиімсіз болып қалуына жəне ... ... ... ... ... қою ... шешімі аясын тым тарылтып жіберуге əкелуі мүмкін. Бұл оңтайлы шешім табу мүмкіндігін жоққа ... ... ... есептер дəлелдемелерсіз берілген жəне əдістер мен алгоритмдерді мысалдармен жəне есептермен көрнекілендіруге баса назар аударылған.
І ... ...
+ ... ... ... - математикалық зерттеу негізінде зерделеніп отырған экономикалық процесті математикалық модельдеу, яғни бұл процестің сандық ... ... ... ... сипаттау жатыр. Математикалық модельдердің көптеген анықтамалары бар. Солардың ішінде, біздің пікірімізше, недəуір дұрыс ... ... ... ... - бұл жасанды құрылған объект өндіріске қатысты модель әр ... ... ... ... ... және ... ... модельдер есептеу барысында модельдеу процессі деп аталады.
Математикалық модель - ... ... ... ... ... ... Оны ... осы құбылыстың мəнін тереңдей ашуға мүмкіндік беретіндей етіп құрас - ... ... ... біз модельдердің құрылуын, оларды зерделеу мен қолдануды түсінеміз. Модельді құрудың бірінші сатысында үш есепті шешу қажет:
- ... ... ...
- негізгі шектеулерді айқындау;
- зерделеп отырған ... ... ... ... ... ... ... есепті шешудің əр түрлі нұсқалары салыстырылатын жəне олардың ішінен ең үздігі ... ... ... ... ... Əр алуан экономикалық есептерде мұндай критерий ретінде барынша жоғары табыс, өндірістің барынша төмен ... жəне ... ... ... ... - дың ... ... шешудегі секілді, транспорттық тапсырманың оңтайлы жоспарын іздестіру де оның ... да бір ... ... ... ... ... тапсырманың бастапқы тірек жоспарын анықтаудың бірнеше əдісі бар. Оның ... - ... ... ... жəне минималды элемент əдісін қарастыралық. Бұл тəсілдердің мəні мынада: тірек жоспары (m+n-1) ... ... ... оның ... ... ... жоспардың искомой матрицасының немесе жолы, немесе бағаны анықталады.
Солтүстік - ... ... ... қадам x11= min(a1,b1), екі жағдай болуы мүмкін: А) a1 PI b1, бұл ... X 11 = a1, X ij = 0, j = 2, n ... ... А1 ... ... ... жүкті тұтынудың В1 бірінші пунктіне бағыттады, яғни толығымен босады, сондықтан да басқа В2,В3 , ...Вn ... А1 ... ... жүктің жіберілуі мүмкін емес. Матрица - жоспардың алғашқы жолы осылайша анықталады, ал бөлуші кестеде ... жол ... ... ... ... сұранысы в1 1 = в1 - х11 тең ... ... ... көшейік. Б) a1>b1 , бұл жағдайда х11 = в1, ал бірінші бағанның қалған элементтері 0 - ге тең, яғни xi1 = 0, i = 2,m , ... ... В ... ... ... қанағаттандырылды, енді оған басқа А2, ...Аm жіберу пункттерінен жүк ... ... - ... ... бағаны осылайша анықталады. Мұнда бөлуші кестедегі бірінші ... ... ал ... А1 ... ... ... а1 1 = а1 - х11 тең болады. Екінші қадамға көшейік. Бірінші қадамға сəйкес А) жағдайында - min( , ) x21 = a2 b1− x11 ... ал Б) ... min( , ) x12 = a1− x11 b2 ... ... ... Бұл ... ... барлық элементтері анықталғанға дейін жалғаса береді.
Теорема. Солтүстік - ... ... ... ... ... ... ... жоспар болып табылады.
Потенциалдар əдісі алдын ала қарастырылған кезеңнен жəне бір типті итерациялардың соңғы ... ... ... ала ... ... ... белгілі əдістердің (солтүстік-батыс бұрыш əдісі, минималды элемент əдісі жəне т.б.) бірі ... ... ... жоспар анықталады. Өз кезегінде, əрбір итерация 2 кезеңге бөлінеді. ... ... ... ... жоспардың оңтайлылығы тексеріледі.
Егер жоспар оңтайлы болса, онда шешу процесі аяқталады, егер оңтайлы болмаса, онда екінші кезеңге өту іске ... ... ... ... ... жаңа тірек жоспары құрылады.
Алдын ал қарастырылған кезеңде қандай да бір X= X ij mxn ... ... ... деп ... ... ... жоспардың оңтайлылығын тексеру. Жоспардың оңтайлылығын тексеру үшін бұл жоспардың бағалаушы матрицасын табу қажет:
C1 = Cij1 mxn = Cij +Ui - Vj ... ... құру үшін Ui және Vj (i =1,m, j =1, n) ... ... ... Олар Cij +Ui -V j = 0 , X ij > 0. (*) мәні үшін бар ... табылады. Бұдан былай бұл элементтерді (X ij > 0) ... деп ... ... ... болғандай, егер X= X ij mxn тудырмаған тірек жоспары ... онда ол ... (m+n-1) ... емес ... ... ... Олардың əрқайсысы үшін (*) қатынасын құрамыз. Теңдіктердің (m+n) ... бар (m+n-1) ... яғни ... ... ... Ui (i = 1,m) және Vj ( j =1,n). Айнымалылардың ... ... мəн бере ... бұл ... ... жеке ... ...
Мысалы, U1 =0, мәнін қойып (m+n-1) белгісіздері бар (m+n-1) теңдеулер ... ... мұны шешу ... ... ... ... табамыз. Потенциалдарды осылайша анықтап алып, жоспардың бағалаушы матрицасын құрамыз.
Егер бағалаушы матрицаның барлық элементтері теріс емес болса, онда Х ... ... ... жəне ... ... ал егер ... ... элементтерінің арасында терістері бар болса, онда жоспар оңтайлы (оптималды) емес жəне ... ... өту ... ... жаңа ... ... құру.Бағалаушы матрицаның теріс элементтерінің арасындаминималды элемент бар. Бұл C rk1 элементі болсын, яғни minC1ij =C rk1 < ... - ... Xrk ... элементі үшін шығыршық құрылады. Шығыршық - бұл тұйық үзік желі, мұның өзектері жолдар мен ... ... ... ал ... ... ... Xrk = ... жəне жоспардың нөлдік емес (базистік) элементі орналасқан. Егер жоспар ... ... ... ... онда оның ... ... емес ... элементі үшін шығыршық құруға болады жəне бұл шығыршық біреу ғана болмақ.
Шығыршықтың жоғарғы жағын Xrk ... ... ... жəне ... ... ... жоғарғы жағында орналасқан жəне белгісімен белгіленген жоспар элементтерінің ішінде ең минималды элементті табу ... яғни ... ... i0j0
θ санын шығыршықтың белгісімен белгіленген элементтеріне қоса ... жəне ... ... ... ала отырып, шығыршық бойымен оның орнын ауыстырамыз. Шығыршыққа енбейтін жоспардың қалған элементтері өзгеріссіз ... ... жаңа ... пайда болады, мұнда Х i0j0 элементі - базистік емес, ал Xrk = θ (бұрынғы базистік емес) ... ... ... ... ... жаңа жоспарда базистік элементтердің саны өзгермейді. Содан кейін 1-кезеңге өтеміз, мұнда ... ... жаңа ... ... ... Бұл үшін оны ... ... құру керек. Мұны, бұрын көрсетілгендей, тірек жоспардың U i (i =1,m) и V j ( j =1, n) ... ... ... ... ... болады. Алайда жаңа жоспарды бағалау матрицасын алдыңғы жоспарды бағалау матрицасын дəлме-дəл қайта жасай отырып құруға болады. Шынымен-ақ, жаңа жоспардың ... ... ... ... ... ... аударайық: мұнда алдыңғы жоспарда базистік болған бір ауыспалы Х i0j0 - ... ... ал ... емес ... Xrk ... ... сипат алады, ал екі жоспардың да қалған базистік ауыспалылары абсолюттік көлемі бойынша ерекшеленсе де, өзара сəйкес келеді.
+ ... ... ... ... ... ... қарқынмен дамып, күнделікті тұрмысқа енуіне байланысты соңғы ... ... ... ... арта ... белгілі. Қазіргі уақытта компьютерсіз қандай да бір жұмыс орындауды көз алдымызға ... ... Бұл ... жұмыс істейтін адамға қандай да бір ұмтылысты тудыруы ... ... ... ... ... тиімді программалық құралдарды жасау - объектілі бағдарланған программалау жүйелерінің ... ... Бұл ... ... ... ... ... кез келген саласындағы бизнес-программа, мультимедия, ойын, мәліметтер қоры сияқты өнімдерді құруға мүмкіндік беретін ... ... ең ... ... ... бірі ... табылады.
Программалау тілін жүзеге асыру саласындағы программа құрумен әлемге әйгілі Borland компониясы 1996 ж. Delphi жаңа ... ... ... Бұл ең ... Windows ... ... ... қатар, қосымша Pascal тілінің қуатты компиляторы болып табылады.
Borland ... аз ғана ... ... Delphi - дің 7 ... ... мен ... модификацияларын шығарды. Delphi 7 версиясында өте көп өзгерістер енгізілген. Программалармен қамтаматсыз етудің тиімді өңдеу құралдарын ... ету ... ... ... деп аталатын программалау жүйелерінің пайда болуына алып келді. Мұндай ортаға мысал ретінде Borland Delphi ... ... ... RAD - ... "Rapid ... Development" жүйесінің негізі визуалды жобалау және оқиғаны өңдеуді программалар технологиясы жатады, оның мағынасы өңдеу үнемсіз ... көп ... ... алады да, программиске диалогты терезелерді және оқиғаны өңдеу функциясын құрастыру ... ... ... ... ... объектіге бағдарлы тілі қолданылады, оның негізіне Object Pascal (Turbo Pascal жалғасы) жатады. Delphi ... ... ... мүмкіндік береді: қарапайым біртерезелі қосымшалардан тармақталған дерек қорларды басқару программаларына дейін. Delphi-дің ұлғайтылған мүмкіндіктері графикпен, мультимедиямен, дерек қорларымен жұмыс істейтін және ... ... ... ... ... береді. Delphi - дің айрықша ерекшелігі .NET ... ... ... ... құру жүйесінің негізіне (RAD - Rapid Application Development - қосымшаларды жылдам құру ... ... ... мен ... объектілі бағдарланған программалау технологиясы алынған. Мұндай программалаудың мәні - ... ... ... жұмыстың көп бөлігін өзі атқарып, программистке диалог терезелерін құрастыру мен оқиға өңдеушіні құру жұмыстарын қалдырды. RAD жүйелерінің ... Borland Delphi және Visual Basic ... ... ... ... ... ... қарапайым бір терезелік қосымшалардан бастап, үлестірілген мәліметтер қорын басқару программаларына дейін. Borland Delphi ортасындағы программалау тілі Object Pascal тілі.
Программалау іскерлігін ... үшін ... ... ... ... жаза білу қажет. Ол үшін программалау тілі мен оны құру ... ... ... ... бағдарланған программалау жүйелерінде программалаудағы негізгі ерекшелік алдымен программалау ... мен ... ... ... болып табылады.
Программа құрастырылғанда және орындалғанда компоненттің сыртқы көрінісін және бет алысын қасиеттер арқылы басқаруға болады. Компоненттің ... ... ... ... ... ... қалыптастыру кезеңінде анықтауға болады. Жалпы компоненттің қасиеттер мәнін меншіктеу операторымен анықтауға да болады.
Қазіргі ... ... ... технологияларының өте мықтылығына қарамастан, егер программаның жобасын жасауға, шешілуге тиісті мәселелерді анықтау кезеңіне барынша назар ... ... ... соңында оны жөндеуге көп уақыт кетуі мүмкін. Егер программа құрылымы, жобасы дұрыс келістірілмеген болса, программаға жаңа функция енгізу немесе ондағы ... ... ... қаржы шығынына да ұшыратуы мүмкін.
ІІ АРНАЙЫ БӨЛІМ
2.1 Транспорттық жұмыс көлемін минимизациялау есебінің экономикалық және математикалық ... ... ... моделі: жөнелтілу пункттері болып А1 совхозы және үш колхоз А2, А3 және А4 болып табылады. Жеткізу пункттері болып - ... ... ... сүт ... ... ... В1, В2, В3. ... бір күнде тасымалдау керек, бірінші пункттен 20 ... ... ... 17 тонна, үшінші пункттен 13 тонна, ал төртінші пункттен 22 тонна. Сүт белгіленген пунктке келесідей көлемде жеткізілуі керек: ... ... - 25 ... ... пунктке - 28 тонна, үшіншіге - 19 тонна. Барлық сүт қалалаық сүт зауытына жеткізілетіндей және ... ... аз ... ... сүт және ... сүт зауыттарын әрбір совхоздан және колхоздан аудару екенін анықтау керек. Мынадай мәліметтер белгілі болсын: егер А1 ... В1, В2, В3 сүт ... ... ара ... - 6, 5, 3 км., А2 колхозынан - 4, 2, 5 км., А3 ... - 3, 7, 1 км. Және А4 ... - 6, 4, 5 ... ... өткендей, құрылған транспорттық есептің ең бірінші экономикалық моделін құрамыз, одан соң математикалық моделін құрамыз.
Берілген есептің экономикалық және ... ... ... Өндірушіден тұтынушыға ai қорларын bj қажетті қорын тиімді жеткізу. Сонымен қатар ... ... ... минимизациялау.
Транспорттық есептің математикалық моделін құру үшін Xij айнымалысын енгіземіз. Xij - тауар саны болып ... ... ... құру 4 ... турады:
* F=i=1mj=1nCijXij-->min
* j=1mXij=Cij
* i=1nXij=bj
* Xij>=0
Мақсатты функция әр есептің толық мақсатын білдіреді.
∑a = 20 + 17 + 13 + 22 = ... = 25 + 28 + 19 = ... ... қорлар мен жалпы қорлар саны тең. Бұл жағдайда транспорттық есептің моделі жабық деп саналады.
Есепте берілген мәліметтерді матрица ... ... ... ... 1 Қорлар мен қажетті қорлар саны
a b
b1
b2
b3
Қорлар
a1
6
5
3
20
a2
4
2
5
17
a3
3
7
1
13
a4
6
4
5
22
Қажетті қор
25
28
19
72
2.2 Есепті математикалық әдіспен ... ... ... ... құру ... пайдаланамыз. Бұл әдістің мақсаты - құрылған ... ... ... ең аз ... ... бастау. Яғни, тауарды уақытымен және жол шығынын азайта отырып, ... ... ... ... тіректі жоспарды құрамыз:
Кесте 2
a b
b1
b2
b3
Қорлар
a1
6[14]
5
3[6]
20
a2
4
2[17]
5
17
a3
3
7
1[13]
13
a4
6[11]
4[11]
5
22
Қажетті қор
25
28
19
72
Нәтижесінде, бірінші тіректі жоспар ... ... ... ... және жол шығынын азайту қанағаттандырылды, ал жоспар транспорттық есептің шектеулі жүйесіне сәйкес.
Бұл тіректі жоспарының ... ... ... = 6*14 + 3*6 + 2*17 + 1*13 + 6*11 + 4*11 = 259 ... кезеңде тіректі жоспардың тиімділігін тексереміз. Құрылған кесте ішінен Ui Vj ... ... Ең ... бос емес ... ... UI + VJ = CIJ , u1 = ... + V1 = 6; 0 + V1 = 6; V1 = 6
U4 + V1 = 6; 6 + U4 = 6; U4 = 0
U4 + V2 = 4; 0 + V2 = 4; V2 = 4
U2 + V2 = 2; 4 + U2 = 2; U2 = -2
U1 + V3 = 3; 0 + V3 = 3; V3 = 3
U3 + V3 = 1; 3 + U3 = 1; U3 = -2 ... ... бос ... ... UI + VJ >= ... -2 + 6 > 3; ∆31 = -2 + 6 - 3 = 1 ... торлар ішінен максималды санды таңдаймыз (3;1): 3
Цикл құрамыз, көп жағдайда тіктөртбұрыш ... ... ... бұрышы бос торда орналасуы қажет. Ал қалғандары бос емес торларды орналасады. Бос торға белгісін қоямыз әрі ... ... ... таңбасы тұрған торлар арасынан минималды анықтаймыз ϑ(тетта) болады. Жаңа кесте құрғанда таңбасы тұрған жерге ϑ - ны ... ал ... ... ... ϑ-ны ... 4
a b
b1
b2
b3
Қорлар
a1
6[14][-]
5
3[6][+]
20
a2
4
2[17]
5
17
a3
3[+]
7
1[13][-]
13
a4
6[11]
4[11]
5
22
Қажетті қор
25
28
19
72
ϑ=min "-"=min14;13=13
Нәтижесінде бірінші жоспар тиімсіз, ... шарт ... жоқ, ... ... ... да ... жаңа тіректі жоспар пайда болады.
Кесте 5
a b ... ... жаңа ... ... Ui Vj ... ... Бос емес және бос торлар үшін: UI + VJ = CIJ , UI + VJ >= CIJ, u1 = ... + v1 = 6; 0 + v1 = 6; v1 = 6
u3 + v1 = 3; 6 + u3 = 3; u3 = -3
u4 + v1 = 6; 6 + u4 = 6; u4 = 0
u4 + v2 = 4; 0 + v2 = 4; v2 = 4
u2 + v2 = 2; 4 + u2 = 2; u2 = -2
u1 + v3 = 3; 0 + v3 = 3; v3 = 3 ... ... ... UI + VJ '9') ... := #0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0] := 'Ìàãàçèíû';
StringGrid1.Cells[0,1] := 'Ñêëàäû';
StringGrid1.Cells[1,1] := 'Íàëè/èå \ ... fData, ... 0 ... := ... := TList.Create;
fMouseState := 0;
end;
procedure TForm1.Button2Click(Sender: TObject);
function GetInt( x, y: integer ): integer;
begin
Result := StrToInt( StringGrid1.Cells[ x, y ] ... index2, s, old_s: ... plan, ... TData;
begin
Memo1.Lines.Clear;
// Ïðî/èòàòü äàííûå èç ãðèäà
data := TData.Create;
data.Width := StringGrid1.ColCount-2;
data.Height := StringGrid1.RowCount-2;
for index := 0 to data.Height-1 do
for index2 := 0 to ... ... := GetInt( ... index+2 ... index := 0 to ... ... := GetInt( index+2, 1 ... index := 0 to data.Height-1 do
data.Left[index] := GetInt( 1, index+2 );
plan := TData.Create;
potential := ... 'Data' ... data, 7 ... 'Plan:' ... data, plan ... plan, 1 );
Memo1.Lines.Add( 'Sum: ' + IntToStr( CalcSum(data, plan) ) ); {}
{ CalcMinEl( data, plan ... plan, 7 ... 'Sum: ' + ... CalcSum(data, plan) ) ); {}
old_s := 0;
while (true) do
begin
CalcPotential( data, plan, potential );
Memo1.Lines.Add( 'Potential:' );
Dump( potential, 1 ); {}
if (potential.Min >= 0) ... ... ... data, plan, potential );
s := CalcSum(data, plan);
Memo1.Lines.Add( 'res:' );
Dump( plan, 1 );
Memo1.Lines.Add( 'Sum: ' + ... ); ... (old_s = s) ... := ... TData }
procedure TData.Assign(data: TData);
var
index, index2: integer;
begin
AssignLT( data );
for index := 0 to Height-1 ... index2 := 0 to Width-1 ... := ... ... ... ... := ... := data.Height;
for index := 0 to Width-1 do
Top[index] := data.Top[index];
for index := 0 to Height-1 do
Left[index] := ... ... ... TData): boolean;
var
s, index: integer;
begin
s := 0;
for index := 0 to ... do
s := s + ... index := 0 to ... do
s := s - ... := s = 0; // Èëè òóò ... ... ... ... data: TData; var plan: ... index2, t: ... := 0;
index2 := 0;
plan.AssignLT( data );
while (index < plan.Height) and (index2 < plan.Width) do
begin
t := min( ... ... ... := ... := ... := ... (plan.Top[index2] = 0) then
index2 := index2+1;
if (plan.Left[index] = 0) then
index := index+1;
end;
end;
procedure TForm1.Dump(data: TData; fl: ... i2s( i: integer ): ... ... := ... i ... ... < 3 ) do
r := ' ' + ... := r;
end;
var
index, index2: integer;
s: string;
begin
// top
if ((fl and 2) 0) ... := ' ... index := 0 to ... do
s := s + i2s( ... ... s );
end;
if ((fl and 5) = 0) then
exit;
for index := 0 to data.Height-1 do
begin
// left
if ((fl and 4) 0) ... := i2s( ... ... := ... ... ((fl and 1) 0) then
for index2 := 0 to data.Width-1 do
s := s + i2s( data.Arr[index2,index] ... s ... ... ... c( x, y: integer; s: string );
begin
StringGrid1.Cells[ x, y ] := ... := ... := ... ... 2, 1, '5' ... 3, 1, '9' ... 4, 1, '9' ... 5, 1, '7' );
// left
c( 1, 2, '11' );
c( 1, 3, '11' ... 1, 4, '8' ... ... 2, 2, '7' ... 3, 2, '8' );
c( 4, 2, '5' );
c( 5, 2, '3' ... 2, 3, '2' ... 3, 3, '4' ... 4, 3, '5' ... 5, 3, '9' ... 2, 4, '6' );
c( 3, 4, '3' );
c( 4, 4, '1' );
c( 5, 4, '2' ... ... plan: TData): ... index2, s: ... := 0;
for index := 0 to data.Height-1 do
for index2 := 0 to data.Width-1 do
s := s + data.Arr[index2,index] * plan.Arr[index2, ... := ... ... ... c( x, y: integer; s: string ... x, y ] := ... := ... := 5;
// top
c( 2, 1, '20' );
c( 3, 1, '12' ... 4, 1, '5' ... 5, 1, '8' ... 6, 1, '15' ... ... 1, 2, '15' ... 1, 3, '25' );
c( 1, 4, '20' );
// mid
c( 2, 2, '1' );
c( 3, 2, '0' ... 4, 2, '3' ... 5, 2, '4' ... 6, 2, '2' ... 2, 3, '5' ... 3, 3, '1' ... 4, 3, '2' ... 5, 3, '3' );
c( 6, 3, '3' );
c( 2, 4, '4' ... 3, 4, '8' ... 4, 4, '1' ... 5, 4, '4' ... 6, 4, '3' ... ... integer;
var
index, index2, m: integer;
begin
m := MaxInt;
for index := 0 to Height-1 do
for index2 := 0 to Width-1 ... (m > ... ... := ... := m;
end;
function TData.NoNulls: integer;
var
index, index2, c: integer;
begin
c := ... index := 0 to Height-1 ... index2:= 0 to Width-1 ... ... > 0) then
inc(c);
Result := c;
end;
procedure TForm1.CalcMinEl( data: TData; var plan: TData ... index2, x_m, y_m, v_m, s, v: ... := ... data ... index := 0 to ... do
s := s + ... (s > 0) do
begin
v_m := MaxInt;
x_m := -1;
y_m := -1;
for index := 0 to plan.Height-1 do
for index2 := 0 to ... ... ((v_m > ... ... = 0) ... > 0) and ... > 0)) then
begin
v_m := data.Arr[index2,index];
x_m := index2;
y_m := index;
end;
if (v_m = MaxInt) then
break;
v := min( plan.Top[ x_m ], plan.Left[ y_m ] ... x_m ] := ... x_m ] - ... y_m ] := ... y_m ] - ... x_m, y_m ] := v;
s := s - ... ... Left, sizeof(Left), 0 );
FillChar( Top, sizeof(Top), 0 );
FillChar( Arr, sizeof(Arr), 0 );
end;
{ TEqSolve }
procedure TEqSolve.AddEq( p1,p2,s : integer );
begin
Eq[ fEqCount ].p1 := ... fEqCount ].p2 := p2 + ... fEqCount ].sum := ... fEqCount ].solved := false;
Form1.Memo1.Lines.Add( 'u' + IntToStr(p1+1) + ' + v' + IntToStr(p2+1) +
' = ' + IntToStr( s ) ); ... fEqCount ... ... h, v_c: integer ... Eq, sizeof(Eq), 0 );
FillChar( fV, sizeof(fV), 0 );
fEqCount := 0;
fVarCount := ... := ... ... ... ... := ... ... integer): TVar;
begin
Result := fV[index+fH];
end;
procedure TEqSolve.Solve;
var
non_solved, index, c: integer;
ceq: ^TEquation;
begin
FillChar( fV, sizeof(fV), 0 );
non_solved := fVarCount-1;
fV[0].v := ... := ... ... > 0) ... := ... index := 0 to fEqCount-1 do
begin
ceq := @Eq[index];
if (ceq.solved) then ... (fV[ ceq.p1 ... ... ceq.p2 ].v := ceq.sum - fV[ ceq.p1 ... ceq.p2 ].solved := ... := ... if (fV[ ceq.p2 ... then
begin
fV[ ceq.p1 ].v := ceq.sum - fV[ ceq.p2 ].v;
fv[ ceq.p1 ].solved := true;
inc(c);
ceq.solved := true;
end;
end; // for
if (c = 0) ... ... TData; var plan, x: ... to_sign( v: integer ): ... (v = 0) ... := 1
else
Result := -1;
end;
var
index, index2, t: integer;
solve: TEqSolve;
s: string;
begin
solve := TEqSolve.Create( plan.Height, plan.Height + plan.Width );
for index := 0 to ... ... index2 := 0 to ... ... ... > 0) then
solve.AddEq( index, index2, data.Arr[index2,index] );
{ solve.AddEq( 0, 1, data.Arr[1,0] ); {}
index := 0;
index2 := 0;
while ... < ... + ... ... (index2 = plan.Width) then
begin
index2 := 0;
inc( index );
if (index = ... ... // wtf ... (plan.Arr[index2,index] = 0) then
solve.AddEq( index, index2, data.Arr[index2,index] );
end; {}
solve.Solve;
{ debug }
s := 'u: ... index := 0 to ... do
s := s + ' ' + ... ... ... s );
s := 'v: ... index := 0 to ... do
s := s + ' ' + IntToStr( solve.V[index].v );
Form1.Memo1.Lines.Add( s );
x.Reset;
x.AssignLT( data );
for index := 0 to ... ... index2 := 0 to ... ... ... = 0) ... := (solve.V[index2].v + solve.U[index].v); // * to_sign( (index+index2) and 1 ... := ... - ... ... ... data, plan, ... TData ... y_m, v_m, f, f2: integer;
a: TData;
flag: boolean;
procedure Line( x, y, vert, val: integer );
begin
if (vert = 1) then y := ... x := ... (x < ... and (y >= 0) { ... } and (not flag) do
begin
if (plan.Arr[x,y] 0) and (a.Arr[x,y] = 0) ... := ... (x = x_m) and (vert = 0) ... := ... (vert = 1) then ... ... ... Find( var x, y: integer; vert, val: integer ... (vert = 1) then y := 0
else x := ... (x < ... and (y < ... do
begin
if a.Arr[x,y] = val then
break;
if (vert = 1) then ... ... index2, x1, y1: ... array [0..100] of ... path, ... 0 );
x_m := -1;
y_m := -1;
v_m := ... index := 0 to ... ... index2 := 0 to ... ... ... < v_m) then
begin
x_m := index2;
y_m := index;
v_m := ... := ... plan ... := 1;
flag := false;
f := 1;
while not flag do
begin
for index := 0 to ... ... index2 := 0 to ... ... ... = f) then
begin
Line( index2, index, (f+1) and 1, f+1 );
{ ... 'path (' + ... + '):' ... a, 1 ); {}
end;
inc( f );
end; {}
Memo1.Lines.Add( 'path: ');
Dump( a, 1 );
x1 := x_m;
y1 := y_m;
f2 := ... (f >= 0) ... := ... := ... x1, y1, (f+1) and 1, f ... := MaxInt;
x_m := -1;
index := 1;
while (index < f2) ... := ... ... ... ... (f < v_m) ... := f;
x_m := index;
end;
inc(index,2);
end;
// add/sub vals
for index := 0 to f2-1 do
begin
f := plan.Arr[ path[index].x, path[index].y ... ( (index and 1) = 0 ) then f := f + ... f := f - ... ... ... ] := f;
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
procedure c( x, y: integer; s: string ... x, y ] := ... := ... := ... ... 2, 1, '20' ... 3, 1, '80' ... 4, 1, '90' );
c( 5, 1, '60' );
c( 6, 1, '40' ... ... 1, 2, '40' ... 1, 3, '150' ... 1, 4, '100' ... ... 2, 2, '7' ... 3, 2, '3' );
c( 4, 2, '5' );
c( 5, 2, '4' );
c( 6, 2, '2' );
c( 2, 3, '6' ... 3, 3, '2' ... 4, 3, '3' ... 5, 3, '1' );
c( 6, 3, '7' );
c( 2, 4, '3' );
c( 3, 4, '5' );
c( 4, 4, '2' ... 5, 4, '6' ... 6, 4, '4' ... ... TObject; Shift: TShiftState; X,
Y: Integer);
var
fig: TFigure;
begin
if (fMouseState = 1) then
begin
fig := ... := ... := ... if ... = 2) ... := fFigures.Items[fMouseInd];
Redraw;
PaintBox1.Canvas.MoveTo( fig.x, fig.y );
PaintBox1.Canvas.LineTo( x, y );
end;
end;
procedure ... TObject; Button: ... ... X, Y: ... ... := fMouseState;
fMouseState := 0;
if (i = 2) then
begin // drag&check line
i := IsOver( x,y );
Redraw;
if (i < 0) ... ... i ... ... ... c1, c2: ... fig2: TFigure;
l: TLine;
begin
c1 := 0;
c2 := 0;
for index := 0 to fFigures.Count-1 ... := ... ... = 0) ... := c2 + ... := c1 + 2;
c1 := 0;
c2 := 0;
StringGrid1.Cells[1,c1+2] := ... fig.val ... := ... c1 ... ... ... 1 - ... жұмыс көлемін минимизациялауға арналған қосымша
Сурет 2 - ... ... ... ...

Пән: Транспорт
Жұмыс түрі: Курстық жұмыс
Көлемі: 23 бет
Бұл жұмыстың бағасы: 1 300 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
Анатомиялық терминдердің латын тілінде дәріптелуі жөнінде5 бет
Бюджеттік жүйенің қызмет етуін құқықтық қамтамасыз ету70 бет
Тасмағамбетов Иманғали Нұрғалиұлы4 бет
Транспорттагы төтенше жағдайлар. транспорттық оқиғаларды топтастыру. соғыс және бейбіт уақытындағы жаппай зақымдау құралдарының түрлері10 бет
Логикалық функциялар туралы15 бет
Толық анықталмаған функцияларды минимизациялау4 бет
Толық анықталмаған функцияларды минимизациялау Компьютерлік схемотехниканың тізбекті (жинақтаушы) түйіндері: регистрлер, санауыштар9 бет
100 көлеміндегі сандарды көбейту мен бөлу20 бет
«Жамбыл» ЖШС жері егістік алқаптарының пішіні және көлемін қайта орналастыруын анықтау60 бет
Бірінші сыныпта он көлеміндегі сандарды оқыту19 бет


+ тегін презентациялар
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь