Сравнение различных методов расчета ПДВ для реального предприятия
RealN := N;
M:=0;
SetLength(C,N);
Max:=MaximiCe;
if (not MaximiCe) then for j:=0 to N-1 do C[j]:=-_C[j]
else for j:=0 to N-1 do C[j]:=_C[j];
Max:=MaximiCe;
L := 0;
end;
constructor TSimplex.Copy(const Simplex: TSimplex);
var
i,j : integer;
begin
M:=Simplex.M;
N:=Simplex.N;
RealN := Simplex.RealN;
SetLength(Cons,M);
SetLength(Basis,M);
SetLength(C,N);
Max:=Simplex.Max;
for i:=0 to M-1 do begin
SetLength(Cons[i].A,N);
Basis[i]:=-1;
for j:=0 to N-1 do Cons[i].A[j]:=Simplex.Cons[i].A[j];
Cons[i].B:=Simplex.Cons[i].B;
Cons[i].Sign:=Simplex.Cons[i].Sign;
end;
for i:=0 to Simplex.N-1 do C[i]:=Simplex.C[i];
L := Simplex.L;
end;
constructor TSimplex.CreateBasis(const Simplex: TSimplex);
var
i,j : integer;
begin
M:=Simplex.M;
N:=Simplex.N;
RealN := Simplex.RealN;
L := 0;
SetLength(Cons,M);
SetLength(Basis,M);
SetLength(C,N);
for i:=0 to N-1 do C[i]:=0;
for i:=0 to M-1 do begin
SetLength(Cons[i].A,N);
for j:=0 to N-1 do Cons[i].A[j]:=Simplex.Cons[i].A[j];
Cons[i].B:=Simplex.Cons[i].B;
Cons[i].Sign:=equal;
Cons[i].isT := false;
end;
for i:=0 to M-1 do begin
if (Simplex.Basis[i]<>-1) then Basis[i]:=Simplex.Basis[i]
else begin
SetAllLengths(N+1);
for j:=0 to M-1 do Cons[j].A[N-1]:=0;
Cons[i].A[N-1]:=1;
Cons[i].isT := true;
C[N-1] := 0;
for j:=0 to Simplex.N-1 do C[j] := C[j] + Simplex.Cons[i].A[j];
L := L + Cons[i].B;
end;
end;
end;
destructor TSimplex.Free;
begin
SetLength(C,0);
SetLength(Basis,0);
SetLength(Cons,0);
M:=0;
N:=0;
RealN := 0;
end;
function TSimplex.GetMin: extended;
var
i : integer;
begin
if (Max) then
Result := -L
else
Result := L;
end;
function TSimplex.GetSolution: TExtArray;
var
Solution : TExtArray;
i,j : integer;
begin
SetLength(Solution,RealN);
for j:=0 to RealN-1 do begin
Solution[j]:=0;
i:=0;
while ((i<M) and (Basis[i]<>j)) do inc(i);
if ((Basis[i]=j) and (i<M)) then Solution[j]:=Cons[i].B;
end;
Result:=Solution;
end;
procedure TSimplex.MulString(Number: integer; Value: extended);
var
j : integer;
begin
for j:=0 to N-1 do Cons[Number].A[j]:=Cons[Number].A[j]*Value;
Cons[Number].B:=Cons[Number].B*Value;
end;
procedure TSimplex.NormaliCe;
var
i : integer;
begin
for i:=0 to M-1 do if (Cons[i].Sign<>Equal) then begin
SetAllLengths(N+1);
if (Cons[i].Sign=Greater) then Cons[i].A[N-1]:=-1
else Cons[i].A[N-1]:=1;
Cons[i].Sign := Equal;
end;
end;
procedure TSimplex.SetAllLengths(Len: integer);
var
i, j : integer;
OldN : integer;
begin
OldN:=N;
N:=Len;
SetLength(C,N);
for i:=0 to M-1 do SetLength(Cons[i].A,N);
if (OldN<N) then begin
for j:=OldN to N-1 do begin
C[j]:=0;
for i:=0 to M-1 do Cons[i].A[j]:=0;
end;
end;
end;
function TSimplex.FoundInBasis(num:integer): integer;
var
i:integer;
f:boolean;
begin
f := false;
i := 0 ;
while (not f and (i<M)) do
Экологические заметки
Воздействие малых доз радиации
В данной работе приведен обзор литературы по проблеме воздействия малых
доз радиации в понимании современных ученых, приведены результаты проведенных
ими длительных экспериментов и ...
Соблюдение принципов экологии в лакокрасочной промышленности
Лакокрасочные материалы составляют
довольно широкий круг материалов, используемых в практике. Это и эмали, и
растворители, и грунтовки. Самую большую опасность для окружающей среды ...
Влияние мусоросжигательных заводов на окружающую среду
Такое опасное производство, как мусоросжигательный завод
(далее МСЗ), не может, по чисто техническим причинам, быть безотходным. Выбросы
МСЗ охватывают все обычные для промпредприя ...