«Системный анализ языков программирования в условиях неопределенности на основе функций полезности»




Скачать 145.02 Kb.
Дата24.08.2016
Размер145.02 Kb.
Министерство образования и науки Российской Федерации

Государственное образовательное учреждение

высшего профессионального образования

«Тамбовский государственный технический университет»


Кафедра «Информационные системы

и защита информации»

Отчет

о выполнении практического задания

по дисциплине: «Теория информационных процессов и систем»,

на тему: «Системный анализ языков программирования в условиях неопределенности на основе функций полезности»

Выполнил: студент гр. СИС−31 Иванов И.И.

Проверил: профессор Дидрих В.Е.





Тамбов, 2011


  1. Постановка задачи системного анализа

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

В этой работе рассматриваются 5 языков программирования:



  1. С++ (a1)

  2. PHP (a2)

  3. C# (a3)

  4. JavaScript (a4)

  5. SQL (a5)

Область применения этих языков:

  1. Использование для Web-программирования (k1)

  2. Использование для приложений ОС *nix (k2)

  3. Использование для приложений ОС Windows (k3)

  4. Использование для работы с базами данных (k4)

Для анализа используются следующие методы:

  1. Метод Лапласа.

  2. Критерий оптимизма.

  3. Критерий осторожности.

  4. Критерий пессимизма.

  5. Критерий рисков Сэвиджа.

  6. Критерий временного-пессимизма-оптимизма Гурвица.

  7. Критерий Байеса-Лапласа.

  8. Критерий минимума СКО.

  9. Критерий минимума энтропий.

  10. Критерий Гермейера.

  1. Обоснование значений функций полезности и вероятностей.

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

Использование для Web-программирования:

Языки PHP, C#, JavaScript предназначены в первую очередь для web-программирования, так как в настоящее время используются два основных серверных направления – ASP.NET(C#) и PHP, то им присваивается значение функции полезности - 0.9.

Значение функции полезности для языка JavaScript – 0.7, т. к. он используется в основном как дополнение (скриптование) к основной задаче.

Язык C++ практически не используется для Web-программирования, поэтому значение функции полезности - 0.2.

Язык SQL используется для Web-программирования как дополнительный язык, при использовании баз данных. Значение функции полезности - 0.4.

Использование для приложений *nix:

После появления операционной системы Linux, язык C++ стал широко использоваться в ОС *nix. Значение функции полезности - 0.9

Используя язык PHP можно написать приложение для ОС *nix, но для этого отсутствуют графические библиотеки, которые используются с PHP, все же более удобными языками будут языки C++ или C#. Чаще его не используют для этих целей. Значение функции полезности - 0.3.

После выпуска среды Mono Develop, C# стал эффективно использоваться под ОС *nix, но на настоящий день большая часть разработчиков разрабатывает приложения на C++. Значение функции полезности - 0.8.

Язык JavaScript, как язык для написания дополнительных возможностей (скриптов) используется для оформления графической оболочки ОС *nix. Значение функции полезности - 0.6.

Для языка SQL значение функции полезности остается равным 0.4, а причины те же что и при разработке Web.



Использование для приложений Windows:

C++ прекрасно подходит для разработки приложений под данную платформу. Значение функции полезности - 0.9.

Для разработки приложений на PHP существуют такие же проблемы, как и на ОС *nix. Значение функции полезности 0.3.

C# разработанный Microsoft – одно из лучших решений для разработки ПО. Значение функции полезности - 0.9

JavaScript так же используется для оформления графики и дизайна, но намного реже чем на *nix. Значение функции полезности - 0.5.

SQL – дополнительный язык, при использовании баз данных. Значение функции полезности - 0.4.



Использование для работы с базами данных:

Все языки программирования умеют работать с базами данных кроме JavaScript, исключая работу через LiveWire. Этот язык получает значение функции полезности равное 0.1.

Так как языки программирования PHP, C#, C++ близки по использованию баз данных, то значение функции полезности равно 0.4.

Язык SQL – структурированный язык запросов к базам данных, используется только для работы с БД. Значение функции полезности - 0.9.



Частота использования языков в вероятностях:

Так как большая часть ПО разрабатывается под Windows – то вероятность разработки под Windows равна 0.3.

Вероятность равную 0.3 можно установить и на разработку Web-приложений, потому что Интернет на сегодняшний день очень актуален.

Вероятность равную 0.2 стоит установить на разработку Баз Данных и разработку под ОС семейства *nix.



Значение для критерия Гурвица:

Значение Гурвица – 0.3, потому что я придерживаюсь критерия оптимизма.

Полученные данные можно записать в виде таблиц:

Значения функций полезности.



ai \ kj

k1

k2

k3

k4

a1

0.2

0.9

0.9

0.4

a2

0.9

0.3

0.3

0.4

a3

0.9

0.8

0.9

0.4

a4

0.7

0.6

0.5

0.1

a5

0.4

0.4

0.4

0.9

Значения вероятностей:

Pi

0.3

0.2

0.3

0.2

Значение для критерия Гурвица:

γ = 0.3


  1. Теоретические расчеты.

  1. Критерий Лапласа.

Расчетная формула:

Расчет:


k(a1) = (1/4)*(0.2 + 0.9 + 0.9 + 0.4) = 0.6

k(a2) = (1/5)*(0.9 + 0.3 + 0.3 + 0.4) = 0.475

k(a3) = (1/5)*(0.9 + 0.8 + 0.9 + 0.4) = 0.75

k(a4) = (1/5)*(0.7 + 0.6 + 0.5 + 0.1) = 0.475

k(a5) = (1/5)*(0.4 + 0.4 + 0.4 +0.9) = 0.525

Используя критерий Лапласа можно сделать вывод, что язык C# лучше подходит для поставленных условий.



  1. Критерий оптимизма.

Расчетная формула:

Расчет:


По j выбираем максимальные значения:

0.9; 0.9; 0.9; 0.7; 0.9

И из полученных значений снова выбираем максимальное. Оно равно 0.9.

Получаем, что все языки, кроме JavaScript подходят для поставленных условий, используя критерий оптимизма.



  1. Критерий осторожности.

Расчетная формула:

Расчет:


По j выбираем максимальные значения:

0.9; 0.9; 0.9; 0.7; 0.9

И из полученных значений выбираем минимальное. Оно равно 0.7.

Получаем, что только JavaScript подходит для поставленных условий, используя критерий осторожности.



  1. Критерий пессимизма.

Расчетная формула:

Расчет:


По j выбираем минимальные значения:

0.2; 0.3; 0.4; 0.1; 0.4

А из полученных значений выбираем максимальное. Оно равно 0.4.

Получаем, что используя критерий пессимизма, языки C# и SQL подходят для поставленных условий.



  1. Критерий рисков Сэвиджа.

Расчетные формулы:

,

где :



Расчет:


Для удобства рассчитаем матрицу рисков:

ai \ kj

k1

k2

k3

k4

a1

0.7

0

0

0.5

a2

0

0.6

0.6

0.5

a3

0

0.1

0

0.5

a4

0.2

0.3

0.4

0.8

a5

0.5

0.5

0.5

0

А далее считаем по формуле критерия осторожности, только теперь используем вместо значения функции полезности значение функции рисков.

Получаем максимальное значение: 0.5.

Используя критерий рисков Сэвиджа можно сделать вывод, что языки C# и SQL лучше подходят для поставленных условий.


  1. Критерий временного оптимизма-пессимизма Гурвица.

Принцип данного критерия сводится к тому, чтобы свести результаты либо в сторону критерия оптимизма, учитывая пессимистические условия, либо в сторону пессимизма, учитывая оптимистические условия.

В моем случае, я придерживаюсь критерия оптимизма, и параметр Гурвица равен 0.3.

Расчетная формула:

Расчет:


k(a1) = 0.7*0.9 + 0.3*0.2 = 0.69

k(a2) = 0.7*0.9 + 0.3*0.3 = 0.72

k(a3) = 0.7*0.9 + 0.3*0.4 = 0.75

k(a4) = 0.7*0.7 + 0.3*0.1 = 0.52

k(a5) = 0.7*0.9 + 0.3*0.4 = 0.75

Выбираем максимальное значение: 0.75

Используя критерий временного оптимизма-пессимизма Гурвица, при =0.3, можно сделать вывод, что язык C# и SQL лучше подходят для поставленных условий.


  1. Критерий Байеса-Лапласа.

Принцип критерия Байеса-Лапласа сводится к критерию Лапласа, но при заданных значениях вероятности. Критерий Лапласа следует считать равновероятностным.

Расчетная формула:



,

где :



Расчет:


k(a1) = (0.3*0.2 + 0.2*0.9 + 0.3*0.9 + 0.2*0.4) = 0.59

k(a2) = (0.3*0.9 + 0.2*0.3 + 0.3*0.3 + 0.2*0.4) = 0.5

k(a3) = (0.3*0.9 + 0.2*0.8 + 0.3*0.9 + 0.2*0.4) = 0.78

k(a4) = (0.3*0.7 + 0.2*0.6 + 0.3*0.5 + 0.2*0.1) = 0.5

k(a5) = (0.3*0.4 + 0.2*0.4 + 0.3*0.4 + 0.2*0.9) = 0.5

Найдем максимальное значение: k(a3) = 0.78

Используя критерий Байеса-Лапласа при заданных вероятностях, можно сделать вывод, что язык C# лучше подходит для поставленных условий.


  1. Критерий минимума среднеквадратичного отклонения.

Расчетная формула:

,

где :



Расчет:


k(a1) = = 0.62

k(a2) = = 0.5

k(a3) = = 0.42

k(a4) = = 0.46

k(a5) = = 0.44

Найдем минимальное значение: k(a3) = 0.42

Используя критерий минимума среднеквадратичного отклонения при заданных вероятностях, можно сделать вывод, что язык C# лучше подходит для поставленных условий.


  1. Критерий минимума энтропии.

Расчетная формула:

,

где :



,

где :



Расчет:


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

ai \ kj

k1

k2

k3

k4

a1

0.1

0.31

0.46

0.14

a2

0.54

0.12

0.18

0.16

a3

0.35

0.21

0.35

0.16

a4

0.42

0.24

0.3

0.04

a5

0.24

0.16

0.24

0.36

Найдем энтропии:

k(a1) = = 0.39

k(a2) = = 0.42

k(a3) = = 0.34

k(a4) = = 0.19

k(a5) = = 0.53

Найдем минимальное значение: k(a4) = 0.19

Используя критерий минимума энтропии при заданных вероятностях, можно сделать вывод, что язык JavaScript лучше подходит для поставленных условий.



  1. Критерий Гермейера.

Расчетная формула:

,

где :



для нормированной полезности:



Расчет:


Рассчитаем матрицу :

ai \ kj

k1

k2

k3

k4

a1

0.8

0.1

0.1

0.6

a2

0.1

0.7

0.7

0.6

a3

0.1

0.2

0.1

0.6

a4

0.3

0.4

0.5

0.9

a5

0.6

0.6

0.6

0.1

По j выбираем минимальные значения и умножаем на вероятность:

0.02; 0.03; 0.03; 0.08; 0.02

И из полученных значений выбираем максимальное. Оно равно 0.08.

Получаем, что язык JavaScript подходит для поставленных условий, используя критерий Гермейера.



Для удобства просмотра результатов, представим решение в виде таблицы:

ai \ kj

k1

k2

k3

k4

1

2

3

4

5

6

7

8

9

10

a1

0.2

0.9

0.9

0.4

0.6

0.9

0.9

0.2

0.7

0.69

0.59

0.62

0.39

0.02

a2

0.9

0.3

0.3

0.4

0.475

0.9

0.9

0.3

0.6

0.72

0.5

0.5

0.42

0.03

a3

0.9

0.8

0.9

0.4

0.75

0.9

0.9

0.4

0.5

0.75

0.78

0.42

0.34

0.03

a4

0.7

0.6

0.5

0.1

0.475

0.7

0.7

0.1

0.8

0.52

0.5

0.46

0.19

0.08

a5

0.4

0.4

0.4

0.9

0.525

0.9

0.9

0.4

0.5

0.75

0.5

0.44

0.53

0.02

pi

0.3

0.2

0.3

0.2

































  1. Расчеты на ЭВМ

Для расчетов на ЭВМ использовалась онлайн программа «Оценка систем»: http://ananskikh.ru/ocenka_sistem.php

Описание программы находится здесь: http://ananskikh.ru/blog/read/15



Результаты работы программы:

c:\users\сергей\desktop\123\1.jpg

c:\users\сергей\desktop\123\2.jpg

c:\users\сергей\desktop\123\3.jpg


c:\users\сергей\desktop\123\4.jpg




  1. Сравнение результатов и выводы.

Для проверки правильности решения, сравним полученные теоретические расчеты, расчеты на ЭВМ и представим в виде таблиц:

ai \ №

Теоретические

На ЭВМ

1

2

3

4

5

1

2

3

4

5

a1

0.6

0.9

0.9

0.2

0.7

0.6

0.9

0.9

0.2

0.7

a2

0.475

0.9

0.9

0.3

0.6

0.475

0.9

0.9

0.3

0.6

a3

0.75

0.9

0.9

0.4

0.5

0.75

0.9

0.9

0.4

0.5

a4

0.475

0.7

0.7

0.1

0.8

0.475

0.7

0.7

0.1

0.8

a5

0.525

0.9

0.9

0.4

0.5

0.525

0.9

0.9

0.4

0.5

ai \ №

Теоретические

На ЭВМ

6

7

8

9

10

6

7

8

9

10

a1

0.69

0.59

0.62

0.39

0.02

0.69

0.59

0.6167

0.3908

0.02

a2

0.72

0.5

0.5

0.42

0.03

0.72

0.5

0.5

0.4230

0.03

a3

0.75

0.78

0.42

0.34

0.03

0.75

0.78

0.4166

0.3369

0.03

a4

0.52

0.5

0.46

0.19

0.08

0.52

0.5

0.4582

0.1857

0.08

a5

0.75

0.5

0.44

0.53

0.02

0.75

0.5

0.4358

0.5306

0.02

В полученных таблицах наглядно видно, что расчеты проведены верно.

Проведя системный анализ языков программирования в условиях неопределенности, используя 10 методов, можно сделать вывод, что язык C# по 7 методам – является наилучшим решением поставленной задачи, а значит, он лучше всех справляется с заданными условиями.


База данных защищена авторским правом ©infoeto.ru 2016
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница