Багатокритерiальна задача лiнiйного програмування

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



у чисел чи назв змiнниходного або бiльше елементiв, починаючи з елемента з номером Index.

ВидаляСФться Count елементiв (якщо вони були у масивi починаючи iз елемента

з номером Index).}CurElm: Integer;Count<=0 then Exit; {якщо немаСФ елементiв для видалення}

{Якщо СФ хоч один елемент iз заданих для видалення:}Length(SArr)>=(Index+1) then

{Якщо у масивi немаСФ так багато елементiв, скiльки холiли видалити, то

коригуСФмо кiлькiсть тих, що видаляСФмо:}(Index+Count)>Length(SArr) then Count:=Length(SArr) - Index;

{ЗсуваСФмо елементи масиву влiво, що залишаються справа пiсля видалення

заданих:}CurElm:=Index to (Length(SArr) - 1-Count) do[CurElm]:=SArr [CurElm+Count];

{ВидаляСФмо з масиву зайвi елементи справа:}(SArr, Length(SArr) - Count);;;

DeleteFromArr (Var SArr:TFloatArr; Index, Count: Integer); overload;

{Процедура для видалення з одновимiрного масиву дiйсних чиселодного або бiльше елементiв, починаючи з елемента з номером Index.

ВидаляСФться Count елементiв (якщо вони були у масивi починаючи iз елемента

з номером Index).}CurElm: Integer;Count<=0 then Exit; {якщо немаСФ елементiв для видалення}

{Якщо СФ хоч один елемент iз заданих для видалення:}Length(SArr)>=(Index+1) then

{Якщо у масивi немаСФ так багато елементiв, скiльки холiли видалити, то

коригуСФмо кiлькiсть тих, що видаляСФмо:}(Index+Count)>Length(SArr) then Count:=Length(SArr) - Index;

{ЗсуваСФмо елементи масиву влiво, що залишаються справа пiсля видалення

заданих:}CurElm:=Index to (Length(SArr) - 1-Count) do[CurElm]:=SArr [CurElm+Count];

{ВидаляСФмо з масиву зайвi елементи справа:}(SArr, Length(SArr) - Count);;;

DelColsFromMatr (Var SDMatrix:TFloatMatrix; ColIndex, Count: Integer);

{Процедура для видалення iз матрицi дiйсних чиселодного або бiльше стовпцiв, починаючи зi стовпця з номером ColIndex.

ВидаляСФться Count стовпцiв (якщо вони були у матрицi починаючи зi стовпця

з номером ColIndex).}CurRow: Integer;Count<=0 then Exit; {якщо немаСФ елементiв для видалення}

{ВидаляСФмо елементи у вказаних стовпцях з кожного рядка. Так

видалимо стовпцi:}CurRow:=0 to (Length(SDMatrix) - 1) do(SDMatrix[CurRow], ColIndex, Count);;;

DelRowsFromMatr (Var SDMatrix:TFloatMatrix; RowIndex, Count: Integer);

{Процедура для видалення iз матрицi дiйсних чиселодного або бiльше рядкiв, починаючи з рядка з номером RowIndex.

ВидаляСФться Count рядкiв (якщо вони були у матрицi починаючи з рядка

з номером RowIndex).}CurElm: Integer;Count<=0 then Exit; {якщо немаСФ елементiв для видалення}

{Якщо СФ хоч один рядок iз заданих для видалення:}Length(SDMatrix)>=(RowIndex+1) then

{Якщо у матрицi немаСФ так багато рядкiв, скiльки холiли видалити, то

коригуСФмо кiлькiсть тих, що видаляСФмо:}(RowIndex+Count)>Length(SDMatrix) then Count:=Length(SDMatrix) - RowIndex;

{ЗсуваСФмо рядки матрицi вгору, що залишаються знизу пiсля видалення

заданих:}CurElm:=RowIndex to (Length(SDMatrix) - 1-Count) do[CurElm]:=SDMatrix [CurElm+Count];

{ВидаляСФмо з матрицi зайвi рядки знизу:}(SDMatrix, Length(SDMatrix) - Count);;;

ChangeSignForValOrVarName (Var SDValOrName:TValOrName);

{Змiна знаку числа або перед iменем змiнноСЧ:}SDValOrName. ElmType=bc_Number then {для числа:}. AsNumber:=-SDValOrName. AsNumber{для рядка-назви:}Pos (sc_Minus, SDValOrName. AsVarName)=1 then(SDValOrName. AsVarName, 1, Length (sc_Minus))SDValOrName. AsVarName:=sc_Minus+SDValOrName. AsVarName;;;

{Жорданове виключення за заданим розв'язувальним елементом матрицi:}TGridFormattingProcs.GI (RozElmCol, RozElmRow: Integer;SDHeadRow, SDHeadCol:TValOrNameMas; Var SDMatrix:TFloatMatrix;DColDeleted: Boolean;: Boolean=False; {прапорець на модифiковане Жорданове виключення}: Boolean=True):Boolean;

{Функцiя виконуСФ Жорданове виключення для елемента матрицiз координатами (RozElmCol, RozElmRow). Окрiм обробки матрицi,

здiйснюСФться замiна мiiями елементiв у рядку i стовпцю-заголовках

матрицi (SDHeadRow, SDHeadCol).

Вхiднi данi:- номер стовпця матрицi, у якому лежить розв'язувальний елемент.

нумерацiя з нуля;- номер рядка матрицi, у якому лежить розв'язувальний елемент.

нумерацiя з нуля.

Розв'язувальний елемент не повинен бути рiвним нулю, iнакше виконання

Жорданового виключення не можливе;, SDHeadCol - рядок i стовпець-заголовки матрицi. Рядок-заголовокповинен мати не менше елементiв, нiж СФ ширина матрицi. Вiн

мiстить множники. Стовпець-заголовок SDHeadCol повинен бути не коротшим

за висоту матрицi. Вiн мiстить правi частини рiвнянь (чи нерiвностей)

системи. Рiвняння полягають у тому що значення елементiв

стовпця-заголовка прирiвнюються до суми добуткiв елементiв вiдповiдного

рядка матрицi i елементiв рядка-заголовка. Елементи у цих заголовках

можуть бути числами або рядками-iменами змiнних. Якщо довжина

рядка-заголовка менша за ширину або стовпця-заголовка менша за висоту

матрицi, то частина комiрок матрицi, що виходять за цi межi, буде

проiгнорована;- матриця, у якiй виконуСФться Жорданове виключення;- прапорець, що вмикаСФ режим модифiкованого Жорданового виключення

(при ToDoMGI=True здiйснюСФться модифiковане, iнакше - звичайне).

Модифiковане Жорданове виключення використовуСФться для матрицi, у якiй

було змiнено знак початкових елементiв, i змiнено знаки елементiв-

множникiв у рядку-заголовку. ВикористовуСФться для симплекс-методу.- прапорець, що вмикаСФ видалення стовпця матрицi iз

розв'язувальним елементом, якщо пiсля здiйснення жорданiвського

виключення у рядок-заголовок зi стовпця-заголовка записуСФться число нуль.

Вихiднi данi:, SDHeadCol - змiненi рядок та стовпець-заголовки. У них

мiняються мiiями елементи, що стоять навпроти розв'язувального елемента

(у його стовпцi (для заголовка-рядка) i рядку (для заголовка-стовпця).

У заголовку-рядку такий елемент пiсля цього може бути видалений, якщо

вiн рiвний нулю i ToDelColIfZ