Лабораторная работа по оптимизации

Автор работы: Пользователь скрыл имя, 07 Мая 2013 в 00:28, лабораторная работа

Краткое описание

1.Исходная постановка оптимизационной задачи:
Расходы на топливо для самолета пропорциональны кубу его скорости. Известно, что при скорости 700 км/ч расходы на топливо составляют 30 000 руб/ч, остальные же расходы (не зависящие от скорости) составляют 480 000 руб/ ч. При какой скорости самолета общая сумма расходов на 1 км пути будет наименьшей? Чему равна эта наименьшая общая сумма расходов?

Прикрепленные файлы: 1 файл

Optim1.docx

— 125.02 Кб (Скачать документ)

Московский Авиационный  Институт

(Государственный Технический  Университет)

                           ________________________________________________________________

 

 

Кафедра 609: Прикладная информатика

 

 

 

 

 

 

 

 

 

 

 

Отчёт по Лабораторной Работе номер 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил студент группы 06-321

Волков Р.А.

 

____________________

 

 

Принял 

Доцент Махорин А.О.

 

____________________

 

 

 

Москва 2012

 

Вариант № 2

 

  1. Исходная постановка оптимизационной задачи:

 

Расходы на топливо для  самолета пропорциональны кубу его  скорости. Известно, что при скорости 700 км/ч расходы на топливо составляют 30 000 руб/ч, остальные же расходы (не зависящие от скорости) составляют 480 000 руб/ ч. При какой скорости самолета общая сумма расходов на 1 км пути будет наименьшей? Чему равна эта наименьшая общая сумма расходов?

 

 

  1. Формальная математическая постановка оптимизационной задачи с необходимыми выкладками:

 

30000/x^3 = расход при скорости 700 км/ч

Скорость x = 700 км/ч

30000/700^3 = 0.000087 р/км

 

Постоянный расход = 480000 руб/ч

480000*t(время) = 480000/x (т.к. t=1/x)

 

Непостоянный расход

0.000087*t*x^3 = 0.000087/x*x^3 = 0.000087*x^2

 

Общий расход на 1км пути

480000/x + 0.000087*x^2

 

 

 

 

 

  1. Исходя из содержательного смысла задачи оценить интервал значений независимой переменной, в котором содержится минимум целевой функции:

 

Скорость самолета не может быть меньше 500, верхний предел возьмем равным 2000. Интервал [500...2000].

 

 

 

 

 

 

 

  1.  Подпрограмма вычисления значений целевой функции:

     

      SUBROUTINE znach(F,A,B,Z)

*

*     вычисление значений функции F

*

      REAL F,A,B,C,Z(11),i

      EXTERNAL F

      INTEGER k

      C=abs(A-B)/10

      k=0

      do i=A,B,C

      k=k+1  

      Z(k)=F(i)

      enddo

      Z(11)=F(B)

      END

 

Основная программа построения таблицы значений целевой функции  и нахождения чувствительности интервала:

 

// job main2

// exec fortran

      PROGRAM MAIN2

* Вычисление значений функции в 10-15 точках

*

      REAL S,A,B,P(11),k,l,optimum,x1,x2,sens

      integer i

      EXTERNAL S

      A=100.0

      B=1500.0

      k=abs(B-A)/10

      CALL znach(S,A,B,P)

   10 FORMAT (1X,F12.6,1x,1PG12.5)

      l=1

      print *,('    F(x)         x')

      do i=1,11

      PRINT 10,P(i),l

      l=l+k

      enddo

      optimum=1402.3

      print '(1x,a,1PG12.5)','Оптимум: ',S(optimum)

      print '(1x,a,1PG12.5)','1% от оптимума: ',0.01*S(optimum)

      x1 = optimum

      do while (abs((S(optimum)-S(x1))/S(optimum)).le.0.0001)

      x1 = x1 - 0.0001

      enddo

      x1 = x1 + 0.0001

      print*,'Левая граница:',x1

      x2 = optimum

      do while (abs((S(x2)-S(optimum))/S(optimum)).le.0.0001)

      x2 = x2 + 0.0001

      enddo

      x2 = x2 - 0.0001

      print*,'Правая граница:',x2

      print '(1x,a,1PG12.5)','S(x1): ',S(x1)

      print '(1x,a,1PG12.5)','S(x2): ',S(x2)

      print '(1x,a,2f15.10)','Разница: ',abs(S(optimum)-S(x1))

      sens = min(abs(x1-optimum),abs(x2-optimum))

      print*,'Чувствительность: ',sens/optimum

      print*,'Отклонение: ',sens

      print*,'Допустимая точность: ', sens*2

      END

      REAL FUNCTION S(D)

      REAL*4 D,C

      C=480000/D+0.000087*D**2

      S=C

      RETURN

      END

// exec fortran znach.f

// exec link

// exec *

// end

 

Результат выполнения программы:

 

RPSCP: RPS Control Program, v1.8 (for 32-bit MS Windows)

Wed Nov 28 19:14:15 2012

0001 // job main2

0002 // exec fortran

0049 // exec fortran znach.f

0050 // exec link

0051 // exec *

    

     F(x)         x

  4800.870117   1.0000   

  2005.011230   141.00   

  1275.720703   281.00   

   946.601746   421.00   

   765.169922   561.00   

   655.679993   701.00   

   587.511475   841.00   

   545.921265   981.00   

   522.933411   1121.0   

   513.856384   1261.0   

   515.750000   1401.0   

 Оптимум:   513.38   

 1% от оптимума:   5.1338   

 Левая граница:  1266.98108

 Правая граница:  1547.32275

 S(x1):   518.51   

S(x2):   518.51   

 Разница:    5.1337280273

 Чувствительность:   0.096497871

 Отклонение:   135.31897

 Допустимая точность:   270.637939

0055 // end

 

Из таблицы видно, что  минимум локализирован и находится  между значениями 1200 и 1500.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

График функции:

 


 


 

 

 

  1.  Решим задачу методом деления отрезка попалам c максимально возможной точностью:

Код программы:

// job bisec

// exec fortran

      PROGRAM MAIN

*

*     Оптимальное проектирование цилиндрического бака методом деления

*     интервала пополам.

*

      REAL S,A,B,EPS

      EXTERNAL S

      A=500.0

      B=2000.0

      EPS=0.01

      CALL BISEC(S,A,B,EPS)

      PRINT 10,A,B

   10 FORMAT (//' Окончательный интервал: A=',1PG12.5,' B=',1PG12.5)

      STOP

      END

      REAL FUNCTION S(D)

      REAL D

      S=480000/D+0.000087*D**2

      RETURN

      END

// exec fortran bisec.f

// exec link

// exec *

// end

 

Результат выполнения:

RPSCP: RPS Control Program, v1.8 (for 32-bit MS Windows)

Fri Nov 23 10:50:22 2012

0001 // job bisec

0002 // exec fortran

0023 // exec fortran bisec.f

0024 // exec link

0025 // exec *

 

 

 

 

МЕТОД ДЕЛЕНИЯ ИНТЕРВАЛА  ПОПОЛАМ

 

 A=  500.00     B=  2000.0     EPS= 1.00000E-02

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1250.0       519.94   

  1   875.00       1625.0       1250.0       519.94   

  2   1250.0       1625.0       1437.5       513.69   

  3   1343.8       1531.3       1437.5       513.69   

  4   1343.8       1437.5       1390.6       513.41   

  5   1390.6       1437.5       1414.1       513.41   

  6   1390.6       1414.1       1402.3       513.38   

  7   1396.5       1408.2       1402.3       513.38   

  8   1399.4       1405.3       1402.3       513.38   

  9   1400.9       1403.8       1402.3       513.38   

10   1401.6       1403.1       1402.3       513.38   

11   1402.0       1402.7       1402.3       513.38   

12   1402.2       1402.5       1402.3       513.38   

13   1402.3       1402.4       1402.3       513.38   

14   1402.3       1402.4       1402.3       513.38   

15   1402.3       1402.4       1402.3       513.38   

16   1402.3       1402.4       1402.3       513.38   

17   1402.3       1402.3       1402.3       513.38   

18   1402.3       1402.3       1402.3       513.38   

 

 

 Окончательный интервал: A=  1402.3     B=  1402.3   

0026 // end

Оптимальное решение: 1402.3, при такой скорости общий расход топлива будет наименьшим.

 

  1.  Анализ чувствительности:

 

Оптимум:   513.38   

1% от оптимума:   5.1338   

 Левая граница:  1266.98108

 Правая граница:  1547.32275

S(x1):   518.51   

S(x2):   518.51   

 Разница:    5.1337280273

 Чувствительность:   0.096497871

 Отклонение:   135.31897

 Допустимая точность:   270.637939

Таким образом мы можем  задавать скорость с точностью 270.638

 

  1.  Решение различными методами:

 

Метод деления  пополам е=0.01

  A=  500.00     B=  2000.0     EPS= 1.00000E-02

 

  Будет выполнено 18 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1250.0       519.94   

  1   875.00       1625.0       1250.0       519.94   

  2   1250.0       1625.0       1437.5       513.69   

  3   1343.8       1531.3       1437.5       513.69   

  …  …   …   …   …

15   1402.3       1402.4       1402.3       513.38   

16   1402.3       1402.4       1402.3       513.38   

17   1402.3       1402.3       1402.3       513.38   

18   1402.3       1402.3       1402.3       513.38   

 

 Окончательный интервал: A=  1402.3     B=  1402.3       

 

 

Метод Фибоначчи  е=0.01

 

A=  500.00     B=  2000.0     EPS= 1.00000E-02

 

 Будет выполнено 25 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1072.9       547.52   

  1   1072.9       2000.0       1427.1       513.53   

  2   1072.9       1645.9       1427.1       513.53   

  3   1291.8       1645.9       1427.1       513.53   

  …   …      …       …     …

 22   1402.9       1402.9       1402.9       513.38   

23   1402.9       1402.9       1402.9       513.38   

24   1402.9       1402.9       1402.9       513.38   

25   1402.9       1402.9       1402.9       513.38   

 

 

 Окончательный интервал: A=  1402.9     B=  1402.9   

 

 

 

 

Метод золотого сечения  е=0.01

 

A=  500.00     B=  2000.0     EPS= 1.00000E-02

 

Будет выполнено 25 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1072.9       547.52   

  1   1072.9       2000.0       1427.1       513.53   

  2   1072.9       1645.9       1427.1       513.53   

  3   1291.8       1645.9       1427.1       513.53   

  …   …      …      …      …

 22   1402.9       1402.9       1402.9       513.38   

23   1402.9       1402.9       1402.9       513.38   

24   1402.9       1402.9       1402.9       513.38   

25   1402.9       1402.9       1402.9       513.38   

 

 

 Окончательный интервал: A=  1402.9     B=  1402.9   

 

 

Метод деления пополам е=0.001

 

  A=  500.00     B=  2000.0     EPS= 1.00000E-03

 

Будет выполнено 21 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1250.0       519.94   

  1   875.00       1625.0       1250.0       519.94   

  2   1250.0       1625.0       1437.5       513.69   

  3   1343.8       1531.3       1437.5       513.69   

  …  …   …   …   …

18   1402.3       1402.3       1402.3       513.38   

19   1402.3       1402.3       1402.3       513.38   

20   1402.3       1402.3       1402.3       513.38   

21   1402.3       1402.3       1402.3       513.38   

 

 Окончательный интервал: A=  1402.3     B=  1402.3   

 

 

 

 

 

 

 

Метод Фибоначчи е=0.001

 

A=  500.00     B=  2000.0     EPS= 1.00000E-03

 

 Будет выполнено 30 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1072.9       547.52   

  1   1072.9       2000.0       1427.1       513.53   

  2   1072.9       1645.9       1427.1       513.53   

  3   1291.8       1645.9       1427.1       513.53   

 …     …    …   …   …

 27   1402.9       1402.9       1402.9       513.38   

28   1402.9       1402.9       1402.9       513.38   

29   1402.9       1402.9       1402.9       513.38   

30   1402.9       1402.9       1402.9       513.38   

 

 

 Окончательный интервал: A=  1402.9     B=  1402.9   

 

 

Метод золотого сечения  е=0.001

 

 A=  500.00     B=  2000.0     EPS= 1.00000E-03

 

  Будет выполнено 30 шаг(а,ов)

 

K      A            B            X          F(X)

  0   500.00       2000.0       1072.9       547.52   

  1   1072.9       2000.0       1427.1       513.53   

  2   1072.9       1645.9       1427.1       513.53   

  3   1291.8       1645.9       1427.1       513.53   

  …   …     …      …      …

27   1402.9       1402.9       1402.9       513.38   

28   1402.9       1402.9       1402.9       513.38   

29   1402.9       1402.9       1402.9       513.38   

30   1402.9       1402.9       1402.9       513.38   

 

 

 Окончательный интервал: A=  1402.9     B=  1402.9   

 

 

 

 

Метод деления пополам е=0.0001

 

 A=  500.00     B=  2000.0     EPS= 1.00000E-04

 

  Будет выполнено 24 шаг(а,ов)

 

K      A            B            X          F(X)

  0   500.00       2000.0       1250.0       519.94   

  1   875.00       1625.0       1250.0       519.94   

  2   1250.0       1625.0       1437.5       513.69   

  3   1343.8       1531.3       1437.5       513.69   

  4   1343.8       1437.5       1390.6       513.41   

  …    …      …      …      …

21   1402.3       1402.3       1402.3       513.38   

22   1402.3       1402.3       1402.3       513.38   

23   1402.3       1402.3       1402.3       513.38   

24   1402.3       1402.3       1402.3       513.38   

 

 

 Окончательный интервал: A=  1402.3     B=  1402.3   

  

 

Метод Фибоначчи е=0.0001

 

A=  500.00     B=  2000.0     EPS= 1.00000E-04

 

 Будет выполнено 35 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1072.9       547.52   

  1   1072.9       2000.0       1427.1       513.53   

  2   1072.9       1645.9       1427.1       513.53   

  3   1291.8       1645.9       1427.1       513.53   

  …    …      …      …      …

32   1402.9       1402.9       1402.9       513.38   

33   1402.9       1402.9       1402.9       513.38   

34   1402.9       1402.9       1402.9       513.38   

35   1402.9       1402.9       1402.9       513.38   

 

 

 Окончательный интервал: A=  1402.9     B=  1402.9   

 

 

 

 

Метод деления пополам е=0.00001

 

 A=  500.00     B=  2000.0     EPS= 1.00000E-05

 

Будет выполнено 24 шаг(а,ов)

 

  K      A            B            X          F(X)

  0   500.00       2000.0       1250.0       519.94   

  1   875.00       1625.0       1250.0       519.94   

  2   1250.0       1625.0       1437.5       513.69   

  3   1343.8       1531.3       1437.5       513.69   

 …     …             …           …            …

 21   1402.3       1402.3       1402.3       513.38   

22   1402.3       1402.3       1402.3       513.38   

23   1402.3       1402.3       1402.3       513.38   

24   1402.3       1402.3       1402.3       513.38   

 

 

 Окончательный интервал: A=  1402.3     B=  1402.3   

 

Метод Фибоначчи е=0.00001

 

A=  500.00     B=  2000.0     EPS= 1.00000E-05

Информация о работе Лабораторная работа по оптимизации