Разработка программы для контроля плана закупок и использования нефти

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.01.2016
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Постановка задачи

1.1 Математическая модель задачи

1.2 Входные данные

1.3 Выходные данные

1.4 Обработка ошибок

2 Проектирование программного модуля

2.1 Разработка структурной диаграммы программного модуля

2.2 Разработка пользовательского интерфейса

3 Реализация программного модуля

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

4. Тестирование программного модуля

Заключение

Список использованных источников

Приложение А

Введение

Корни исследования операций уходят в далекую историю. Резкое увеличение размеров производства, разделение труда обусловило постепенную дифференциацию управленческого труда. Появилась необходимость в планировании материальных, трудовых и денежных ресурсов, в учете и анализе труда и выработке прогноза на будущее. В управленческом аппарате начали выделяться подразделения: отдел финансов, сбыта, бухгалтерии, планово экономический отдел и другие, принявшие на себя отдельные управленческие функции.

К этому периоду относятся первые работы по исследованию в области организации труда и управления - первые предвестники будущей науки.

Как самостоятельное научное направление исследование операций оформилось в начале 40-х годов.

Первые публикации по исследованию операций относятся к 1939-1940 гг, в которых методы применены для решения военных задач, в частности для анализа и исследования военных операций. Отсюда и пошло название дисциплины. Позднее принципы и методы исследования операций стали применяться в сфере промышленно финансового управления. С увеличением масштабов производства расширялись массштабы операционных исследований, круг решаемых задач, совершенствовались методы новой науки.

Возникла необходимость в подготовке кадров специалистов по исследованию операций - операционистов. В ведущих университетах США и Англии впервые было начато систематическое преподавание курса исследование операций.

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

С этой целью в 1957 г. была создана Международная федерация исследования операций IFORS , в состав которой входили национальные общества и комитеты по исследованию операций многих стран.

Следует отметить, что не существует жесткого, устоявшегося и общепринятого определения предмета исследования операций. Часто при ответе на данный вопрос говорится, что операционный анализ представляет собой применение научных мето-дов к сложным проблемам, возникающим в управлении большими система-ми людей, машин, материалов и денег в промышленности, деловых кругах, правительстве и обороне. Характерной особенностью подхода является по-строение для системы научной модели, включающей факторы вероятности и риска, при помощи которой можно рассчитать и сравнить результаты различных решений, стратегий и управлений.

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

Целью данной курсовой работы является составление плана закупок и использование нефти, обеспечивающее нефтеперерабатывающему заводу максимальную прибыль и разработка программного модуля для этой задачи. Для этого используется программа Microsoft Visual Studio 2010 и встроенный язык программирования C#, для автоматизации решения задачи симплексным методом. Симплекс-метод -- алгоритм решения оптимизационной задачи линейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве. Иными словами, это итеративный процесс направленного решения системы уравнений по шагам, который начинается с опорного решения и в поисках лучшего варианта и движется по угловым точкам области допустимого решения, улучшающих значение целевой функции до тех пор, пока целевая функция не достигнет оптимального значения.

В первом разделе «Постановка задачи» приводится математическая модель решаемой задачи, со всеми необходимыми формулами, которые требуются для её решения. Описываются входные и выходные данные и требованиями к ним, которые необходимы для правильного решения задачи. В программе предусмотрена обработка ошибок, описывается, когда может возникнуть ошибка, при каких действиях пользователя и как программа отреагирует на эти действия. Во втором разделе «Проектирование программного модуля» приводится структурная диаграмма программного модуля. Здесь даётся краткое описание всех уровней диаграммы с назначениями всех её блоков. В разделе «Реализация программного модуля» приводится код программного модуля. В разделе «Тестирование программного модуля» рассмотрена работа приложения. В конце работы приведен список использованных источников.

1. Постановка задачи

1.1 Математическая модель задачи

Для нахождения решения задачи линейного программирования в общем случае (при произвольном числе свободных переменных) применяют не геометрические, а вычислительные методы. Из них наиболее универсальным является симплекс-метод.

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

Алгоритм симплексного метода включает следующие этапы:

Составление первого опорного плана

Проверка плана на оптимальность

Определение разрешающих столбца и строки

Построение нового опорного плана

Составление первого опорного плана.

Если система ограничений задачи дана в виде системы неравенств, правые части которых , перейдут от системы неравенств к системе уравнений путем введения неотрицательных дополнительных переменных. Эти переменные называются базисными. Решим эту систему относительно базисных переменных.

,

где - базисные переменные, - свободные переменные.

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

Таблица 1.1 - Пример симплекс-таблицы

Б.П

З.Б.П.(С.Ч.)

F

0

Б.П. - базисные переменные, З.Б.П.- значения базисных переменных, С.Ч.- свободные члены, последняя строка таблицы - индексная строка (строка целевой функции).

После составления таблицы просмотрят элементы столбца свободных членов. Если все они положительны, то опорное решение найдено и начинается процесс нахождения оптимального решения.

Алгоритм нахождения оптимального плана.

Считают, что в симплексной таблице получено опорное решение. Просматривают коэффициенты индексной строки. Если все они неотрицательны, то оптимальное решение получено. В этом решении все небазисные переменные равны 0, а базисные переменные равны значению столбца свободных членов.

Если среди коэффициентов строки функции (индексной) имеются отрицательные (за исключением свободного члена), то выбирают среди них наибольший по абсолютной величине, и столбец, в котором находится этот коэффициент, берут за разрешающий. Разрешающий столбец показывает, какая переменная на следующей итерации перейдёт из свободных в базисные.

Затем элементы столбца свободных членов делят на элементы того же знака (+/+, -/-) разрешающего столбца. Результаты, которые будут всегда положительные, заносим в отдельный столбец симплексных отношений (СО) (если знаки разные или деление на 0 -- в столбце СО прочерк).

Разрешающую строку находят по наименьшему симплексному отношению.

Элемент таблицы, находящийся на пересечении разрешающих столбца и строки, называют разрешающим и выделяют.

С найденным разрешающим элементом рассчитывают новую таблицу.

Правила расчёта элементов новой таблицы:

вместо разрешающего элемента в новой таблице ставится обратная ему величина;

элементы разрешающей строки делят на разрешающий элемент;

элементы разрешающего столбца делят на разрешающий элемент и записывают с противоположным знаком;

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

>?

Сначала по этому правилу вычисляют произведение элементов и . Затем произведение элементов расположенных в двух других вершинах прямоугольника. Разность между найденными произведениями делят на разрешающий элемент.

;

После этого анализ новой таблицы начинают с пункта 1, и так до тех пор, пока не найдут оптимального решения или не убедятся, что его не существует.

Если в разрешающем столбце таблицы все элементы неположительны, то разрешающую строку выбрать невозможно. Задача в этом случае решения не имеет. Функция в области допустимых решений задачи не ограничена.

Если в строке функции в таблице с оптимальным решением имеется хотя бы один нулевой элемент, то задача имеет множество оптимальных решений (есть альтернативные оптимумы).

Решим исходную задачу вручную.

Составим математическую модель данной задачи.

Нефтеперерабатывающий завод закупает сырую нефть у двух компаний: “Севернефть” (по цене 75000 ден.ед./т) и “Афройл” (67000 ден.ед./т). Нефть, поставляемая компанией “Севернефть”, содержит 10% примесей, которые необходимо удалять при очистке. Нефть, поставляемая компанией “Афройл”, содержит 15% таких примесей.

Очищенная нефть смешивается для получения двух видов смазочных материалов: “Люкс” и “Стандарт”. Смазочный материал “Люкс” должен содержать не менее 10% нефти компании “Севернефть” и не более 25% нефти компании “Афройл”. Смазочный материал “Стандарт” должен содержать не менее 15% нефти компании “Севернефть”.

Смазочные материалы продаются по следующим ценам: “Люкс” - 90000 ден.ед./т, “Стандарт” - 87000 ден.ед./т. Спрос на смазочный материал “Люкс” не превышает 100000 т., “Стандарт” - 120000 т.

Составить план закупок и использования нефти, обеспечивающий нефтеперерабатывающему заводу максимальную прибыль.

Пусть:

? количество тонн нефти компании “Севернефть” купленной для изготовления смазочного материал “Люкс”.

? количество тонн нефти компании “Севернефть” купленной для изготовления смазочного материал “Стандарт”.

? количество тонн нефти компании “Афройл” купленной для изготовления смазочного материал “Люкс”.

? количество тонн нефти компании “Афройл” купленной для изготовления смазочного материал “Стандарт”.

После очистки нефти получим:

Введем ограничения. Для смазочного материала “Люкс”:

Преобразуем:

Для смазочного материала “Стандарт”:




Составим целевую функцию:

Таким образом, математическая модель задачи имеет вид:






Для построения первого опорного плана систему неравенств, приведем к системе уравнений путем введения дополнительных переменных (переход к канонической форме).

В 1-м неравенстве вводим базисную переменную y1,во 2-м неравенстве вводим базисную переменную y2, в 3-м неравенстве вводим базисную переменную y3, в 4-ом неравенстве вводим базисную переменную y4, в 5-ом неравенстве вводим базисную переменную y5.






Определим начальное решение. Все исходные переменные задачи являются небазисными, т.е. принимаются равными нулю (). Таким образом, начальное решение задачи следующее:

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

Выбранное решение не является оптимальным, так как целевая функция

при этом равна нулю. По своему смыслу это решение означает, что смазочные материалы не выпускаются.

Составим исходную симплекс-таблицу.

Таблица 1.2 - Первая симплекс-таблица

БП

X 1

X 2

X 3

X 4

X 5

X 6

X 7

X 8

X 9

ЗБП

F

-6000

-3300

-9500

-6950

0

0

0

0

0

0

X 5

-0,81

0

0,085

0

1

0

0

0

0

0

X 6

0

-0,77

0

0,13

0

1

0

0

0

0

X 7

-0,23

0

0,64

0

0

0

1

0

0

0

X 8

0,9

0

0,85

0

0

0

0

1

0

100000

X 9

0

0,9

0

0,85

0

0

0

0

1

120000

Таблица 1.3 - Вторая симплекс-таблица

БП

X1

X2

X3

X4

X5

X6

X7

X8

X9

ЗБП

F

-96529

-3300

0

-6950

111765

0

0

0

0

0

X3

-9,53

0

1

0

11,77

0

0

0

0

0

X6

0

-0,77

0

0,13

0

1

0

0

0

0

X7

5,87

0

0

0

-7,53

0

1

0

0

0

X8

9

0

0

0

-10

0

0

1

0

100000

X9

0

0,9

0

0,85

0

0

0

0

1

120000

Полученное решение не является оптимальным: в строке целевой функции имеется отрицательные элементы. Поэтому решение продолжается.

Таблица 1.4 - Третья симплекс-таблица

БП

X1

X2

X3

X4

X5

X6

X7

X8

X9

ЗБП

F

0

-3300

0

-6950

-12078

0

16448

0

0

0

X3

0

0

1

0

-0,46

0

1,62

0

0

0

X6

0

-0,77

0

0,13

0

1

0

0

0

0

X1

1

0

0

0

-1,28

0

0,17

0

0

0

X8

0

0

0

0

1,55

0

-1,53

1

0

100000

X9

0

0,9

0

0,85

0

0

0

0

1

120000

Полученное решение не является оптимальным: в строке целевой функции имеется отрицательные элементы. Поэтому решение продолжается.

Таблица 1.5 - Четвертая симплекс-таблица

БП

X1

X2

X3

X4

X5

X6

X7

X8

X9

ЗБП

F

0

-3300

0

-6950

0

0

4471,8

7809

0

780946208

X3

0

0

1

0

0

0

1,17

0,3

0

29812,05

X6

0

-0,77

0

0,13

0

1

0

0

0

0

Продолжение таблицы 1.5

X1

1

0

0

0

0

0

-1,1

0,83

0

82955,28

X5

0

0

0

0

1

0

-0,99

0,65

0

64659,75

X9

0

0,9

0

0,85

0

0

0

0

1

120000

Полученное решение не является оптимальным: в строке целевой функции имеется отрицательные элементы. Поэтому решение продолжается.

Таблица 1.6 - Пятая симплекс-таблица

БП

X1

X2

X3

X4

X5

X6

X7

X8

X9

ЗБП

F

0

-44465

0

0

0

53462

4471,8

7809

0

780946209

X3

0

0

1

0

0

0

1,17

0,3

0

29812,05

X4

0

-5,92

0

1

0

7,69

0

0

0

0

X1

1

0

0

0

0

0

-1,1

0,83

0

82955,28

X5

0

0

0

0

1

0

-0,99

0,65

0

64659,75

X9

0

5,93

0

0

0

-6,54

0

0

1

120000

Полученное решение не является оптимальным: в строке целевой функции имеется отрицательные элементы. Поэтому решение продолжается.

Таблица 1.7 - Шестая симплекс-таблица

БП

X1

X2

X3

X4

X5

X6

X7

X8

X9

ЗБП

F

0

0

0

0

0

4472

4472

7809

7493

1680051847

X3

0

0

1

0

0

0

1,17

0,3

0

29812

X4

0

0

0

1

0

1,17

0

0

1

119767

X1

1

0

0

0

0

0

-1,1

0,83

0

82955

X5

0

0

0

0

1

0

-0,99

0,65

0

64660

X2

0

1

0

0

0

-1,1

0

0

0,17

20220

Все элементы F-строки положительные, значит оптимальное решение найдено. Основные переменные задачи приняли следующие значения.

= 82955 ? количество тонн нефти компании “Севернефть” купленной для изготовления смазочного материал “Люкс”.

= 20220 ? количество тонн нефти компании “Севернефть” купленной для изготовления смазочного материал “Стандарт”.

= 29812 ? количество тонн нефти компании “Афройл” купленной для изготовления смазочного материал “Люкс”.

=119767 - количество тонн нефти компании “Афройл” купленной для изготовления смазочного материал “Стандарт”

=64660 - в смазочном материале “Люкс” будет содержаться на 64660 тонн нефти компании “Севернефть” свыше установленного минимума.

=0 - количество тонн нефти компании “Севернефть” содержащееся в смазочном материале “Стандарт” сверх установленного минимума (в смазочном материала “Стандарт” содержание нефти компании “Севернефть” не превысит установленный минимум в 15%).

=0 - количество тонн нефти компании “Афройл”, которое можно было бы еще добавить в смазочный материал “Люкс” (в смазочном материале “Люкс” содержится ровно 25% нефти компании “Афройл”).

=0 - продано ровно 100000 тонн смазочного материала вида “Люкс”.

=0 - продано ровно 120000 тонн смазочного материала вида “Стандарт”.

Таким образом, при изготовлении смазочный материал “Люкс” будет содержать: 75% нефти компании “Севернефть” и 25% нефти компании “Афройл”. Смазочный материал “Стандарт” будет содержать: 15% нефти компании “Севернефть” и 85% нефти компании “Афройл”.

1.2 Входные данные

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

Требования к входным данным:

ввод исходных данных осуществляется в поля ввода формы;

предусмотрена проверка на допустимость исходных данных и повторение ввода при ошибочных данных.

1.3 Выходные данные

В данной курсовой работе выходными данными являются значения максимальной прибыли и количество смазочного материала каждого вида;

Требования к выходным данным:

все выходные данные выводятся на форму;

ко всем выходным данным запрещен доступ со стороны пользователя.

1.4 Обработка ошибок

При выполнении программного модуля необходимо предусмотреть обработку следующих ошибок: неправильный ввод исходных данных или пропуск ячейки при заполнении. В этом случае необходимо сообщить пользователю о том, что имеются ошибки и в каком месте. Сообщения об ошибках будут выдаваться пользователю до тех пор, пока он не введёт корректные значения, удовлетворяющие условиям метода.

Основные ошибки и реакция программы на них указаны в таблице 1.8 и изображены на рисунках 1,2.

Таблица 1.8 - Основные ошибки и реакция программы на них.

Причина возникновения ошибки

Реакция программы

Пути исправления ошибки

Ввод нечисловых значений

Появляется сообщение об ошибке: «Вводимые данные должны быть числовыми значениями»

Ввести числовые значения исходных данных

Пустое поле значений (пропуск ячейки для ввода данных)

Появляется сообщение об ошибке: «Пожалуйста, заполните все ячейки!»

Ввести корректные значения исходных данных

Рисунок 1 - Реакция системы на ввод нечисловых значений

Рисунок 2 - Реакция системы на пропуск ячейки при заполнении

2. Проектирование программного модуля

2.1 Структурная диаграмма программного модуля

Структурная диаграмма включает два уровня. Первый уровень - Form1- пользовательская форма с текстовыми полями для ввода и пятью кнопками. Второй уровень - Form2- пользовательская форма настройки с двумя кнопками. Программа имеет структуру, изображенную на рисунке 3.

Рисунок 3 - Структурная диаграмма программного модуля

Form1 - пользовательская форма с пятью кнопками и полями для заполнения программы данными.

button1_Click() - пользовательская функция, срабатывающая при нажатии кнопки «Решить», которая считывает исходные данные, обрабатывает ошибки и выводит результат работы программы.

button2_Click() - пользовательская функция, срабатывающая при нажатии кнопки «Очистить», которая очищает поля для записей.

button3_Click() - пользовательская функция, срабатывающая при нажатии кнопки «Настройки», которая вызывает функцию Setting и открывает Form2, содержащую также две кнопки: button1_Click() - пользовательская функция, срабатывающая при нажатии кнопки «ОК», которая устанавливает значения, введенные в ячейки, и button2_Click() - пользовательская функция, срабатывающая при нажатии кнопки «Закрыть» для закрытия Form2.

button4_Click() - пользовательская функция, срабатывающая при нажатии кнопки «По умолчанию», которая устанавливает в ячейки для ввода данных значения по умолчанию, равные значениям из условия исходной задачи.

button5_Click() - пользовательская функция, срабатывающая при нажатии кнопки «О задаче», которая вызывает функцию Setting и форму about, которая содержит информацию о задаче (условие задачи).

checkOporReshenie() - пользовательская функция, которая находит опорное решение и проверяет на совместимость.

checkIndexString() - пользовательская функция, которая находит оптимальное решение.

checkRazreshElem() - пользовательская функция, которая находит разрешающий элемент.

raschetCO() - пользовательская функция, которая считает симплексное отношение.

checkCO () - пользовательская функция, которая проверяет симплексное отношение.

pereschet () - пользовательская функция, пересчитывает матрицу в соответствии с методом.

Программа содержит 3 формы. На каждой из них присутствуют элементы, описание которых приведено в таблицах.

Описание элементов формы «Симплекс-метод» представлено в таблице 2.1.

Описание элементов формы «Настройки» представлено в таблице 2.2.

Описание элементов формы «О задаче» представлено в таблице 2.3.

Таблица 2.1 - Описание элементов формы «Симплекс-метод»

Обозначение в программе

Тип элемента

Назначение элемента

button1

Button (представляет элемент управления Windows "Кнопка")

Решить задачу.

button2

Установить значения по умолчанию из исходной задачи.

button3

Очистить ячейки.

button4

Открывает форму «Настройки».

button5

Открывает форму «О задаче», где написано условие исходной задачи.

dataGridView1

DataGridView (предоставляет настраиваемую таблицу для отображения данных)

Отображает данные для ввода исходных данных.

richTextBox1

RichTextBox (предоставляет элемент управления полем форматированного текста Windows)

Отображает результат вычислений.

Таблица 2.2 - Описание элементов формы «Настройки»

Обозначение в программе

Тип элемента

Назначение элемента

button1

Button

Применить указанные настройки.

button2

Закрыть форму без сохранения и изменения настроек.

textBox5

TextBox (представляет элемент управления, который может использоваться для отображения или изменения неформатированного текста)

Изменение количества ячеек YY.

textBox6

Изменение количества ячеек ХХ.

Таблица 2.3 - Описание элементов формы «О задаче»

Обозначение в программе

Тип элемента

Назначение элемента

pictureBox1

PictureBox

(предоставляет элемент управления графическим окном Windows для отображения рисунка)

Отображает условие исходной задачи.

2.2 Разработка пользовательского интерфейса

программирование линейный прибыль задача

При запуске программы появляется пользовательская форма «Симплекс-метод», представленная на рисунке 4.

Рисунок 4 - Пользовательская форма «Симплекс-метод»

При нажатии на кнопку «По умолчанию» выполняется заполнение ячеек значениями по умолчанию (из условия исходной задачи).

Рисунок 5 - Результат нажатия кнопки «По умолчанию»

При нажатии на кнопку «Решить» выполняется алгоритм рассчета симплекс-методом, и выводится результат.

Рисунок 6 - Результат нажатия кнопки «Решить»

При нажатии на кнопку «Очистить» все ячейки очищаются. Вид формы соответствует рисунку 4.

При нажатии на кнопку «Настройки» открывается форма «Настройки», где пользователь может сам указать размерность матрицы (рисунок 7).

Рисунок 7 - Результат нажатия кнопки «Настройки»

При нажатии на кнопку «О задаче» открывается форма «Осмоловская Евгения, АСОИ-111», где находится условие исходной задачи (рисунок 8).

Рисунок 8 - Результат нажатия кнопки «О задаче»

Для расчета затрат времени на выполнение операций с пользовательским интерфейсом для получения полного решения требуемой задачи воспользуемся моделью GOMS. Идея метода: все действия пользователя можно разложить на составляющие (например, взять мышь или передвинуть курсор). Ограничив номенклатуру этих составляющих, можно замерить время их выполнения на массе пользователей, после чего получить статистически верные значения длительности этих составляющих. Хотя для различных пользователей время выполнения того или иного действия может сильно отличаться, вместо проведения измерений для каждого отдельно пользователя можно применить набор стандартных интервалов, приведенных в таблице 2.4.

Таблица 2.4 - Набор стандартных интервалов

K

0,2 сек

Нажатие клавиши. Время, необходимое для того, чтобы нажать клавишу, включая Alt, Ctrl и Shift.

P

1,1 сек

Указание. Время, необходимое пользователю для того, чтобы указать на какую-то позицию на экране монитора.

H

0,4 сек

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

M

1,35 сек

Ментальная подготовка. Время, необходимое пользователю для того, чтобы умственно подготовиться к следующему шагу.

R

от 0,1 сек до бесконечности

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

Инструкции в диалоговом окне довольно просты. На их основе можно описать метод действий, который должен использовать пользователь в терминах жестов модели GOMS.

Расстановка ментальных операций представлена в таблице 2.5.

Таблица 2.5 - Расстановка ментальных операций

Правило 0 - начальная расстановка операторов M

Операторы M следует устанавливать перед всеми операторами K (нажатие клавиши), а также перед всеми операторами P (указание с помощью мыши), предназначенными для выбора команд; но перед операторами P, предназначенными для указания на аргументы этих команд, ставить оператор M не следует.

Правило 1 - удаление ожидаемых операторов M

Если оператор, следующий за оператором M, является полностью ожидаемым с точки зрения оператора, предшествующего M, то этот оператор M может быть удален. Например, если вы перемещаете мышь с намерением нажать его кнопку по достижении цели движения, то в соответствии с этим правилом следует удалить оператор M, устанавливаемый по правилу 0. В этом случае последовательность P M K и P M M превращается в P K и в P M соответственно.

Правило 2 - удаление операторов M внутри когнитивных единиц

Если строка вида M K M K M K... принадлежит когнитивной единице, то следует удалить все операторы M, кроме первого. Когнитивной единицей является непрерывная последовательность вводимых символов, которые могут образовывать название команды или аргумент. Например, Y, перемещать, Елена Троянская или 4564.23 являются примерами когнитивных единиц.

Правило 3 - удаление операторов M перед последовательным разделителем

Если оператор K означает лишний разделитель, стоящий в конце когнитивной единицы (например, разделитель команды, следующий сразу за разделителем аргумента этой команды), то следует удалить оператор M, стоящий перед ним.

Правило 4 - удаление операторов M, которые являются прерывателями команд

Если оператор K является разделителем, стоящим после постоянной строки (например, название команды или любая последовательность символов, которая каждый раз вводится в неизменном виде), то следует удалить оператор M, стоящий перед ним. (Добавление разделителя станет привычным действием, и поэтому разделитель, станет частью строки, и не будет требовать специального оператора M.) Но если оператор K является разделителем для строки аргументов или любой другой изменяемой строки, то оператор M следует сохранить перед ним.

Правило 5 - удаление перекрывающихся операторов M

Любую часть оператора M, которая перекрывает оператор R, означающий задержку, связанную с ожиданием ответа компьютера, учитывать не следует.

Разделителем будет считаться символ, которым обозначено начало или конец значимого фрагмента текста, такого как, например, слово естественного языка или телефонный номер. Например, пробелы являются разделителями для большинства слов. Точка является наиболее распространенным разделителем, который используется в конце предложений. Скобки используются для ограничения пояснений и замечаний и т.д. Операторами являются K, P и H. Если для выполнения команды требуется дополнительная информация (как, например, в случае, когда для установки будильника пользователю требуется указать время его включения), эта информация называется аргументом данной команды.

Посчитаем скорость выполнения программы.

Действия для главной формы «Симплекс-метод».

Возьмем за пример матрицу 56. Т.к. курсор уже установлен, вводим число (например, четырёхзначное ? три цифры и знак запятой): K+K+K+K.

Нажимаем клавишу «tab» для перемещения и опять вводим число:

K+K+K+K+K+ K+K+K+K.

Так повторяем 29 раз, после чего перемещаем курсор на кнопку «Решить» и нажимаем:

K+K+K+K+29*( K+ K+K+K+K) +H+Р+K.

По правилу 0 расставим ментальные операции:

M+K+K+K+K+29*(M+K+ K+K+K+K) +H+M+Р+М+K.

Преобразуем по правилам расстановки ментальных операций:

M+K+K+K+K+29*(M+K+ K+K+K+K)+H+Р+М+K (по правилу 1, т.к. оператор «Н» полностью ожидаемый, т.е. происходит перемещение мыши с намерением нажать кнопку «Решить» для достижения цели).

Подставим числовые значения:

1.35+0.2+0.2+0.2+0.2+29*(1.35+0.2+0.2+0.2+0.2+0.2)+ 0.4+1.1+1.35+0.2=73.35(сек).

Допустим, что в 20 процентах случаев, пользователь совершит, например, 2 ошибки. Вычислим скорость заполнения программы.

Т.к. курсор уже установлен, вводим число (например, четырёхзначное):

K+K+К+К.

Нажимаем клавишу «tab» для перемещения и опять вводим число:

K+K+К+К+К+K+K+К+К.

Так повторяем 29 раз, после чего перемещаем курсор на кнопку «Решить»:

K+K+ K+K+29*(K+K+K+K+K)+H+Р.

Замечаем, что совершили две ошибки, перемещаем руку с клавиатуры на мышь, устанавливаем указатель в нужное нам поле и щелкаем клавишей мыши:

K+K+ K+K+29*(K+K+K+K+K)+H+Р+H+P+K.

Вводим нужное число:

K+K+ K+K+29*(K+K+K+K+K)+H+Р+H+P+K+Н+К+К+К+К.

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

K+K+ K+K+29*(K+K+K+K+K)+H+Р+2*(H+P+K+ Н+К+К+К+К).

Перемещаем курсор на кнопку «Решить» и нажимаем на нее:

K+K+K+K+29*(K+K+K+K+K)+H+Р+2*(H+P+K+Н+К+К+К+К)+H+Р+.

По правилу 0 расставим ментальные операции:

M+K+M+K+M+K+M+K+29*(M+K+M+K+M+K+M+K+M+K)+H+M+Р+2*(H+M+P+M+K+ Н+M+К+M+К+M+К+M+К)+H+M+Р+M+K.

По правилам 1 и 2 преобразуем:

M+K+K+K+K+29*(M+K+Н+K+K+K+K)+H+M+Р+2*(H+M+P+M+K+К+К+К+К)+H+M+Р+M+K.

Подставим числовые значения:

1.35+0.2+0.2+0.2+0.2+29*(1.35+0.2+0.2+0.4+0.2+0.2+0.2)+ 0.4+1.35+1.1+2*(0.4+1.35+1.1+1.35+0.2+0.2+0.2+0.2+0.2)+ 0.4+1.35+1.1+1.35+0.2=87.99(сек).

Учитывая время реакции системы (R=0.1 сек), вычислим время выполнения программы:

(73.35+0.1)*0.8+(87.99+0.1)*0.2=76.38сек).

Действия для главной формы «Симплекс-метод» с использованием кнопки «По умолчанию».

Необходимо на форме «Настройки» установить матрицу 45, введя значения 4 и 5 в ячейки, удалив при этом прошлые значения. Затем нажать на кнопку «Очистить» для установки матрицы нового размера. Затем нажать кнопки «По умолчанию» и «Решить»:

P+K+P+K+K+K+H+ P+K+K+K+H+P+K+P+K+P+K+P+K.

По правилу 0 расставим ментальные операции:

M+P+M+K+M+P+M+K+M+K+M+K+H+M+P+M+K+M+K+M+K+H+M+P+M+K+M+P+M+K+M+P+M+K+M+P+M+K.

По правилам 1 и 2 преобразуем:

M+P+M+K+M+P+M+K+K+K+H+M+P+M+K+K+K+H+M+P+M+K+M+P+M+K+M+P+M+K+M+P+М+K.

Подставим числовые значения:

M+P+M+K+M+P+M+K+K+K+H+M+P+M+K+K+K+H+M+P+M+K+M+P+M+K+M+P+M+K+M+P+М+K=1.35+1.1+1.35+0.2+1.35+1.1+1.35+0.2+0.2+0.2+0.4+1.35+1.1+1.35+0.2+0.2+0.2+0.4+1.35+1.1+1.35+0.2+1.35+1.1+1.35+0.2+1.35+1.1+1.35+0.2+1.35+1.1+1.35+0.2=29.6(сек).

Учитывая время реакции системы (R=0.1 сек), вычислим время выполнения программы:

29.6+0.1=29.7(сек).

Просмотр условия задачи (форма «О задаче»).

Нужно поместить курсор на кнопку «О задаче» и нажать ее. Примем М - время, необходимое для того, чтобы пользователь прочитал условие задачи, за 50 секунд:

P+K+M+P+K.

По правилу 0 расставим ментальные операции:

M+P+M+K+M+M+P+M+K.

По правилам 1 и 2 преобразуем:

M+P+K+M+M+P+K.

Подставим числовые значения:

M+P+K+M+M+P+K=1.35+1.1+0.2+50+1.35+1.1+0.2=55.3(сек).

3. Реализация программного модуля

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

Код программы представлен в приложении А.

4. Тестирование программного модуля

Чтобы доказать работоспособность программного модуля, проведем контрольное тестирование программы (рисунок 9) и сравним результаты ее выполнения с данными, полученными с помощью сервиса программы Microsoft Excel «Поиск решения» (рисунок 11).

Рисунок 9 - Результат, полученный с помощью «Поиска решения»

Рисунок 10 - Параметры «Поиска решения»

Рисунок 11 - Результаты вычислений в разработанном программном модуле

Как видно из результатов тестирования, программа выдает аналогичное решение. Это означает, что алгоритм и текст программы написаны верно.

Заключение

В результате выполнения курсовой работы было произведено математическое описание задачи линейного программирования, написана программа в среде разработки Microsoft Visual Studio 2013 и проверена с помощью табличного процессора «Поиск решения» в Microsoft Excel.

По результатам проведенного тестирования можно сделать выводы:

Программа выдает адекватное решение при любых исходных данных. Это означает, что алгоритм и текст программы написаны верно.

Программа имеет дружественный интерфейс. Время от начала ввода исходных данных до вывода результата на экран минимизировано.

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

Список использованных источников

1. Шапкин А.С., Мазаева Н.П. Математические методы и модели исследования операций: Учебник. - 2-е изд., перераб. и доп. - М.: Дашков и К, 2005. - 400 с.

2. Конспект лекций по САиИО.

3. Троелсен Эндрю, Язык программирования С# 2010 и платформа .NET 4.0, 5-е изд.: Пер. с англ. -- с англ. -- М. : ООО "И.Д. Вильяме", 2011. -- 1392 с. : ил. -- Парал. тит. англ.

Рекомендации по общепользовательскому интерфейсу, под ред. И.П.Кузнецова - М.: «Высшая школа», 1995. - 215 с.: ил.

Размещено на Allbest.ru

...

Подобные документы

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

  • Создание программного модуля, выполненного на языке программирования VBA (Visual Basic for Applications) и позволяющего во введенном массиве символов удалить все повторные вхождения этих символов. Разработка пользовательского интерфейса. Код программы.

    курсовая работа [317,4 K], добавлен 11.10.2012

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и оценка структур данных для ее хранения. Разработка основных алгоритмов решения и структурной схемы программного продукта. Проектирование интерфейса пользователя.

    курсовая работа [449,8 K], добавлен 14.01.2011

  • Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.

    курсовая работа [874,7 K], добавлен 27.02.2013

  • Методы решения задач линейного программирования: планирования производства, составления рациона, задачи о раскрое материалов и транспортной. Разработка экономико-математической модели и решение задачи с использованием компьютерного моделирования.

    курсовая работа [607,2 K], добавлен 13.03.2015

  • Сущность линейного программирования. Математическая формулировка задачи ЛП и алгоритм ее решения с помощью симплекс-метода. Разработка программы для планирования производства с целью обеспечения максимальной прибыли: блок-схема, листинг, результаты.

    курсовая работа [88,9 K], добавлен 11.02.2011

  • Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и выбор структур данных для ее хранения, разработка основных алгоритмов. Проектирование интерфейса пользователя. Выбор стратегии тестирования и разработка тестов.

    курсовая работа [332,3 K], добавлен 09.12.2014

  • Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.

    курсовая работа [1,1 M], добавлен 21.03.2012

  • Теоретическая основа линейного программирования. Задачи линейного программирования, методы решения. Анализ оптимального решения. Решение одноиндексной задачи линейного программирования. Постановка задачи и ввод данных. Построение модели и этапы решения.

    курсовая работа [132,0 K], добавлен 09.12.2008

  • Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.

    курсовая работа [1,7 M], добавлен 05.01.2015

  • Построения математической модели с целью получения максимальной прибыли предприятия, графическое решение задачи. Решение задачи с помощью надстройки SOLVER. Анализ изменений запасов ресурсов. Определение пределов изменения коэффициентов целевой функции.

    курсовая работа [2,4 M], добавлен 17.12.2014

  • Разработка программного модуля, позволяющего создать с помощью шаблона класса "бинарное дерево" картотеку абонентов, содержащую сведенья о телефонах и их владельцах. Выбор технологии, языка и среды программирования. Выбор стратегии тестирования программы.

    курсовая работа [1,1 M], добавлен 11.12.2010

  • Решение задачи линейного программирования симплекс-методом: постановка задачи, построение экономико-математической модели. Решение транспортной задачи методом потенциалов: построение исходного опорного плана, определение его оптимального значения.

    контрольная работа [118,5 K], добавлен 11.04.2012

  • Разработка и реализация программы расчета заданных функций на языке программирования VBA. Математическая модель, параметры и характеристики задачи, критерии оценки эффективности созданного модуля. Разработка алгоритма и тестирование программного модуля.

    курсовая работа [488,7 K], добавлен 08.09.2010

  • Математическое программирование. Линейное программирование. Задачи линейного программирования. Графический метод решения задачи линейного программирования. Экономическая постановка задачи линейного программирования. Построение математической модели.

    курсовая работа [581,5 K], добавлен 13.10.2008

  • Применение методов линейного программирования для решения оптимизационных задач. Основные понятия линейного программирования, свойства транспортной задачи и теоремы, применяемые для ее решения. Построение первичного опорного плана и системы потенциалов.

    курсовая работа [280,8 K], добавлен 17.11.2011

  • Анализ использования автоматизированной системы управления материально-техническим снабжением и средств программирования. Разработка программы на языке Visual FoxPro, процесс ее работы и отладки. Мероприятия по технике безопасности при работе на ЭВМ.

    дипломная работа [1,0 M], добавлен 29.06.2012

  • Создание математической модели, приведение ее к виду задачи линейного программирования. Геометрическая трактовка решения. Определение области допустимых значений. Составление симплекс-таблиц. Разработка опорного плана задачи методом минимального элемента.

    контрольная работа [260,2 K], добавлен 22.12.2013

  • Описание математических методов решения задачи оптимизации. Рассмотрение использования линейного программирования для решения транспортной задачи. Применение симплекс-метода, разработка разработать компьютерной модели в Microsoft Office Excel 2010.

    курсовая работа [1,5 M], добавлен 24.05.2015

  • Расчет производства необходимого количества продукции для получения максимальной прибыли предприятия. Математическая модель для решения задач линейного программирования. Построение ограничений и целевых функций. Исследование чувствительности модели.

    задача [74,7 K], добавлен 21.08.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.