Розв'язок задачі нелінійного програмування методом Франка-Вульфа в середовищі програмування delphi

Програма призначена для знаходження розв'язку задачі нелінійного програмування і використовує для цього алгоритм методу Франка-Вульфа. Характерною ознакою розв'яуваних з допомогою даного методу, а відповідно і розглядуваного delphi-проекту, задач є те, що їх система обмежень повинна містити тільки лінійні нерівності. Відмітимо, що завдяки такій особливості розв'язок вихідної задачі зводиться до рішення скінченного числа задач лінійного програмування.

Розглядати більш детально процес відшукання розв'яку нелінійних задач методом Франка-Вульфа в даному параграфі не будемо. Його, за бажанням, можна знайти перейшовши за посиланням Розв'язок задач нелінійного програмування з лінійними обмеженнями. А приступимо, до розгляду основних елементів головної форми проекту, та безпосереднь до розв'язку конкретної задачі.

Отже, головна форма delphi-проекту умовно ділиться на чотири частини:

  1. Панель інструментів: містить п'ять полів типу TEdit, два з яких відповідають за значення координатів точки початкового наближення, і три що залишилось, відповідають за точність і крок обчислювального процесу та формулу, що описує цільову функцію; один компонент типу TStringGrid, в комірки якої, способом введення з клавіатури, вказуються значення коефіцієнтів при невідомих системи обмежень задачі; один компонент типу TSpinEdit — відповідає за розмірність системи обмежень, та розмірність вищевказаної таблиці TStringGrid; кнопка типу TButton яка реалізує алгоритми знаходження точки максимуму.
  2. Область графічного представлення: містить компонент типу TImage, який відображає багатокутник розв'язків отриманих на кожній ітераці задач лінійного програмування.
  3. Панель виводу проміжних значень: містить компонент TComboBox, який являє  собою список рядків, кожен з яких відповідає за відповідну ітерацію методу, та вибравши будь-який з них у відповідних компонентах типу TLabel (також містяться на розглядуваній панелі) виводяться проміжні результати обчислень, а саме, точка, яка являється розв'язком відповідної для даної ітерації задачі лінійного програмування, наближені координати шуканої точки максимуму та значення функції в ній.
  4. Область виводу результатів (міститься в нижній частині форми): здійснює вивід точки при якій цільова функція досягає свого максимуму.

Після того, як призначення кожного з елементів форми проекту відомо, переходимо до прикладу, а саме знайдемо, з точністю , точку максимуму та значення функції мети в ній при наступних обмеженнях:

Для цього, запустимо проект на виконання, заповнимо елементи панелі задач відповіднимим значеннями (де в якості початкового наближення вкажемо координати точки  та в якості кроку обчислень значення ), скористаємось кнопкою «Знайти розв'язок задачі нелінійного програмування». Результатом виконання даного кроку є вивід в нижній частині форми значень, які і приймаємо в якості шуканого розв'язку задачі нелінійного програмування.

Метод Франка-Вульфа на delphi

Розв'язок задачі нелінійного програмування методом Франка-Вульфа на delphi

Зауваження: програма розуміє круглі дужки, знаки арифметичних операцій * + — /, знак піднесення до степеня ^, число pi та наступні математичні функції: sin, cos, tg, ctg, arcsin, arccos, arctg, arcctg, abs, ln, lg, log, exp.

Скачати delphi-проект Розв'язок задачі нелінійного програмування методом Франка-Вульфа.

Матеріал був корисним, поділись в соціальних мережах:

Якщо тобі сподобалась дана тема, залиш свій коментар