procedure BitBtn1ClickSender: TObject; procedure SpEdtChangeSender: TObject; procedure FormCreateSender: TObject; procedure BitBtn5ClickSender: TObject; procedure BitBtn2ClickSender:
Trang 200 ; 9 ' & & &
Trang 26* % * * 1 % @ " Y % + 2
Trang 33= +
KML K "# K\ V9 KML V "# K≤ V
!ML ! "# !\ V9 !ML V "# !≤ V
Trang 357 "# & V D&Ib δ ( * & → &I ! → M∞
Trang 36J; - 4 6 , ; - ! : , & 1 & & ; #
+ + &+
Trang 45! 6
∑
=+
$7
Trang 47! 66
% " / 6 # " )& ! $ < + M " / 9%) # :# :8 :# #$ ! ' 0( 6 / ' & ' +& ! " #$ % #& # 9%) # :# " #$ % !( ' & ' / " N& # 8 ( ! !& 0 # " / 9%) # :# $ # & : = # ( / !
Trang 55! ;
/& # + # / / " N& 0( #$ "%+ # % # / "& # ( ! ^ !
8 ( ! 8 +8 N&< # ) _' + ` #$ # / /& # + $ /& $ 6 / (
#M " 48 & " 48 " & $ # & " # #$ 6 :% 9 ! # * # ( & :
+% #M
8 & & # 0() "& : N < ! & # & # 9 6 / 9 # = ! & ! " #$ % #& $ # # M 8 /& # + 8 !< 0( + 6 / : 0 !< + # * " / : !& ! +&< : 0 ! () 6& #S :# 6 /& # + !& ) + 9 # = $ # 9 = #$ ! "3 6( /% a.5ba b
Trang 60∂ +
Trang 62∂ +
Trang 636 6
D6
' ! 9 /9+(
Trang 64∂ +
Trang 78$
Trang 79,-' /G &* 7& 5 6 % #@ #A ,! ,4 (#H % % ! %+E I,D = 9 5+&$' (#) ' ,4 % $ D $' B % " ! 5 (#) J +& % #*
Trang 82= >N#@ % , 0 E Q #* " % ,A" L>J
S > R,4 Q #@ ' @# +& % #* 4 + L>J
Trang 83Tong thoi gian du an: 31
Tong chi phi du an: 18356.00 ( $)
T >R,4 Q #@ ' @# +& % #* &) % # %#K #4 L>
Trang 84Tong thoi gian du an: 29
Tong chi phi du an: 21038.00 ( $)
9 > R,4 Q #@ ' @# +& % #* &) % # 0#) #4 L>M
Trang 85Tong thoi gian du an: 48
Tong chi phi du an: 20667.00 ( $)
Trang 86+& % #* 4 + J ' * ' / #4 #4 * %#K #4 5#* % 2,- ' / + % ' * &) % # ' ! % #4 %#6 &* +& % #*
3,6 5 A ' / #*' ' @# #A % #@ (#H % '#*' 2 ,-" # " A 7 4 +& % #*
2 #*' ' #4 2 ! % ' * +& % #* #) "# % D#$ - % ' / @ & L>
J ' +* % @ " ! #4 ,A Q #@ % (#) #* 4 +
Trang 92Tong thoi gian du an: 29
Tong chi phi du an: 18453.00 ( <)
2H3
Trang 100# ) * ) , ) + # $%
∂
∂ +
Trang 103L A
L : Q
Trang 1064 R d > 2700A1I 0 >2A K 2e >9d 27 d6A1B 0>0 d6A K 1>22 0
E 1 R > eeedA1B eA K 2d 000 R6A1B 0R6A K 2>2>
< 6 9 > 2RR2A1I 0 >>6RA K 1> 09d 1>A1B 076A K 16R0
f 6 2> > 20ReA1I 1 99dRA K 12 6e1 12 16A1B R1> ReA K 16R1 9[ 0 e > 0A1I R >1A K 2d 0R 16A1B 066A K 2906
L d 22 > >e07A1I 2 d2e2A K 26 2e1 21 6A1I 17d 6A K 109>
R 9 > 12e6A1I R 2e27A K 16 6d2 I0 6d2RA1I ed 76dA K 2096 d
O 6 7 > 26R7A1I 0 >>d2A K 29 2e 1>A1B 0R>A K 1>d>
S e 2> > 2>R9A1I 1 6>0RA K 29 6e1 21 6A1I 1Rd 6A K 2e9>
H R e > 16A1I 0 d6A K 27 6 2>>A1B 21>>A K RRe>
T 6 9 > 2RR2A1I 0 >>6RA K 1> 09d 1R 17eA1B R7RA K 1729 R
0 9 > 1169A1I 0 9e11A K 12 6dR 6 06d2A1B 2>9 19A K 9d7 6d
% e 21 > >dReA1I 2 991RA K 2d 121 21 76dA1B 000 6dA K 16Rd 9
Trang 108Tong thoi gian du an : 32
Tong chi phi du an : 18402 ( +)
Trang 121!
Trang 123"
Trang 124#
Trang 125$
Trang 126TDSL_tongket in 'TDSL_tongket.pas' {Form5},
TDSL_bangtinh in 'TDSL_bangtinh.pas' {Form6},
TDSL_dkhc in 'TDSL_dkhc.pas' {Form7},
TDSL_bieudoTN in 'TDSL_bieudoTN.pas' {Form8},
TDSL_thongtinthem in 'TDSL_thongtinthem.pas' {Form9}, TDSL_choncachtinh in 'TDSL_choncachtinh.pas' {Form10},
Trang 127TDSL_about in 'TDSL_about.pas' {Form11};
Trang 133procedure BitBtn1Click(Sender: TObject);
procedure SpEdtChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
procedure BitBtn11Click(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
procedure BitBtn13Click(Sender: TObject);
procedure BitBtn14Click(Sender: TObject);
procedure BitBtn15Click(Sender: TObject);
procedure StrGrd1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String);
procedure BitBtn16Click(Sender: TObject);
PreListID,SuccListID,LagList,RelTypeInd:Array of Integer; LagSucc,RelTypeSucc:Array of Integer; end;
Trang 134Function TinhMucTainguyenCt(Index:Integer;Dur:Real):Real; Function TinhChiphiCt(Index:Integer;Dur:Real):Real;
ResTable:Array of array of Real;
Tainguyen,ResVecto: Array of Real;
Trang 137procedure TForm1.BitBtn2Click(Sender: TObject);
begin
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
Else
For i:=1 to Ct[Index-1].SuccNumber do
begin
If SpecCt[Ct[Index-1].SuccListID[i-1]-1].KM=MaxTmp then Tinhluotve(Ct[Index-1].SuccListID[i-1]);
Case Ct[Index-1].RelTypeSucc[i-1] of
Trang 138iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
Trang 139begin
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
If Not SaveDlg1.Execute then Exit;
Writeln(F,CtNumb,' ',MaxCostOrder,' ',MaxResOrder);
For i:=1 to CtNumb do
Writeln(F,Ct[i-1].Name:20,' ',Ct[i-1].ID,' ',Ct[i-1].Tgmin,' ',Ct[i-1].Tgmax,' ',
For i:=1 to CtNumb do
If Ct[i-1].SuccNumber>0 then
For j:=1 to Ct[i-1].SuccNumber do
Writeln(F,Ct[i-1].SuccListID[j-1],' ',Ct[i-1].LagSucc[j-1],' ',Ct[i-1].RelTypeSucc[j-1]);
Trang 140While Ct[i-1].Name[1]=#32 do Delete(Ct[i-1].Name,1,1);
For i:=1 to CtNumb do
If Ct[i-1].SuccNumber>0 then
For j:=1 to Ct[i-1].SuccNumber do
1].RelTypeSucc[j-1]);
Trang 141iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
Trang 142procedure TForm1.BitBtn10Click(Sender: TObject); begin
Chonbaitoan:=2;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
end;
procedure TForm1.BitBtn13Click(Sender: TObject); begin
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
iF Not CorrectInfo then Update;
If Not CorrectInfo then Exit;
Form1.Enabled:=False;
BtnClk:=3;
TForm7.Create(Self);
end;
Trang 143procedure TForm1.StrGrd1GetEditText(Sender: TObject; ACol, ARow:
Trang 145procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
Trang 146For i:=1 to 3 do Dvtn[i]:=Vlist1.Values[Vlist1.Keys[i]];
end;
end
(*********************************************************************)
Trang 149object BitBtn3: TBitBtn Left = 300
object CbBox1: TComboBox Left = 4
object CbBox2: TComboBox Left = 132
object CbBox3: TComboBox Left = 196
Trang 150procedure FormCreate(Sender: TObject);
procedure LBox1Click(Sender: TObject);
procedure CbBox1Change(Sender: TObject);
procedure CbBox2Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure StrGrid1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
Trang 151
Ct[Ct[i-1].PreListID[j-1]-1].LagSucc[k-1]:=Ct[i-1].LagList[j-1];
SetLength(Ct[Ct[i-1].PreListID[j-1]-1].RelTypeSucc,k); Ct[Ct[i-1].PreListID[j-1]-1].RelTypeSucc[k-1]:=Ct[i-
Trang 152StrGrid1.ColWidths[3]:=66;
StrGrid1.Cells[0,0]:='ID';
StrGrid1.Cells[1,0]:='Tên công tác';
StrGrid1.Cells[2,0]:='Loại quan hệ';
StrGrid1.Cells[3,0]:='Thời khoảng';
BitBtn3.Enabled:=false;
BitBtn2.Enabled:=false;
StrGrid1.RowCount:=1;
CbBox2.Text:='Chọn Mã số';
CbBox1.Text:='Chọn công tác';
CbBox3.Text:='Chọn loại quan hệ';
CbBox2.Text:='Chọn Mã số';
CbBox1.Text:='Chọn công tác';
CbBox3.Text:='Chọn loại quan hệ';
Trang 153procedure TForm3.CbBox2Change(Sender: TObject);
If (Not Err) and (CbBox3.ItemIndex in [0 2]) then
Trang 154
strGrid1.Cells[1,i]:=Ct[Ct[LBox1.ItemIndex].PreListID[i-1]-1].Name;
1]];
strGrid1.Cells[3,i]:=IntToStr(Ct[LBox1.ItemIndex].LagList[i-1]); end;
// StrGrid1.RowCount:=StrGrid1.RowCount-1;
end;
end
(*********************************************************************)
Trang 156Options = [goFixedVertLine, goFixedHorzLine, goVertLine,
goHorzLine, goRangeSelect, goEditing]
Trang 157procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure SpEdt1Change(Sender: TObject);
Trang 158If CostChoose then begin
Caption:='Bang nhap quan he Chi phi - Thoi gian';
Label1.Caption:='Bậc cao nhất của các hàm chi phí (đa
thức):';
If MaxCostOrder<>-1 then SpEdt1.Value:=MaxCostOrder;
end
Else begin
Caption:='Bang nhap quan he Tai nguyen - Thoi gian';
Label1.Caption:='Bậc cao nhất của các hàm tài nguyên (đa thức):';
If MaxResOrder<>-1 then SpEdt1.Value:=MaxResOrder;
end;
StrGrid1.ColCount:=SpEdt1.Value+2;
StrGrid1.RowCount:=CtNumb+1;
StrGrid1.ColWidths[0]:=68;
StrGrid1.Cells[0,0]:='Tên Ct\Hệ số';
For i:=1 to CtNumb do
Trang 159StrGrid1.Cells[1,i]:='';
StrGrid1.Cells[1,0]:='Bậc '+ IntToStr(k); End
Else if k+2<StrGrid1.ColCount then
begin
For j:=1 to k+1 do
StrGrid1.Cols[j]:=StrGrid1.Cols[j+1]; StrGrid1.ColCount:=k+2;
If Err=0 then CostInit:=Tmp
For j:=MaxCostOrder downto 0 do
Trang 160For j:=MaxResOrder downto 0 do
Trang 162object TabCtrl1: TTabControl
Options = [goFixedVertLine, goFixedHorzLine, goVertLine,
goHorzLine, goRangeSelect, goRowSizing, goColSizing, goRowSelect]
Trang 163procedure TabCtrl1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject);
procedure LBox1Click(Sender: TObject);
StrGrid1.Cells[0,0]:='Mã số - ID';
StrGrid1.Cells[1,0]:='Tên Công tác';
StrGrid1.Cells[2,0]:='Tg min ('+ Dvtn[1]+')';
Trang 164StrGrid1.Cells[0,0]:='Mã số - ID';
StrGrid1.Cells[1,0]:='Tên Công tác';
StrGrid1.Cells[2,0]:='Hàm chi phí ('+Dvtn[2]+')'; For i:=1 to CtNumb do
Else 1,j]))+'('+Dvtn[1]+')';
end
Else begin
If CostTable[i-1,j]<0 then St1:=St1+' -' Else St1:=St1+' +';
St1:=St1+FloatToStr(CostTable[i-1,j]); end;
Trang 165StrGrid1.Cells[0,0]:='Mã số - ID';
StrGrid1.Cells[1,0]:='Tên Công tác';
StrGrid1.Cells[2,0]:='Hàm tài nguyên ('+Dvtn[3]+')';
For i:=1 to CtNumb do
StrGrid1.Cells[0,0]:='Mã số - ID';
StrGrid1.Cells[1,0]:='Tên Công tác';
StrGrid1.Cells[2,0]:='Loại tương quan';
Trang 171object StrGrid1: TStringGrid
Trang 172object Edit2: TEdit
Trang 175(*********************************************************************)
/unit TDSL_bangtinh;
Trang 176procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); private
Trang 1781].KS);
1].HS+
1].Dur,Ct[Index-1].KS);
1].KS+
1].KS);
1].HM);
1].HM -
1].HM);
1].KM -
1].Dur,Ct[Index-1].HM);
Trang 179End;
Ct[Index-1].KM:=Ct[Index-1].HM-Ct[Index-1].Dur; End;
Trang 180// Rang buoc ve can duoi bien thiet ke
For i:=1 to NumbVarNode do
// Rang buoc ve can tren bien thiet ke
For i:=1 to NumbVarNode do
// Rang buoc ve tuong quan thu tu
For i:=1 to NumbVarNode do
WeightArr[i-1,Ind-1].Dur:=0;
Trang 181end;
1:begin
WeightArr[Ct[i-1].PreListID[j-1]-1,Ind-1].STime:=1; WeightArr[Ct[i-1].PreListID[j-1]-1,Ind-1].Dur:=1; WeightArr[i-1,Ind-1].STime:=-1;
WeightArr[i-1,Ind-1].Dur:=-1;
end;
2:begin
WeightArr[Ct[i-1].PreListID[j-1]-1,Ind-1].STime:=1; WeightArr[Ct[i-1].PreListID[j-1]-1,Ind-1].Dur:=0; WeightArr[i-1,Ind-1].STime:=-1;
Trang 183SetLength(ConsThreadArr,NumbConsNode+MaxDayEsl); For j:=NumbConsNode+1 to NumbConsNode+MaxDayEsl do Begin
Trang 184End;
3:Begin
For j:=1 to NumbConsNode do
begin
Trang 185For i:=1 to NumbVarNode do
InpConsArr[j-1]:=InpConsArr[j-1]+OldVarArr[i-1].STime*WeightArr[i-1,j-1].STime+
OldVarArr[i-1].Dur*WeightArr[i-1,j-1].Dur; InpConsArr[j-1]:=InpConsArr[j-1]+ConsThreadArr[j-1]; end;
For j:=NumbConsNode+1 to NumbConsNode+MaxDayEsl do
Trang 186Until (UnCriList[Tk-1]=i) or (Tk>LenUnCri);
If (i>1) and (i<CtNumb+1) and (Tk<=LenUnCri) then
Trang 187If Tk mod 2=0 then
InpVarArr[i-1].STime:=InpVarArr[i-1].Stime+ (R0+n/alpha)*WGradRes[i-
1]*OutConsArr[j-1]/2
Else
InpVarArr[i-1].STime:=InpVarArr[i-1].Stime- (R0+n/alpha)*WGradRes[i-
// Tinh Tich phan so
For i:=1 to NumbVarNode do
Begin
OutVarArr[i-1].Dur:=OldVarArr[i-1].Dur+InpVarArr[i-1].Dur;
OutVarArr[i-1].Stime:=OldVarArr[i-1].Stime+InpVarArr[i-1].Stime; End;
Trang 188For i:=1 to NumbVarNode do
If (EpsTime<=3*Epsi) and (EpsDur<=3*Epsi) and
(EpsCons<=3*Epsi)and (NumbStf=NumbConsNode) then
If (EpsTime<=3*Epsi) and (EpsDur<=3*Epsi) and
(EpsCons<=3*Epsi)and (NumbStf=NumbConsNode+MaxDayEsl) then Begin
ShowMessage('Nghiem da hoi tu');
Trang 189procedure TForm6.BitBtn2Click(Sender: TObject);
For j:=NumbConsNode+1 to NumbConsNode+MaxDayEsl do
Trang 1901]/UpTimeLimit*4;
1]/UpTimeLimit/2;
end;
If chonloaihanche=3 then begin
If (i=NumbVarNode) then
1]/UpTimeLimit/20;
1]/UpTimeLimit/4;
InpVarArr[i-1].STime:=InpVarArr[i-1].STime+
Trang 191Until (UnCriList[Tk-1]=i) or (Tk>LenUnCri);
If (i>1) and (i<CtNumb+1) and (Tk<=LenUnCri) then
If Tk mod 2=0 then
InpVarArr[i-1].STime:=InpVarArr[i-1].Stime+ (R0+n/alpha)*WGradRes[i-
1]*OutConsArr[j-1]/2
Else
InpVarArr[i-1].STime:=InpVarArr[i-1].Stime- (R0+n/alpha)*WGradRes[i-
// Tinh Tich phan so
For i:=1 to NumbVarNode do
Begin
OutVarArr[i-1].Dur:=OldVarArr[i-1].Dur+InpVarArr[i-1].Dur;
OutVarArr[i-1].Stime:=OldVarArr[i-1].Stime+InpVarArr[i-1].Stime; End;
If Chonloaihanche=3 then
begin
Trang 192For i:=1 to NumbVarNode do
EpsDur:=EpsDur+ abs(OutVarArr[i-1].Dur-OldVarArr[i-1].Dur);
Until (n=MaxIter) or ((ChonLoaiHanche in [0,1,2]) and
(EpsTime<=3*Epsi) and (EpsDur<=3*Epsi) and
(EpsCons<=3*Epsi)and (NumbStf=NumbConsNode)) or
((ChonLoaiHanche=3) and
(EpsTime<=3*Epsi) and (EpsDur<=3*Epsi) and
(EpsCons<=3*Epsi)and (NumbStf=NumbConsNode+MaxDayEsl)); Case ChonLoaiHanche of
Trang 193For i:=1 to NumbVarNode do
Trang 1941].HS+
1].KS);
1].HS+
1].Dur,Ct[Index-1].KS);
1].KS+
1].KS);
1].HM);
1].HM -
1].HM);
1].KM -
1].Dur,Ct[Index-1].HM);