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

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

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



?ри Solving=True):}SetTable (Const SHeadRow, SHeadCol:TValOrNameMas;STable:TFloatMatrix);GetTable (Var DHeadRow, DHeadCol:TValOrNameMas;DTable:TFloatMatrix);

{Вибiр кольору для фону комiрки за типом елемента

стовпця - або рядка-заголовка:}GetColorByElmType (CurType:THeadLineElmType):TColor;

{Вибiр назви комiрки за типом елемента

стовпця - або рядка-заголовка:}GetNameByElmType (CurType:THeadLineElmType):String;

{Зчитування умови задачi iз CurGrid та вiдображення прочитаного

на тому ж мiii, де воно було. ПрацюСФ у режимах_EnteringEqs i fs_EnteringLTask.}GetTask (ToPrepareGrid: Boolean=True):Boolean;

{ПриймаСФ останнi змiни при редагуваннi i вiдображаСФ таблицю:}Refresh;ResetModified; {скидаСФ прапорець змiненого стану}UndoChanges; {вiдкидаСФ останнi змiни (ResetModified+Refresh)}

{Перехiд вiд зчитаноСЧ умови задачi максимiзацiСЧ чи мiнiмiзацiСЧ

лiнiйноСЧ форми до двоСЧстоСЧ задачi. ПрацюСФ у режимi редагування

задачi максимiзацiСЧ-мiнiмiзацiСЧ (fs_EnteringLTask):}MakeDualLTask: Boolean;

{Розмiри прочитаноСЧ таблицi задачi:}TaskWidth: Integer;TaskHeight: Integer;

{Запускач вирiшування. ПрацюСФ у режимах fs_SolvingEqsM1,_SolvingEqsM2, fs_SolvingLTask:}Solve (ToGoToEnd: Boolean=False):Boolean;

Create;Free;;

{ВизначаСФ знак дiйсного числа:}ValSign (Const Value:TWorkFloat):TSignVal; overload;ValSign (Const Value:TValOrName):TSignVal; overload;

GetValOrNameAsStr (Const Value:TValOrName):String;

ChangeSignForValOrVarName (Var SDValOrName:TValOrName);

DeleteFromArr (Var SArr:TValOrNameMas; Index, Count: Integer);;DeleteFromArr (Var SArr:TFloatArr; Index, Count: Integer); overload;DelColsFromMatr (Var SDMatrix:TFloatMatrix; ColIndex, Count: Integer);DelRowsFromMatr (Var SDMatrix:TFloatMatrix; RowIndex, Count: Integer);

ChangeRowsPlaces (Var SDMatr:TFloatMatrix; Row1, Row2: Integer);;ChangeRowsPlaces (Var SDMatr:TFloatMatrix;SDHeadCol:TValOrNameMas; Row1, Row2: Integer;: Boolean=False); overload;ChangeColsPlaces (Var SDMatr:TFloatMatrix; Col1, Col2: Integer);;ChangeColsPlaces (Var SDMatr:TFloatMatrix;SDHeadRow:TValOrNameMas; Col1, Col2: Integer;: Boolean=False); overload;

{Транспонування двовимiрноСЧ матрицi:}Transpose (Var SDMatrix:TFloatMatrix);

_InvCoordsOfResolvingElm=

'НемаСФ розв''язуючого елемента з такими координатами';_ZeroResolvingElm='Розв''язуючий елемент рiвний нулю';_MatrixSize='Розмiри матрицi';_NoGrowingStringGrid='GrowingStringGrid не заданий' + sc_TriSpot;_UnknownVarType='Невiдомий тип змiнноСЧ';_TableIsNotReady=': таблиця не готова' + sc_TriSpot;_WrongEditMode=': не той режим редагування'+

' задачi. Не можу перейти до розв''язування' + sc_TriSpot;_EmptyTable=': таблиця пуста' + sc_TriSpot;_CantReadTaskInCurMode=

': у поточному режимi умова задачi не зчитуСФться';_CantWriteTaskInCurMode=

': не можу записати умову задачi з поточного режиму'+sc_TriSpot;_CantCloseFile=': не можу закрити файл:'+sc_DoubleQuot;

_StartSolving=': починаю розв''язування' + sc_TriSpot;_ZeroKoef=': нульовий коефiцiСФнт';_SearchingOther=' шукаю iнший' + sc_TriSpot;_AllKoefIsZeroForVar=': усi коефiцiСФнти СФ нулi для змiнноСЧ';_AllKoefIsZero=': усi коефiцiСФнти для потрiбних змiнних СФ нулi'+sc_TriSpot;_FreeVar=': вiльна змiнна (у СЧСЧ стовпцi лише нулi, не впливаСФ на результат)';

_NoRoots='Коренiв немаСФ.';_NoVals='Значень немаСФ.';_ManyRoots='Коренiв безлiч.';_UnlimitedFunc='Функцiя мети не обмежена.';_SolutionFound='Коренi знайдено.';_ValFound='Значення знайдено.';_SolvingStopped=': розв''язування припинено' + sc_TriSpot;

_ExcludingFreeVars=': виключаю незалежнi змiннi' + sc_TriSpot;_CantExcludeFreeVars=': не можу виключити усi незалежнi змiннi.'+_Space+sc_UnlimitedFunc;_AllFreeVarsExcluded=': усi незалежнi змiннi виключенi.';_NoTableAreaToWork=

': Увага! У таблицi бiльше немаСФ комiрок для наступноСЧ обробки'+sc_TriSpot;

_ExcludingZeroRows=': виключаю 0-рядки' + sc_TriSpot;_AllZeroInRow=': усi елементи - нулi у рядку';_NoMNN=': не можу знайти МНВ для стовпця';_AllZeroRowsExcluded=': усi 0-рядки виключенi.';

_SearchingBaseSolve=': шукаю опорний розв''язок' + sc_TriSpot;_BaseSolveFound=': опорний розв''язок знайдено.';_SearchingOptimSolve=': шукаю оптимальний розв''язок' + sc_TriSpot;

_NoSolveMode=': поточний режим не СФ режимом для розв''язування'+sc_TriSpot;_ValNotAvail='значення не доступно' + sc_TriSpot;_ResultIs='Результат ';_ForDualTask='для двоСЧстоСЧ задачi (вiдносно розв''язаноСЧ):';_ForDirectTask='для прямоСЧ задачi:';

_InHeadRow='У рядку-заголовку:';_InHeadCol='У стовпцi-заголовку:';_ResFunc='Функцiя мети:';

_CanMakeOnlyInELTaskMode='до двоСЧстоСЧ задачi можна переходити лише у '+

'режимi fs_EnteringLTask' + sc_TriSpot;_CanMakeDTaskOnlyForOneDFunc=': можу переходити до двоСЧстоСЧ задачi ' +

'тiльки вiд однокритерiальноСЧ задачi ЛП (з одною функцiСФю мети). '+

'Всього функцiй мети: ';

_CantChangeStateInSolving=

': не можу мiняти режим пiд час розв''язуваннятАж';

_CantDetMenuItem=': не визначено пункт меню, який викликав процедурутАж';_UnknownObjectCall=': невiдомий об''СФкт, який викликав процедуру: клас ';_NoCellOrNotSupported=': комiрка не пiдтримуСФться або не iснуСФ: ';_Row='Рядок'; sc_Col='Стовпець';

_CantOpenFile=': не можу вiдкрити файл: ';_EmptyFileOrCantRead=': файл пустий або не читаСФться: ';_FileNotFullOrHasWrongFormat=': файл не повний або не того формату: ';_CantReadFile=': файл не читаСФться: ';_CantCreateFile=': не можу створити файл: ';_CantWriteFile=': файл не вдаСФться записати: ';

_CurRowNotMarkedAsDestFunc=

': заданий рядок не помiчений як функцiя мети: рядок ';_RowNumsIsOutOfTable=': заданi номери рядкiв виходять за межi таблицi!..';_NoDestFuncs=': немаСФ рядкiв функцiй мети! Задачу не розумiютАж';_OnlyDestFuncsPresent=': у таблицi всi рядки СФ записами функцiй мети!..';_ForDestFunc=': для функцiСЧ: ';_SearchingMin='шукаю мiнiмум';_SearchingMax='шукаю максимум';

_CalculatingNoOptMeasures=': пiдраховую мiри неоптимальностiтАж';_AllMeasurIsZero=': усi мiри рiвнi нулю, додаю до них одиницютАж';_UniqueMeasureCantSetZero=': СФ тiльки одна мiра оптимальностi (i одна'+

' функцiя мети). Максимальна за модулем - вона ж. Додавання цiСФСЧ'+

' максимальноСЧ величини замiнить СЧСЧ на нуль. Тому замiняю на одиницютАж';

_WeightCoefs='Ваговi коефiцiСФнти (Li[Func]=ui/W(U)):';_ComprVarVals='Компромiснi значення змiнних';_DestFuncComprVals='Компромiснi значення функцiй мети:';

ValSign (Const Value:TWorkFloat):TSignVal; overload;Res1:TSignVal;:=bc_Zero;Value0 then Res1:=bc_Positive;:=Res1;;

ValSign (Const Value:TValOrName):TSignVal; overload;Res1:TSignVal;Value. ElmType=bc_Number then:=ValSign (Value. AsNumber)Pos (sc_Minus, Value. AsVarName)=1 then Res1:=bc_NegativeRes1:=bc_Positive;;:=Res1;;

GetValOrNameAsStr (Const Value:TValOrName):String;Value. ElmType=bc_Number then:=FloatToStr (Value. AsNumber)GetValOrNameAsStr:=Value. AsVarName;;

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

{Процедура для видалення з одновимiрного масив