Багатокритер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.