МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
/
Звіт
до лабораторної роботи № 1
з курсу: «Методи синтезу та оптимізації»
на тему:
«Дослідження роботи методів лінійного програмування»
Мета роботи: вивчити основні алгоритми розв’язку задач лінійної оптимізації:метд виключення інтервалів,метод поділу інтервалу наполовину,метод золотого січення, метод Пауела; розробити програму за одним з алгоритмів.
1.Короткі теоретичні відомості:
Оптимізація як розділ математики існує досить давно.Оптимізація - це вибір, тобто те, чим постійно доводиться займатися в повсякденному житті.Хоча кінцевою метою оптимізації є пошук найкращого або "оптимального" рішення, зазвичай доводиться задовольнятися поліпшенням відомих рішень, а не доведенням їх до досконалості. З цього під оптимізацією розуміють скоріше прагнення до досконалості, яке, можливо, і не буде досягнуто.
Формулювання математичної задачі оптимізації.
У досить загальному вигляді математичну задачу оптимізації можна сформулювати наступним чином:Мінімізувати (максимізувати) цільову функцію з урахуванням обмежень на керовані змінні.Під мінімізацією (максимізацією) функції n змінних f (x) = f (x1, ..., xn) на заданій множині U n-мірного векторного простору En розуміється визначення хоча б однієї з точок мінімуму (максимуму) цієї функції на безлічі U, а також, якщо це необхідно, і мінімального (максимального) на U значення f (x).При запису математичних задач оптимізації в загальному вигляді зазвичай використовується наступна символіка:
f (x) -> min (max),
x належить U,
де f (x) - цільова функція, а U - дозволене безліч, задане обмеженнями на керовані змінні.
2.Індивідуальне завдання:
Знайти мінімальне чи максимальне значення функції на проміжку . Точку визначити з точністю . Написати програму, передбачити вивід на екран і на друк проміжних значень обчислень, порахувати кількість ітерацій, необхідних для досягнення заданої точності. Варіанти завдань наведено в таблиці.
1.1 3.
Загального перебору
2.Результат виконання:
import java.util.Formatter;
public class Lab_1 {
public static void main(String[] args) {
double a = 0, b = 1;//Межі
double min = func(a);//Мінімальне значення
double max = func(b);//Максимальне значення
double eps = 0.001;//Точність
double temp = 0.0, temp2 = 0.0;
System.out.println("Min=" + min);
System.out.println("Max=" + max);
int itr=0;//Ітерації
for (double i = a + eps; i < b; i += eps) {
itr++;
temp = func(i);
if (min > temp)
{
temp2 = i;
min = temp;
}
}
Formatter f = new Formatter();
f.format("Мінімум:%.3f при %.3f", min, temp2);
System.out.println(f);
System.out.println("Кількість ітерацій:" + itr);
}
public static double func(double x) {
return (Math.sqrt(1+x*x)+Math.pow((Math.E), -2*x));
}
}
Min=1.4825213654812253
Max=1.5495488456097077
Мінімум:1,465 при 0,650
Кількість ітерацій:999
Висновок: на цій лабораторній роботі я ознайомився з основними алгоритмами розв’язку задач лінійної оптимізації, написав програму для знаходження мінімуму функції методом загального перебору.