|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Paul Lyakhnitskiy 2:460/120.90 14 May 2003 04:15:05 To : Domashenko Alexey Subject : Задача календаpного планиpования -------------------------------------------------------------------------------- Было дело в понедельник 12 Мая 2003 17:32, Domashenko Alexey писал Vladimir Andreyev: VA>> всё смахивает на задачу исследования VA>> опеpаций, а именно - линейного пpогpаммиpования. DA> Я тоже так думаю, но дело в том, что у меня DA> не получается даже составить мат. модель :-(. Друзья, линейное программирование оперирует линейными функциями, а у вас - дискретные, причем с малым количеством возможных перестановок (всего 720). IMHO решается элементарным перебором. Зачем все усложнять? DA>>> Есть 5 аппаpатов. Hужно pаспланиpовать DA>>> их pемонт в течении 8 недель. DA>>> Каждый аппаpат нужно pемонтиpовать 3 недели. DA>>> Затpаты тpуда на pемонт каждого аппаpата из таблицы: DA> |.1.|.4.7.3.|.1.|.4.| DA> |.2.|.3.1.5.|.1.|.3.| DA> |.3.|.6.1.1.|.2.|.5.| DA> |.4.|.2.3.6.|.2.|.6.| DA> |.5.|.5.2.4.|.3.|.5.| DA> Т.е. ремонт 1 апп-та нужно начинать DA> не раньше 1 недели и не позже 4! DA> Hужно минимизировать максимальное DA> количество рабочей силы в течении любой недели! вот решение: ДДД Тут начинается файл perebor.pas ДДД type tg = array[1 .. 8] of byte; en1 = 1..4; en2 = 1..3; en3 = 2..5; en4 = 2..6; en5 = 3..5; const x1:array[en1] of tg = ( (4,7,3,0,0,0,0,0),(0,4,7,3,0,0,0,0), (0,0,4,7,3,0,0,0),(0,0,0,4,7,3,0,0)); x2:array[en2] of tg = ( (3,1,5,0,0,0,0,0),(0,3,1,5,0,0,0,0), (0,0,3,1,5,0,0,0)); x3:array[en3] of tg = ( (0,6,1,1,0,0,0,0),(0,0,6,1,1,0,0,0), (0,0,0,6,1,1,0,0),(0,0,0,0,6,1,1,0)); x4:array[en4] of tg = ( (0,2,3,6,0,0,0,0),(0,0,2,3,6,0,0,0), (0,0,0,2,3,6,0,0),(0,0,0,0,2,3,6,0), (0,0,0,0,0,2,3,6)); x5:array[en5] of tg = ( (0,0,5,2,4,0,0,0),(0,0,0,5,2,4,0,0), (0,0,0,0,5,2,4,0)); function MaxRes(a1:en1;a2:en2;a3: en3;a4:en4;a5:en5):byte; var i:byte; x,max:byte; begin max:=0; for i:=1 to 8 do begin x:=x1[a1][i]+x2[a2][i]+ x3[a3][i]+x4[a4][i]+x5[a5][i]; if x>max then max:=x; end; MaxRes:=max; end; procedure MinMax; var a1,a2,a3,a4,a5, o1,o2,o3,o4,o5, r,y:byte; begin r:=255; for a1:=1 to 4 do for a2:=1 to 3 do for a3:=2 to 5 do for a4:=2 to 6 do for a5:=3 to 5 do begin y:=MaxRes(a1,a2,a3,a4,a5); if y<r then begin r:=y; o1:=a1; o2:=a2; o3:=a3; o4:=a4; o5:=a5; end; end; writeln('Минимум затрат в неделю ',r); writeln('получен при начале ремонта аппаратов:'); writeln('аппарат | 1 | 2 | 3 | 4 | 5 |'); writeln('нач.рем. | ',o1,' | ', o2,' | ',o3,' | ',o4,' | ',o5,' | '); end; begin MinMax; end. ДДД А здесь perebor.pas кончается ДДД Всего доброго! Павел. (e-mail: pil@ecc.crimea.ua) --- GoldED 2.5 may be UNREG * Origin: Место для плюса: [ ] :( (2:460/120.90) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/222953ec1d147.html, оценка из 5, голосов 10
|