Автор: Пользователь скрыл имя, 27 Февраля 2012 в 16:38, курсовая работа
В современном мире невозможно представить не одно предприятие не стремящееся повысить свою прибыль и сократить растраты, возникающие в процессе производства. В данной работе рассматривается минимизация затрат на ремонтно-восстановительные работы оборудования. Достаточно большие потери на производстве возникают из-за простоя вышедшего из строя оборудования, и, зачастую, их можно сильно сократить, определив последовательность и виды выполнения ремонтных работ. Проведение восстановительных работ зависит от многих факторов, например, от стоимости и доступности ресурсов.
Реферат 3
Введение 4
1. Постановка задачи 5
2. Теоретические основы сетевого планирования 6
3. Описание метода решения 12
4. Оптимизация сетевого графика 16
Заключение 19
Список использованной литературы 20
Приложение 1 21
Для реализации принципа непрерывности запроектированного технологического процесса были обеспечены нулевые резервы времени у всех бригад исполнителей.
Список использованной литературы
1. Кудрявцев Е.М. Microsoft Project. Методы сетевого планирования и управления проектом. – М.: ДМК Пресс, 2005. – 240 с., ил.
2. Блюмин С.Л., Шуйкова И.А., Сараев П.В., Черпаков И.В. Нечеткая логика: алгебраические основы и приложения: - Липецк: ЛЭГИ, 2002. - 113 с.
3. Разумов И. М. Сетевые графики в планировании. М., 1981.
4. Зуховицкий С. И., Радчик И. А., Математические методы сетевого планирования, М., 1965
Приложение 1
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, XPMan, StdCtrls, Grids, ComCtrls, Buttons, Mask;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
StringGrid1: TStringGrid;
TabSheet2: TTabSheet;
Label1: TLabel;
StringGrid2: TStringGrid;
TabSheet3: TTabSheet;
StringGrid3: TStringGrid;
TabSheet4: TTabSheet;
StringGrid4: TStringGrid;
Label2: TLabel;
Label3: TLabel;
StringGrid5: TStringGrid;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
StringGrid6: TStringGrid;
Button3: TButton;
Label8: TLabel;
procedure FormCreate(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure draw;
procedure remove(temp:integer);
procedure Decision;
procedure WorkR;
procedure recom;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
max=30;
var
Form1: TForm1;
x1,y1,x2,y2: integer;
n,num,road,arc,index,crit:
st,st_crit:string;
peak:array [1..max] of tpoint;
work:array [1..max,1..max] of integer;
flL,flR,FLAG:boolean;
k: array [1..30] of real;
w: array [1..30] of byte;
min: real;
W_max,W_m: integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
stringgrid1.Cells[0,0]:='Дуга'
stringgrid1.Cells[1,0]:='Наиме
stringgrid1.Cells[2,0]:='Вес дуги';
stringgrid2.Cells[0,0]:='Путь'
stringgrid2.Cells[1,0]:='Продо
stringgrid2.Cells[2,0]:='Резер
stringgrid3.Cells[0,0]:='Событ
stringgrid3.Cells[1,0]:='tр(i)
stringgrid3.Cells[2,0]:='tп(i)
stringgrid3.Cells[3,0]:='Резер
stringgrid4.Cells[0,0]:='Дуга'
stringgrid4.Cells[1,0]:='t(i,
stringgrid4.Cells[2,0]:='tрн(
stringgrid4.Cells[3,0]:='tро(
stringgrid4.Cells[4,0]:='tпн(
stringgrid4.Cells[5,0]:='tпо(
stringgrid4.Cells[6,0]:='Rп';
stringgrid4.Cells[7,0]:='Rч_1'
stringgrid4.Cells[8,0]:='Rч_2'
stringgrid4.Cells[9,0]:='K';
stringgrid4.Cells[10,0]:='Wл';
stringgrid6.Cells[0,0]:='№ ит.';
stringgrid6.Cells[0,1]:='SumRп
stringgrid6.Cells[0,2]:='Wлюд'
stringgrid5.Visible:=False;
FLAG:=false;
Label1.Visible:=False;
tabsheet1.Show;
image1.Canvas.Pen.Width := 2;
image1.Canvas.Brush.Color:=
flL:=false;
flR:=false;
for i:=1 to max do
for j:=1 to max do
work[i,j]:=-1;
n:=1;
num:=0;
road:=0;
arc:=0;
peak[1].x:=30;
peak[1].y:=120;
image1.Canvas.Ellipse(peak[1].
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i,j:integer;
begin
if button=mbLeft then
begin
flL:=false;
index:=0;
for i:=1 to max do
begin
if ((peak[i].x=0) and (peak[i].y=0)) then continue;
if sqr(x-peak[i].x)+sqr(y-peak[i]
end;
if ((index=0) and (n<max)) then
begin
i:=2;
image1.Canvas.Ellipse(x-20,y-
while ((peak[i].x<>0) and (peak[i].y<>0)) do inc(i);
peak[i].x:=x; peak[i].y:=y;
inc(n);
image1.Canvas.TextOut(x-5,y-5,
end;
if index<>0 then flL:=true;
end;
if button=mbRight then
for i:=2 to max do
begin
if ((peak[i].x=0) and (peak[i].y=0)) then continue;
if sqr(x-peak[i].x)+sqr(y-peak[i]
end;
if button=mbMiddle then
begin
for i:=2 to max do
begin
if ((peak[i].x=0) and (peak[i].y=0)) then continue;
if sqr(x-peak[i].x)+sqr(y-peak[i]
begin
for j:=1 to max do
if work[i,j]<>-1 then flR:=true;
if flR=false then num:=i;
flR:=false;
end;
end;
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
t,i:integer;
begin
if ((ssLeft in Shift) and (flL=true)) then
begin
draw;
image1.Canvas.Pen.Color:=
image1.Canvas.MoveTo(peak[
image1.Canvas.LineTo(x,y);
image1.Canvas.Pen.Color:=
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var t,i:integer;
begin
t:=0;
if flL=true then
begin
for i:=1 to max do
begin
if ((peak[i].x=0) and (peak[i].y=0)) then continue;
if sqr(x-peak[i].x)+sqr(y-peak[i]
end;
if ((t>1)and(work[t,index]=-1)
begin
work[index,t]:=0;
inc(arc);
if index<10 then st:='0'+inttostr(index)+','
else st:=inttostr(index)+',';
if t<10 then st:=st+'0'+inttostr(t)
else st:=st+inttostr(t);
stringgrid1.RowCount:=arc+1;
stringgrid1.Cells[0,arc]:=st;
stringgrid1.Cells[1,arc]:='Раб
stringgrid1.Cells[2,arc]:='0';
end;
flL:=false;
end;
flR:=false;
ClipCursor(NIL);
draw;
end;
procedure TForm1.Draw;
var t:real;
xt,yt,i,j:integer;
begin
PatBlt(image1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
for i:=1 to max do
for j:=1 to max do
if work[i,j]=-1 then continue else
begin
image1.Canvas.MoveTo(peak[i].
image1.Canvas.LineTo(peak[j].
image1.Canvas.pen.Width:=2;
if peak[j].x-peak[i].x=0 then inc(peak[j].x);
t:=arctan((peak[j].y-peak[i].
if peak[j].x-peak[i].x=1 then dec(peak[j].x);
if peak[j].x-peak[i].x>0 then
begin
xt:=round(peak[j].x-25*cos(t))
yt:=round(peak[j].y-25*sin(t))
end
else
begin
xt:=round(peak[j].x+25*cos(t))
yt:=round(peak[j].y+25*sin(t))
end;
image1.Canvas.Ellipse(xt-3,yt-
end;
for i:=1 to max do
begin
if ((peak[i].x=0) and (peak[i].y=0)) then continue;
if i=num then image1.Canvas.Pen.Color:=
image1.Canvas.Ellipse(peak[i].
image1.Canvas.TextOut(peak[i].
image1.Canvas.Pen.Color:=
end;
end;
procedure TForm1.Remove(temp:integer);
var
i,j,k:integer;
stroka:string[2];
begin
num:=0;
peak[temp].x:=0;
peak[temp].y:=0;
if arc<10 then stroka:='0'+inttostr(temp)
else stroka:=inttostr(temp);
for i:=1 to arc do
begin
j:=pos(stroka,stringgrid1.
if j>0 then
begin
dec(arc);
stringgrid1.Cells[0,i]:='';
stringgrid1.Cells[1,i]:='';
stringgrid1.Cells[2,i]:='';
end;
end;
for i:=1 to arc do
if stringgrid1.Cells[0,i]='' then
begin
j:=i+1;
while stringgrid1.Cells[0,j]='' do inc(j);
stringgrid1.Cells[0,i]:=
stringgrid1.Cells[1,i]:=
stringgrid1.Cells[2,i]:=
stringgrid1.Cells[0,j]:='';
stringgrid1.Cells[1,j]:='';
stringgrid1.Cells[2,j]:='';
end;
if arc<>0 then stringgrid1.RowCount:=arc+1;
for j:=1 to max do
begin
work[temp,j]:=-1;
work[j,temp]:=-1;
end;
dec(n);
draw;
end;
procedure TForm1.Decision;
var i,j,t,temp,tmp,tp,tn:integer;
mas:array [1..max] of byte;
sttmp:string[2];
begin
if num=0 then
begin
showmessage(' Задайте конечную вершину ');
exit;
end;
Try
for i:= 1 to arc do
work[strtoint(copy(
Except
begin
showmessage(' Ошибка в задании работ ');
exit;
end;
end;
road:=0;
st:='01';
t:=1;
for i:=1 to max do mas[i]:=1;
for i:=2 to max do
begin
if ((peak[i].x=0)and(peak[i].y=0)
if work[1,i]<>-1 then temp:=i;
end;
Try
while mas[1]<=temp do
begin
while t<>num do
begin
j:=mas[t];
while work[t,j]=-1 do inc(j);
mas[t]:=j;
if j<10 then sttmp:='0'+inttostr(j)
else sttmp:=inttostr(j);
if pos(sttmp,st)>0 then