Багатокритер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рного масив