Багатокритерiальна задача лiнiйного програмування
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
m) or
(OldHRowPos<>Self.CHeadRowNum) then Self. Refresh;
. OnNewCol:=EditLineEqsOnNewCol;. OnNewRow:=EditLineEqsOnNewRow;. OnDrawCell:=EditLineEqsOnDrawCell;
. OnDblClick:=OldOnDblClick;. OnMouseUp:=OldOnMouseUp;
{ВмикаСФмо можливiсть редагування:}. Options:=CurGrid. Options+[goEditing];. OnSetEditText:=ReactOnSetEditText;
:=False;;_EnteringLTask:{Редагування таблиц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сть фiксованих, плюс хоч один
стовпець / рядок (хоч одна комiрка) для редагування:}CurGrid. ColCount<bc_FixedCols+1 then. ColCount:=bc_FixedCols+1;CurGrid. RowCount<bc_FixedRows+1 then. RowCount:=bc_FixedRows+1;. FixedRows:=bc_FixedRows;. FixedCols:=bc_FixedCols;
{Позицiювання таблицi до змiни режиму:}:=Self.CHeadColNum; OldHRowPos:=Self.CHeadRowNum;
{Позицiювання вiдображення таблицi у даному режимi редагування:}.CHeadColNum:=CurGrid. FixedCols-1 + bc_LTaskColsBeforeVars;.CHeadRowNum:=CurGrid. FixedRows-1;
{Якщо позицiювання змiнилося, то вiдображаСФмо таблицю
в новому мiii:}(OldHColPos<>Self.CHeadColNum) or
(OldHRowPos<>Self.CHeadRowNum) then Self. Refresh;
. OnNewCol:=EdLineTaskOnNewCol;. OnNewRow:=EdLineTaskOnNewRow;. OnDrawCell:=EdLineTaskOnDrawCell;
. OnDblClick:=EdLineTaskOnDblClick;. OnMouseUp:=EdLineTaskOnMouseUp;
{ВмикаСФмо можливiсть редагування:}. Options:=CurGrid. Options+[goEditing];. OnSetEditText:=ReactOnSetEditText;
:=False;;_SolvingEqsM1: {вирiшування системи лiнiйних рiвнянь способом 1:}. ColCount:=bc_FixedCols+1;. RowCount:=bc_FixedRows+1;. FixedRows:=bc_FixedRows;. FixedCols:=bc_FixedCols;
{ПробуСФмо пiдготувати таблицю до вирiшування. Якщо не
вдаСФться, то залишаСФмось у режимi, який був до спроби його
змiнити:}Not (Self. PrepareToSolveEqsWithM1) then:=Self. CurFormatState;
{ПеремикаСФмо на режим fs_NoFormatting, i назад у поточний,
щоб встановити усi настройки цього режиму:}. TableFormatState:=fs_NoFormatting;. TableFormatState:=StateSafe;;;
. OnNewCol:=NumerationOnNewCol;. OnNewRow:=NumerationOnNewRow;. OnDrawCell:=SolveLineEqsM1OrM2OnDrawCell;
. OnDblClick:=OldOnDblClick;. OnMouseUp:=OldOnMouseUp;
{ВимикаСФмо редагування екранноСЧ таблицi:}. Options:=CurGrid. Options - [goEditing];. OnSetEditText:=OldOnSetEditText;;_SolvingEqsM2: {вирiшування системи лiнiйних рiвнянь способом 2:}. ColCount:=bc_FixedCols+1;. RowCount:=bc_FixedRows+1;. FixedRows:=bc_FixedRows;. FixedCols:=bc_FixedCols;
{ПробуСФмо пiдготувати таблицю до вирiшування. Якщо не
вдаСФться, то залишаСФмось у режимi, який був до спроби його
змiнити:}Not (Self. PrepareToSolveEqsWithM2) then:=Self. CurFormatState;
{ПеремикаСФмо на режим fs_NoFormatting, i назад у поточний,
щоб встановити усi настройки цього режиму:}. TableFormatState:=fs_NoFormatting;. TableFormatState:=StateSafe;;;
. OnNewCol:=NumerationOnNewCol;. OnNewRow:=NumerationOnNewRow;. OnDrawCell:=SolveLineEqsM1OrM2OnDrawCell;. OnDblClick:=OldOnDblClick;. OnMouseUp:=OldOnMouseUp;. OnSetEditText:=OldOnSetEditText;
{ВимикаСФмо редагування екранноСЧ таблицi:}. Options:=CurGrid. Options - [goEditing];;_SolvingLTask: GoSolveLTask;_FreeEdit: {Режим вiльного редагування таблицi:}. OnNewCol:=OldOnNewCol;. OnNewRow:=OldOnNewRow;. OnDrawCell:=OldOnDrawCell;. OnDblClick:=OldOnDblClick;. OnMouseUp:=OldOnMouseUp;
{ВмикаСФмо редагування екранноСЧ таблицi:}. Options:=CurGrid. Options+[goEditing];
{ВмикаСФмо стеження за змiнами в екнаннiй таблицi:}. OnSetEditText:=ReactOnSetEditText;:=False;;{Без форматування (fs_NoFormatting), або невiдомий режим:}. OnNewCol:=OldOnNewCol;. OnNewRow:=OldOnNewRow;. OnDrawCell:=OldOnDrawCell;. OnDblClick:=OldOnDblClick;. OnMouseUp:=OldOnMouseUp;
. OnSetEditText:=OldOnSetEditText;:=False;;;. Invalidate; {перемальовуСФмо таблицю з новими форматувальниками}. CurFormatState:=Value; {запам'ятовуСФмо новий режим форматування};;
TGridFormattingProcs. SetNewGrid (Value:TGrowingStringGrid);SafeFormatState:TTableFormatState;Self. CurGrid<>Value then {якщо задано новий об'СФкт таблицi:}:=Self. TableFormatState;
{ЗнiмаСФмо усi процедури-форматувальники, перемальовуСФмо таблицю
(якщо вона була) перед замiною СЧСЧ на задану:}. TableFormatState:=fs_NoFormatting;. CurGrid:=Value; {запам'ятовуСФмо вказiвник на новий об'СФкт таблицi}
{ЗастосовуСФмо форматування для новоСЧ таблицi (якщо вона не вiдсутня,
вказiвник на неСЧ не рiвний Nil):}. TableFormatState:=SafeFormatState;
. Refresh;;;TGridFormattingProcs. SetHeadColNum (Value: Integer);Self. CurFormatState=fs_FreeEdit thenValue<0 then Value:=0;.CHeadColNum:=Value;;;
TGridFormattingProcs. SetHeadRowNum (Value: Integer);Self. CurFormatState=fs_FreeEdit thenValue<0 then Value:=0;.CHeadRowNum:=Value;;;
TGridFormattingProcs. SetNewMemo (Value:TMemo);Self. CurOutConsoleNil then. CurOutConsole. Lines. Add (Self. ClassName+': пов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 значення у розвязку пари задач.
Компромiсний розвязок багатокритерiальноСЧ задачi ЛП зручно застосовувати для обСФктiв управлiння з такими вихiдними параметрами (функцiями мети), якi СФ практично рiвноправними (мають однаковий прiоритет до оптимiзацiСЧ, або СЧх прiоритети складно оцiнити). За допомогою нього можна отримати розвязок з мiнiмальним сумарним програшем оптимiзацiСЧ параметрiв.
Використана лiтература
1.Левин С.В., Александрова В.В.: БАГАТОКРИТЕРРЖАЛЬНА ОПТИМРЖЗАЦРЖЯ З ВИКОРИСТАННЯМ ТЕОРЕТИКО-РЖГРОВОГО ПРЖДХОДУ: методичнi вказiвки до виконання курсовоСЧ роботи з курсу Математичнi методи дослiдження операцiй - Харкiв, Нацiональний аерокосмiчний унiверситет iм. М.РД. Жуковського Харкiвський авiацiйний iнститут, 2008 р.
2.Довiдка з Borland Delphi 6.