Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов

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

Рубрика Экономико-математическое моделирование
Вид курсовая работа
Язык русский
Дата добавления 11.03.2011
Размер файла 1,1 M

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

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

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

КУРСОВАЯ РАБОТА

Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов

СОДЕРЖАНИЕ

Введение

1. Общий раздел

1.1 Цели разработки

1.2 Характеристика математических методов

1.3 Описание инструментальных средств

1.4 Обоснование среды программирования

2. Специальный раздел

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

2.2 Решение задачи

2.3 Описание алгоритма

2.4 Инструкция пользователя

Заключение

Приложение А

Введение

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

Решение транспортной задачи разбивается на три этапа.

-Проверка сбалансированности и построение математической модели.

-Определение базисного решения методом северо-западного угла по формуле

Xij=min{ai,bj}

или минимального элемента

-Определение оптимального решения методом потенциалов.

Шаг 1

Каждому поставщику поставить в соответствии число ui(i=1..m),каждому потребителю vj(j=1..n). для каждой заполненной клетки составим уравнение ui+vj=cij получаем m+n-1 уравнений с m+n неизвестными. Для определения частного решения любому потенциалу присваивается произвольное значение u1=0

Шаг 2

Для каждой не заполненной переменной подсчитываются косвенные тарифы cij=ui+vj

Шаг 3

Для каждой не заполненной клетки вычисляются разности c'ij-cij если все разности меньше или равно 0 то решение является оптимальным и можно прекратить решение, если есть больше 0 то выбирается клетка с MAX положительной разностью, которая выводится из базиса т.е. осуществляется переход к новому решению.

Шаг 4

Для выбранной небазисной переменной строится замкнутый путь состоящий из

-выбранная переменная

-три базисные переменные

Шаг 5

В каждой клетке пути начиная с выбранной проставляются знаки + и - поочередно. Выбирается минимальная величина с отрицательным знаком. Выбранная величина приближенная к клетки со знаком + и вычитается из клетки со знаком минус. Новые переменные заносятся в новую таблицу и переходим к Шагу 1.

1. ОБЩИЙ РАЗДЕЛ

1.1 Цель разработки

1.1.1 Получить практические навыки по разработке курсовой работы.

1.1.2 Повторить правила построения сетевых графиков; расчет временных параметров событий и работ, определение критического пути.

1.1.3 Разработать программный продукт

1.1.4 Повторить правила оформления документации в соответствии с ГОСТ-ом.

программный транспортный задача

1.2 Характеристика математических методов

Постановка задачи. Пусть имеется m-поставщиков А1,А2,Аm однородного грузов количестве а1,а2,am и n-потребителей, данного груза в количестве b1,b2, bn известны стоимость перевозок от i-поставщика кj-потребителю Cij. Требуется создать такой план выпуска продукции, чтобы транспортные расходы были минимальными. В конкретном случае возможны 3 ситуации: Количество груза у всех поставщиков равно потребности в данном грузе всех потребителей (1)

a1+a2+am=b1+b2+bn

Задача является сбалансированной модель его закрытая.

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

, (1.1)

-Количество грузов у поставщиков меньше потребности в грузе потребителей. Задача сбалансированная, модель открытая.(1.2)

, (1.2)

Решение транспортной задачи разбивается на три этапа.

-Проверка сбалансированности и построение математической модели.

-Определение базисного решения методом северо-западного угла по формуле (2)

Xij=min{ai,bj},(2)

или минимального элемента

-Определение оптимального решения методом потенциалов.

Шаг 1

Каждому поставщику поставить в соответствии число ui(i=1..m),каждому потребителю vj(j=1..n). для каждой заполненной клетки составим уравнение ui+vj=cij получаем m+n-1 уравнений с m+n неизвестными. Для определения частного решения любому потенциалу присваивается произвольное значение u1=0

Шаг 2

Для каждой не заполненной переменной подсчитываются косвенные тарифы cij=ui+vj

Шаг 3

Для каждой не заполненной клетки вычисляются разности c'ij-cij если все разности меньше или равно 0 то решение является оптимальным и можно прекратить решение, если есть больше 0 то выбирается клетка с MAX положительной разностью, которая выводится из базиса т.е. осуществляется переход к новому решению.

Шаг 4

Для выбранной небазисной переменной строится замкнутый путь состоящий из

-выбранная переменная

-три базисные переменные

Шаг 5

В каждой клетке пути начиная с выбранной проставляются знаки + и - поочередно. Выбирается минимальная величина с отрицательным знаком. Выбранная величина приближенная к клетки со знаком + и вычитается из клетки со знаком минус. Новые переменные заносятся в новую таблицу и переходим к Шагу 1.

1.3 Описание инструментальных средств

Электронные таблицы Excel используются для обработки цифровых данных по заданным формулам, а так же для автоматизации учета и разного рода отчетности. Документ Excel состоит из рабочего листа. Рабочий лист из строк и столбцов. Места пересечения столбцов и строк образует ячейки, в которых хранятся данные. Данные могут представлять собой текст, числа или формулы. Каждая ячейка имеет уникальный адрес, который состоит из названия столбца и строки, а также из имени рабочего листа (Адрес «Лист1!А2» т.е. ячейка располагается по адресу рабочий лист «Лист1», столбец «А», строка «2»). Данные всегда вводятся в ячейки. Ячейку можно сделать активной щелкнув на не курсором мышки, или прописать в поле имени. Теперь с этой ячейкой можно работать. Формулы могут включать в себя компоненты различных типов:

- Постоянные - фиксированные значения (12; 56);

- Ссылки на ячейки - адрес ячейки (А2; В9);

- Имена - используются как ссылка на ячейки и являются уникальные;

- Операторы используются для связи отдельных компонентов формул(+;-;*;/;^;%;(;));

- Функции - обозначаются определенными в Excel по умолчанию словами. Функции выполняют более или менее сложные вычисления (СУММ; СРЗНАЧ и т.д).

Компоненты, использование которых допускается в формулах, могут сочетаться в соответствии с правилами построения формул. Для того что бы ввести формулу нужно:

- Выделить ячейку, в которой требуется ввести формулу;

- Нажать клавишу «=»;

- Ввести константу или ссылку на ячейку (а3 или указать ячейку при помощи мышки);

- Ввести оператор, то есть математический знак;

- Ввести другую константу или ссылку на ячейку;

- Продолжать процедуру до тех пор, пока формула не будет полностью записана;

- Завершите ввод, нажав клавишу «Enter».

1.4 Обоснование среды программирования

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

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

Объектно-ориентированное визуальное программирование в Delphi выводит разработку приложений на новую ступень развития программирования. Она относится к системам быстрой разработки приложений (RAD - Rapid Application Development). При разработке интерфейса пользователя в Delphi традиционные структурные методы уступают место итерационным подходам, выполненным в интерактивном режиме Delphi. Это быстро развивающаяся система. В процессе ее развития были выпущены версии от Delphi до Delphi7. Каждая следующая версия дополняла предыдущую и повышала требования к ресурсам ПК. На ПК с ограниченными ресурсами целесообразно использовать более ранние версии системы. Новые версии Delphi требуют все больший объем дисковой памяти. Растут размеры выполняемых модулей приложений.

Все версии Delphi совместимы снизу вверх, т.е. все приложения, разработанные для более ранних версий, работают без изменения в более поздних версиях Delphi (кроме некоторых приложений для работы с базами данных). При разработке более поздних версий система Delphi дополнена средствами для работы с серверами Access'97, CORBA, MicroSoft Transaction Server (MTS), с технологией OLE, серверами COM Windows. Все они доступны, начиная с Delphi5. Большинство версий выпускается в нескольких вариантах: Standard (стандартный), Professional (профессиональный), Client/Server (клиент/

сервер), Enterprise (для разработки мощных баз данных). Библиотеки компонентов более поздних версий дополняются новыми компонентами.

Delphi использует язык Object Pascal в среде визуальной разработки. Компиляторы с языка семейства Паскаль фирмы Borland - один из самых быстрых компиляторов. Приложения Delphi могут использовать и на других языках: С++ и ассемблере.

Одна из главных задач Delphi - разработка приложений для работы с базами данных. В Delphi можно работать с различными СУБД (системами управления базами данных).

Объекты в Delphi - это элементы, из которых строится приложение: форма, рамка, кнопка, метка и пр. Объектом является и включаемый визуальный компонент (например, кнопка) в том виде, как он представлен во время помещения его на форму и во время выполнения программы. Объекты изображаются на экране до выполнения самой программы. Поэтому программирование в Delphi - визуальное.

Основным окном разрабатываемого приложения является форма. В процессе разработки приложения при размещении объекта на форме (например, кнопки) в визуальной среде основные параметры объекта (размер, положение на экране, цвет и пр.) сразу отображаются в виде реального компонента на форме, а соответствующий ему код на языке Object Pascal автоматически записывается в исходный файл формы, который отображает объект в процессе выполнения программы. Затем этот исходный код компилируется в исполняемый машинный код, который выполняется быстрее, чем интерпретируемый код других визуальных сред разработки.

Не весь код программы, написанной для Delphi, находится в приложении Delphi. Небольшая его часть фактически является частью Windows. Например, коды для стандартных окон диалога и кнопок полностью получены от Windows. Delphi просто использует их, выполняя соответствующие вызовы из Windows.

Программный код, который пишет программист в Delphi, будет обеспечивать реакцию на события. Delphi работает с событиями путем вызова определенных процедур - обработчиков (Handler) событий. Если процедура не связана с данным событием, то оно игнорируется и выполняется стандартная реакция системы или не производится никакого действия. Для выполнения реакции на событие Delphi ищет метод, например btnOKClick, имя которого состоит из имени объекта, вызвавшего событие (например, btnOK - имя кнопки), и имени события (например, Click).

Интегрированная среда разработчика Delphi - это система, которая имеет все, необходимое для проектирования, запуска и тестирования приложений. Она представляет собою многооконную систему. Вид ее может изменяться в зависимости от настройки. После загрузки интерфейс Delphi7 имеет вид, представленный на рисунке, и имеет 4 основных окна с заголовками:

1) главное окно (Delphi7 - Project1);

2) инспектор объектов (окно Object Inspector);

3) конструктор форм (окно формы - Form1);

4) редактор кода (окно Code).

Главное окно занимает верхнюю часть экрана. В нем расположены: строка заголовка, строка главного меню, панель инструментов и панель палитры компонентов. После загрузки Delphi заголовок главного окна: `Delphi7 - Project1'. Все основные команды разработки расположены в главном меню. Они позволяют выполнить действия над файлами проекта, модулей, форм.

Панель инструментов расположена в левой части главного окна и служит для более удобного и быстрого обращения к наиболее важным командам главного меню. Набор команд панели инструментов можно настроить с помощью команды Customize из всплывающего (контекстного) меню этой панели. На панели инструментов размещены 4 подпанели с кнопками с ярлычками подсказок: New Items (новые данные), Open file (открыть файл), Save (сохранить), Save All (сохранить как), Open Project (открыть проект), Add file to project (добавить файл из проекта), Remove file from project (исключить файл из проекта), Help contents (содержание помощи), View Unit (просмотр модулей), View Form (просмотр форм), Toggle Form\Unit (переход от формы к модулю и обратно), New Form (создать новую форму), Run(F9) (запустить приложение), Pause (приостановить выполнение приложения), Trace into (F7) (построчное выполнить), Step over (F8) (построчно выполнить, в том числе подпрограмму за одно нажатие F8).

Панель палитры компонентов расположена в правой части главного окна среды разработчика. Она открывает доступ к VCL (Visual Component Library- библиотеки визуальных компонентов) и содержит кнопки с пиктограммами компонентов VCL. С помощью палитры компонентов можно выбрать и включить в приложение всевозможные интерфейсные элементы управления: кнопки, меню, списки, панели и пр. Палитра компонентов состоит из ряда страниц с различными группами компонентов. В Delphi можно изменять содержимое страниц Палитры компонентов и добавлять в нее пиктограммы собственных компонентов.

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

Окно Инспектора объектов - это двухстраничное окно, которое является одним из самых важных средств программирования Delphi. Оно отображает свойства или события одного или нескольких выбранных объектов или форм. Окно Инспектора объектов содержит 2 страницы: страницу свойств (Properties) и страницу событий (Events). В верхней части Инспектора объектов страницы помечены закладками. С их помощью можно переходить со страницы на страницу в процессе разработки программы. В верхней части Инспектора объектов расположен выпадающий список с именами компонентов активной формы: окно с кнопкой справа. При нажатии на кнопку появляется выпадающий список, из которого можно выбрать и тем самым активизировать требуемый объект формы.

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

Окно редактора кода содержит код (текст) программы на языке Object Pascal. В нижней части окна есть закладка с именем Code для перехода из Окна формы в Окно редактора кодов. Каждая форма имеет текст соответствующего ей модуля. По умолчанию имя модуля формы Form1='Unit1.pas'. В верхней части Окна редактора имеются закладки для выбора текста одного из открытых модулей. Список всех модулей, доступных в приложении, можно вызвать с помощью кнопки View Unit на панели инструментов или пункта меню View\Units. В нижней части Окна редактора отображается также информация компилятора (сообщения об ошибках, обнаруженных на этапе компиляции) и интегрированного отладчика. Окно редактора является многостраничным. Если проект содержит несколько модулей, редактор обеспечивает доступ и работу с каждым из них. Переход от модуля к модулю осуществляется с помощью закладок, расположенных в верхней части Окна редактора или команды подменю View\Units.

Для разработки конкретно своей программы я использовала такие компоненты Delphi, как:

- Label - метка для вывода текста. С помощью этого компонента я оформила 1-ую форму, которая является у меня титульной. Оформление заключается в заголовке «Курсовая работа», теме на которую она написана, а также выполнена. Также компонент Label используется на 3-ей форме, с помощью которого я описала все события поставленной

задачи. Для вывода текста на метку в две и более строк я установила ее свойство WordWrap = True, а для выравнивания текста внутри компонента свойство Alignment.

- Button - кнопка, которая расположена на каждой форме и в разном количестве. Эти кнопки я использовала для перехода между формами, для выхода из запущенной программы, для расчета формул, для просмотра условия задачи и графика, а также вывода комментарий по расчету формул.

- StringGrid - компонент, который представляет собой таблицу для отображения данных в виде строк и столбцов. Таких компонентов я использовала два на 2-ой форме.

StringGrid2 состоит из 4 столбцов и 11 строк, в которых я вывела порядковый номер и подсчитала временные параметры работ и их резервы времени, из результата которых нашла критический путь. А StringGrid1 состоит из 7 столбцов и 12 строк, в которых я вывела порядковый номер события, работу, время совершения работы, а также подсчитала временные параметры событий.

- Image - компонент изображения, с помощью которого поместила на 3-ю форму рисунок сетевого графика данной задачи, который перед этим сохранила в блокноте с расширением .bmp и открыла с помощью свойства этого компонента Picture.

- OleContainer - для помещения на 5-ую и 6-ую формы комментарий с формулами и решением по расчету данной задачи.

2. СПЕЦИАЛЬНЫЙ РАЗДЕЛ

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

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

Вариант 9. Минимизация транспортных расходов при перевозе груза со станций отправления грузовых поездов

2.2 Решение задачи

На трех станциях отправления имеются соответственно 50, 30 и 20 единиц однородного груза который нужно доставить в три пункта назначения в количестве соответственно 30,40 и 30 единиц.

Стоимости перевозок и составляло

С11=4 С12=1 С13=2

С21=3 С22=7 С23=5

С31=5 С32=6 С33=1

Найти такой план перевозок, чтобы общая стоимость всех перевозок была минимальна.

Пусть имеется m=3 станций А1,А2,А3 и n=3 потребителей В1,В2,В3.

На первой станции кол-во груза а1=50, на второй станции кол-во груза а2=30, на третей станции кол-во груза а3=20.

Потребность в грузе в1=30, в2=40, в3=30.

1) а1+а2+а3=50+30+40+20=100

в1+в2+в3=30+40+30=100

Уа=Ув

100=100

Задача является сбалансированной. Модель закрытая.

Xij - кол-во груза перевозимого от i-станций, к j- потребителей

CijXij - транспортные расходы при перевозки груза от i-n к j-потребителей C11X11=8*X11

Целевая функция:

F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min

X11+X12+X13 =50 X11+ X21 + X31=30

X21+X22+X23=30 X12+ X22 + X32=40

X31+X32+X33=20 X13+ X23 + X33=30

X11?0 X12?0 X13 ?0 X21?0 X22?0 X23?0 X31?0 X32?0 X33?0

Метод минимального элемента. Начинаем с min стоимости

X12= min{ а1; в2}= min {50;40}= min 40

а1> в1 то первый столбец вычеркиваем

X33= min{ а3; в3}= min {20;30}= min 20

а3< в3 то первой вычеркиваем строку

X13 = min{ а1; в3}= min {10;10}= min 10

а1= в1

X21= min 30

X12 =40

X33 =20 базисные переменные

X13 =10

X21=30

X11=0

X22=0

X23=0 не базисные переменные

X31=0

X32=0

F=4*0+40+2*10+3*30+7*0+5*0+5*0+6*0+20=40+20+90+20=170

Ответ: Минимальные транспортные расходы F=170

при X12 =40 X33 =20 X13 =10 X21=30

Метод северо-западного угла

X11= min{ а1; в1}= min {50;30}= min 30

а1> в1 то первый столбец вычеркиваем

X12= min{ а1; в2}= min {20;40}= min 20

а1< в2 то первой вычеркиваем строку

X22 = min{ а2; в2}= min {30;20}= min 20

а2> в2 то первый столбец вычеркиваем

X23= min{ а2; в3}= min {10;30}= min 10

а2< в3 то первой вычеркиваем строку

X33=20

X11 =30

X12 =20

X22 =20 базисные переменные

X23=10

X33 =20

X13 =0

X21=0 не базисные переменные

X31 =0

X32=0

F=4X11+X12+2X13+3X21+7X22+5X23+5X31+6X32+X33>min

F=4*30+20+2*0+3*0+7*20+5*10+5*0+6*0+20=120+20+140+50+20=350

u1+v1=4 u1=0 v1=4

u1+v2=1 v2=1

u2+v2=7 u2+1=7 u2=7-1=6

u2+v3=5 6+v3=5 v3=5-6=-1

u3+v3=1 u3+(-1)=1 u3=2

C'13= u1+ v3=0+(-1)= -1

C'21= u2+ v1=6+4=10

C'31= u3+ v1=2+4=6

C'32= u3+ v2=2+1=3

C'13-C13=0+(-1)= -1

C'21-C21=6+4=10>0

C'31-C31=2+4=6>0

C'32-C32=2+1=3

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

Х21=0 + 20=20

Х11=30 - 20=10

Х12=20 + 20=40

Х22=20 - 20=0

u1+v1=4 u1= 0 v1= 4

u1+v2=1 v2=1

u2+v1=3 u2= -1

u2+v3=5 v3= 6

u3+v3=1 u3= -5

F=4*10+40+2*0+3*20+7*0+5*10+5*0+6*0+20=40+40+60+20+50=210

C'13= u1+ v3=6 C'13-C13=-6-2=4>0

C'22= u2+ v2=0 C'21-C21=0-7= -7

C'31= u3+ v1= -1 C'31-C31= -1-5= -6

C'32= u3+ v2= -4 C'32-C32= -4-6= -10

Х13=0 + 10=10

Х11=20 - 10=0

Х21=20 + 10=30

Х23=10 - 10=0

u1+v1=4 u1= 0 v1= 4

u1+v2=1 v2=1

u1+v3=3 v3= 2

u2+v1=5 u2= -1

u3+v3=1 u3= -1

C'22= u2+ v2=0 C'22-C22=-0-7= -7

C'23= u2+ v3=1 C'23-C23=1-5= -4

C'31= u3+ v1= 3 C'31-C31= 3-5= -2

C'32= u3+ v2= 0 C'32-C32= 0-6= -6

F=0+40+2*10+3*30+0+0+0+20=170

Ответ: Минимальные транспортные расходы F=170

при X12 =40 X33 =20 X13 =10 X21=30

2.3 Описание алгоритма

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

2.4 Инструкция пользователя

Загрузите двойным кликом мышки программу ;

Ознакомьтесь с Формой 1 и нажмите Далее;

Ознакомьтесь с Формой 2 и при нажатии кнопки вычислить выводится результат;

Ознакомьтесь с Формой 3при нажатии кнопки решение северо-западного угла появляется форма 3. при нажатии кнопки вычислить выводится результат:

При нажатии кнопки пояснение появляется форма 6.

при нажатии на второй форме кнопку решение через появится форма5

При нажатии кнопки математическая модель выводится форма 4

ЗАКЛЮЧЕНИЕ

При разработке курсовой работы, я достигла поставленной цели. Разработала программу, которая позволяет решить данную мне задачу, в соответствии с выданным вариантом. В процессе разработки программного продукта вспомнила все этапы решения данной задачи. Повторила изученные навыки и стили программирования, которые использовала для оформления дизайна программного интерфейса. В отчете, в котором описала весь порядок выполнения курсовой работы и раскрыла поставленную тему, использовала ГОСТы, таким образом отчет написан в соответствии со всеми стандартами ИСО

ПРИЛОЖЕНИЕ А

Листинги текстов модулей

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1},

Unit2 in 'Unit2.pas' {Form2},

Unit3 in 'Unit3.pas' {Form3},

Unit4 in 'Unit4.pas' {Form4},

Unit5 in 'Unit5.pas' {Form5},

Unit6 in 'Unit6.pas' {Form6};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.CreateForm(TForm2, Form2);

Application.CreateForm(TForm3, Form3);

Application.CreateForm(TForm4, Form4);

Application.CreateForm(TForm5, Form5);

Application.CreateForm(TForm6, Form6);

Application.Run;

end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Label3: TLabel;

Label9: TLabel;

BitBtn1: TBitBtn;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

// Form2: TForm2;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Form2.show;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, OleCtnrs, StdCtrls, Buttons;

type

TForm2 = class(TForm)

StringGrid2: TStringGrid;

StringGrid1: TStringGrid;

Label1: TLabel;

OleContainer1: TOleContainer;

Button2: TButton;

Button3: TButton;

Button4: TButton;

BitBtn1: TBitBtn;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label2: TLabel;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

// Form1: TForm1;

Form2: TForm2;

implementation

uses Unit4, Unit3, Unit5;

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);

begin

StringGrid1.Cells[0,1]:='50';

StringGrid1.Cells[0,2]:='30';

StringGrid1.Cells[0,3]:='20';

StringGrid1.Cells[1,0]:='30';

StringGrid1.Cells[2,0]:='40';

StringGrid1.Cells[3,0]:='30';

StringGrid2.Cells[0,0]:='4';

StringGrid2.Cells[1,0]:='1';

StringGrid2.Cells[2,0]:='2';

StringGrid2.Cells[0,1]:='3';

StringGrid2.Cells[1,1]:='7';

StringGrid2.Cells[2,1]:='5';

StringGrid2.Cells[0,2]:='5';

StringGrid2.Cells[1,2]:='6';

StringGrid2.Cells[2,2]:='1';

StringGrid1.Cells[2,1]:='40';

StringGrid1.Cells[3,1]:='10';

StringGrid1.Cells[1,2]:='30';

StringGrid1.Cells[3,3]:='20';

StringGrid1.Cells[1,1]:='0';

StringGrid1.Cells[1,3]:='0';

StringGrid1.Cells[2,2]:='0';

StringGrid1.Cells[2,3]:='0';

StringGrid1.Cells[3,2]:='0';

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

Form4.show;

end;

procedure TForm2.Button4Click(Sender: TObject);

begin

Form3.Show;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Form5.show;

end;

procedure TForm2.Button1Click(Sender: TObject);

var x1,x2,x3,x4,x5,x6,x7,x8,x9:integer;

c1,c2,c3,c4,c5,c6,c7,c8,c9:integer;

begin

x2:=strtoint(StringGrid1.Cells[2,1]);

x1:=strtoint( StringGrid1.Cells[1,1]);

x3:=strtoint( StringGrid1.Cells[3,1]);

x4:=strtoint( StringGrid1.Cells[1,2]);

x5:=strtoint( StringGrid1.Cells[2,2]);

x6:=strtoint( StringGrid1.Cells[2,2]);

x7:=strtoint( StringGrid1.Cells[1,3]);

x8:=strtoint( StringGrid1.Cells[2,3]);

x9:=strtoint( StringGrid1.Cells[3,3]);

c1:=strtoint(StringGrid2.Cells[0,0]);

c2:=strtoint(StringGrid2.Cells[1,0]);

c3:=strtoint(StringGrid2.Cells[2,0]);

c4:=strtoint(StringGrid2.Cells[0,1]);

c5:=strtoint(StringGrid2.Cells[1,1]);

c6:=strtoint(StringGrid2.Cells[2,1]);

c7:=strtoint(StringGrid2.Cells[0,2]);

c8:=strtoint(StringGrid2.Cells[1,2]);

c9:=strtoint(StringGrid2.Cells[2,2]);

f:=c1*x1+c2*x2+c3*x3+c4*x4+c5*x5+c6*x6+c7*x7+c8*x8+c9*x9;

Label2.Font.Size:=14;

Label2.Caption:='Минимальные затраты = '+IntTostr(f);

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, OleCtnrs, StdCtrls, Buttons, Grids;

type

TForm3 = class(TForm)

Button2: TButton;

Label2: TLabel;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

f,x11,x12,x13,x21,x22,x23,x31,x32,x33:integer;

c11,c12,c13,c21,c22,c23,c31,c32,c33:integer;

Kos13,Kos12,Kos31,Kos32,kos22,kos11,kos23,kos21:integer;

a1,a2,a3,b1,b2,b3:integer;

u1,u2,u3,v1,v2,v3:integer;

implementation

uses Unit6;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

c11:=4; c12:=1; c13:=2;

c21:=3; c22:=7; c23:=5;

c31:=5; c32:=6; c33:=1;

a1:=50; a2:=30;a3:=20;

b1:=30; b2:=40; b3:=30;

x11:=b1; a1:=a1-b1;

x12:=a1; a2:=b2-a1;

x22:=a2; a2:=a2-b2;

x23:=a2; b3:=b3-a2;

x33:=a3; //x12:=0;

x13:=0; x31:=0; x32:=0; x21:=0;

f:=c11*x11+c12*x12+c13*x13+c21*x21+c22*x22+c23*x23+c31*x31+c32*x32+c33*x33;

u1:=0;

v1:=C11-u1;

v2:=C21-v1;

u2:=C22-v2;

v3:=c23-u2;

u3:=c33-v3;

Kos13:=u2+v2;

Kos12:=u2+v3;

Kos31:=u3+v1;

Kos32:=u3+v2;

x21:=0+20;

x11:=30-20;

x12:=20+20;

x22:=20-20;

x13:=0; x31:=0; x32:=0; x33:=20;x23:=10;

if (Kos13<0) or (Kos12<0) or (Kos31<0) or (Kos32<0) then

f:=c11*x11+c12*x12+c13*x13+c21*x21+c22*x22+c23*x23+c31*x31+c32*x32+c33*x33

else

u1:=0;

v1:=c11-u1;

v3:=c13-u1;

u2:=c21-v1;

u3:=c33-v3;

v2:=c12-u1;

Kos11:=u1+v1;

Kos13:=u1+v3;

Kos23:=u2+v3;

Kos21:=u2+v1;

x13:=0+10;

x11:=10-10;

x21:=20+10;

x23:=10-10;

x12:=40; x22:=0; x31:=0; x32:=0; x33:=20;

f:=c11*x11+c12*x12+c13*x13+c21*x21+c22*x22+c23*x23+c31*x31+c32*x32+c33*x33;

Kos22:=u2+v2;

Kos23:=u2+v3;

Kos31:=u3+v1;

Kos32:=u3+v2;

if (Kos22<0) or (Kos23<0) or (Kos31<0) or (Kos32<0) then

f:=c11*x11+c12*x12+c13*x13+c21*x21+c22*x22+c23*x23+c31*x31+c32*x32+c33*x33;

Label2.Font.Size:=14;

Label2.Caption:='Минимальные затраты = '+IntTostr(f)

end;

procedure TForm3.Button2Click(Sender: TObject);

begin

Form6.Show;

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, OleCtnrs, StdCtrls, Buttons;

type

TForm4 = class(TForm)

BitBtn1: TBitBtn;

OleContainer2: TOleContainer;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, OleCtnrs;

type

TForm5 = class(TForm)

OleContainer1: TOleContainer;

BitBtn1: TBitBtn;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

{$R *.dfm}

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, OleCtnrs, StdCtrls, Buttons;

type

TForm6 = class(TForm)

BitBtn1: TBitBtn;

OleContainer1: TOleContainer;

OleContainer2: TOleContainer;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

implementation

{$R *.dfm}

end.

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


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

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

    курсовая работа [49,1 K], добавлен 29.07.2011

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

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

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

    контрольная работа [419,4 K], добавлен 27.11.2015

  • Определение транспортных задач закрытого и открытого типов. Построение опорных планов методом северо-западного угла, минимальной стоимости и методом Фогеля. Анализ оптимального плана по перевозке груза. Достижение минимума затрат и времени на перевозку.

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

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

    контрольная работа [192,0 K], добавлен 15.04.2014

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

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

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

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

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

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

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

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

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

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

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