Автор работы: Пользователь скрыл имя, 31 Мая 2012 в 18:05, курсовая работа
Данная курсовая работа имеет прямое отношение к экономике и звучит как первый опорный план о минимальной стоимости перевозки газа. Эта задача является одной из важнейших экономических задач в наше время, ведь различные крупные газодобывающие организации нуждаются в постоянной транспортировке газа в различные точки города, страны или даже мира.
Введение 4
1. Общая часть 5
1.1. Цель разработки 5
1.2. Анализ использования разработки 5
1.3. Анализ методов решения 6
1.4. Анализ средств программирования 6
1.4.1. Характеристики ПЭВМ 6
1.4.2. Характеристика ПО 8
1.4.3. Обзор средств программирования 9
1.4.4. Характеристика языков программирования 10
2. Специальная часть 13
2.1. Постановка задачи 13
2.2. Экономико-математическая модель 14
2.3. Метод северо-западного угла 15
2.4. Метод минимальной стоимости 17
2.5. Алгоритм решения задачи 20
2.5.1. Алгоритм основной программы 20
2.5.2. Алгоритм процедуры TForm1.Edit1Exit 21
2.5.3. Алгоритм процедуры TForm1.Edit2Exit 22
2.5.4. Алгоритм процедуры TForm1.Button4Click 23
2.5.5. Алгоритм процедуры TForm1.Button3Click1 23
2.5.6. Алгоритм процедуры sevzar 29
2.5.7. Алгоритм процедуры minelem 30
2.6. Описание решения задачи 32
2.6.1. Описание алгоритма основной программы 32
2.6.2. Описание алгоритма процедуры TForm1.Edit1Exit 32
2.6.3. Описание алгоритма процедуры TForm1.Edit2Exit 33
2.6.4. Описание алгоритма процедуры TForm1.Button4Click 33
2.6.5. Описание алгоритма процедуры TForm1.Button3Click1 33
2.6.6. Описание алгоритма процедуры sevzap 34
2.6.7. Описание алгоритма процедуры minelem 35
2.7. Ручной расчет контрольных примеров 36
2.8. Описание процесса отладки программы 51
Заключение 53
Список литературы 54
Среда разработки обычно предназначается
для конкретного языка
Среда разработки ПО также может быть оснащена специальными инструментами для визуального редактирования интерфейса программы. Такие среды называются средами визуальной разработки.
Среда разработки Borland Delphi 7.0, в которой и была разработана программа для данной курсовой работы, относится именно к средам визуальной разработки, что означает, что вид каждой программы создается простым перемещением составных элементов из набора данных.
В Delphi реализуется объектно-ориентированный подход к программированию (ООП). Отличием ООП от структурного программирования является то, что в ООП программист оперирует не просто процедурами и функциями, как в структурном программировании, а целыми объектами.
Объект представляет собой совокупность переменных, влияющих на его состояние и процедур и функций, которые определяют его поведение во время выполнения программы, либо могут быть вызваны при помощи этого объекта.
В ООП на программиста ложиться
роль написания процедур-
Языки программирования бывают двух видов: языки высокого уровня и языки низкого уровня.
Языки низкого уровня представляют собой набор команд непосредственно для процессора, и наиболее приближенны по своему синтаксису к машинному коду.
Языки высокого уровня более просты в освоении. Они не так зависят от компьютера, на котором происходит написание кода программы, как языки низкого уровня. Так же языки высокого уровня позволяют писать сложные выражения, использовать переменные уже существующих типов, либо же создавать свои типы, и обладают большим набором операций.
В Delphi в качестве базового языка программирования принят Object Pascal, являющийся расширением языка программирования высокого уровня Pascal.
Язык Pascal довольно прост в освоении. Программа, написанная на нём, представляет собой последовательность команд, разделенных точкой с запятой. Сами команды состоят из слов английского языка, что упрощает изучение Pascal.
Основные операторы языка Pascal это оператор присваивания, операторы циклов и условный оператор.
Оператор присваивания служит, как можно догадаться из названия, для присваивания переменной какого-либо значения. Этот оператор имеет следующую структуру:
<Переменная>:=<Значение>;
Значение должно быть того же типа, что и переменная.
Циклы в средах разработки, где основной язык Pascal, могут быть трех видов.
Цикл с предварительным условием используется в тех случаях, когда заранее неизвестно число повторений цикла. Оператор цикла с предусловием:
WHILE <Логическое условие> DO <Тело цикла>
Оператор работает
следующим образом:
Цикл с последующим условием используется в тех случаях, когда заранее неизвестно число повторений цикла. Его оператор:
REPEAT <Тело цикла> UNTIL <Логическое выражение>
Последовательность операторов из тела цикла выполняется хотя бы один раз до тех пор, пока условие не примет значение «истина». Использование операторных скобок в этом цикле не требуется.
Оператор цикла с параметром используется в тех случаях, когда заранее известно сколько раз должно повторяться тело цикла, и выглядит он так:
FOR <Переменная цикла>:=<Выражение 1> TO <Выражение 2> DO <Тело цикла>
Переменная цикла – это специальная переменная целого типа, с помощью которой оператор цикла будет вести отсчет того, сколько раз повторился цикл. Сперва оператор присваивает переменной значение выражения 1, а затем, с каждым новым выполнением тела цикла, прибавляет к этой переменной шаг цикла, равный единице. Цикл выполняется до тех пор, пока переменная не примет значение выражения 2. Если требуется не увеличивать, а уменьшать переменную цикла, то вместо служебного слова TO используется слово DOWNTO, и тогда шаг цикла становится равным -1. Тело цикла, состоящее из более чем одной команды, заключается в операторные скобки BEGIN…END.
Условный оператор, или оператор ветвления, используется в тех случаях, когда вычисления могут пойти по разным веткам. Его синтаксис:
IF <Условие> THEN <Оператор 1> ELSE <Оператор 2>
Если условие истинно, выполняется оператор, либо последовательность операторов, которая, в таком случае, должна быть записана в операторных скобках, идущий за словом THEN. Если условие принимает ложное значение, выполняется оператор, идущий после ELSE.
Условный оператор так
же может быть неполным, то есть, в
нем может отсутствовать вся
часть оператора после слова
ELSE, включая само это слово. В таком случае,
при ложном значении условия произойдет
выход из условного оператора.
Задача состоит в том, чтобы отыскать минимальную стоимость перевозки газа.
Пусть поставщиками газа будут ОАО «ЛУКОЙЛ», ООО «Межрегионгаз» и ООО «НГК «Итера», которые поставляют газ в такие организации как ООО «СЭТ», ОАО «ОГК-2» и УК «Объединенные бумажные фабрики». Пример расчета приведен в таблице 1.
Таблица 1
Поставщики |
Организации-потребители |
Объем вывоза, м3 | ||
B1 |
B2 |
B3 | ||
Стоимость перевозки 1м3, д.ед. | ||||
A1 |
1 |
2 |
3 |
12 |
A2 |
4 |
1 |
6 |
18 |
A3 |
7 |
4 |
9 |
10 |
Объем вывоза, м3 |
10 |
11 |
19 |
40 |
Цель задачи: минимизировать общую стоимость перевозки газа, в соответствии с которой построить оптимальный план перевозок.
Исходя из поставленной задачи с учетом ввода объема газа, перевозимого из точек поставки в торговые точки, целевая функция будет выглядеть, как показано в формуле 1:
где cij – стоимость перевозки единицы газа от i-ого поставщика j-ому потребителю;
xij – количество м3 газа, отправленное i-ым поставщиком j-ому потребителю.
Таким образом, в данной задаче необходимо найти такое решение x = {x11, x12, x13, …, xmn} (m – количество поставщиков, n – количество потребителей), при котором значение целевой функции будет минимальным.
Найденный план перевозок должен будет удовлетворять системе неравенств:
Условие 1 определяет распределение газа между потребителями, не превышающее объемов запасов данного поставщика (ai). Условие 2 определяет объемы поставок газа текущему потребителю, которые будут не меньше необходимых потребностей (bj).
В данном методе запасы очередного по номеру поставщика используются для обеспечения запросов очередных по номеру потребителей до тех пор, пока не будут исчерпаны полностью, после чего используются запасы следующего по номеру поставщика.