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

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




































Главная

Программирование, компьютеры и кибернетика
Решение транспортной задачи распределительным методом

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


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

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

МОСКОВСКИЙ ТЕХНИКУМ КОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Российский государственный торгово-экономический университет»
Р ешение транспортной задачи распределительным методом
4.1 Схема алгоритма основной программы
4.3 Схема алгоритма метода sumTransport
4.5 Схемы алгоритма метода searchCycle
4.6 Схемы алгоритма метода firstPlan
6 Инструкция по эксплуатации программы
Приложение Б. Результаты выполнения программы
Транспортная задача (классическая) -- задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе (это основные условия задачи).
Для классической транспортной задачи выделяют два типа задач: критерий стоимости (достижение минимума затрат на перевозку) или расстояний и критерий времени (затрачивается минимум времени на перевозку). Под названием транспортная задача ,определяется широкий круг задач с единой математической моделью, эти задачи относятся к задачам линейного программирования и могут быть решены оптимальным методом. Однако, специальный метод решения транспортной задачи позволяет существенно упростить её решение, поскольку транспортная задача разрабатывалась для минимизации стоимости перевозок.
Проблема была впервые формализована французским математиком Гаспаром Монжем в 1781 году. Основное продвижение было сделано на полях во время Великой Отечественной войны советским математиком и экономистом Леонидом Канторовичем. Поэтому иногда эта проблема называется транспортной задачей Монжа -- Канторовича.
Для каждой свободной клетки построим цикл и определим его стоимость
T.к. для всех клеток цены циклов положительны, то дальнейшее улучшение плана невозможно, что означает, что мы нашли оптимальный план.
Листинг программы приведен в приложении А, а результаты её выполнения - в приложении Б.
Рисунок 6.8 - Завершение работы программы
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Задачей курсовой работы является разработка программы для построения оптимального плана транспортной задачи.
_____________________________________________________________
_____________________________________________________________Используемые глобальные переменные класса:
_____________________________________________________________
clearMenu - удаление главного меню;
_____________________________________________________________
public class Main extends MovieClip
public static var STAGE_HEIGHT:int=580,STAGE_WIDTH:int=789;
_____________________________________________________________
Метод enterSize - ввод количества заявок и запасов.
_____________________________________________________________
addEventListener(Event.ADDED_TO_STAGE, init);
_____________________________________________________________
Метод init - инициализация программы.
_____________________________________________________________
_____________________________________________________________
*/ private function init(e:Event):void
removeEventListener(Event.ADDED_TO_STAGE, init);
showMenu(new TEvent(TEvent.FIRST_TRANSPORT));
_____________________________________________________________
Метод nTask - создание нового плана.
_____________________________________________________________
_____________________________________________________________
*/ private function nTask(e:MouseEvent):void
task.addEventListener(TEvent.END_TRANSPORT,showMenu);
task.addEventListener(TEvent.NEW_TRANSPORT,clearMenu);
_____________________________________________________________
Метод clearMenu - удаление главного меню.
_____________________________________________________________
_____________________________________________________________
*/ private function clearMenu(e:TEvent):void
mm.new_task.removeEventListener(MouseEvent.CLICK,nTask);
mm.about.removeEventListener(MouseEvent.CLICK,about);
_____________________________________________________________
_____________________________________________________________
*/ private function clearTask():void
task.removeEventListener(TEvent.END_TRANSPORT,showMenu);
task.removeEventListener(TEvent.NEW_TRANSPORT,clearMenu);
_____________________________________________________________
Метод showMenu - создание главного меню.
_____________________________________________________________
_____________________________________________________________
*/ private function showMenu(e:TEvent):void
if (e.type == TEvent.END_TRANSPORT)
mm.new_task.addEventListener(MouseEvent.CLICK,nTask);
mm.about.addEventListener(MouseEvent.CLICK,about);
_____________________________________________________________
Метод about - информация о программе.
_____________________________________________________________
_____________________________________________________________
*/ private function about(e:MouseEvent):void
a.x = STAGE_WIDTH / 2 - a.width / 2;
a.y = STAGE_HEIGHT / 2 - a.height / 2;
_____________________________________________________________
Класс программы управления задачей.
_____________________________________________________________
Используемые глобальные переменные класса:
store, stock - вектора заявок и запасов соответственно;
dataConStock - контейнеры объектов запасов и заявок;
kolZapasov - количество заявок и запасов;
control - класс элементов управления;
sizeForm - класс формы ввода подсказки.
_____________________________________________________________
enterSize - ввод размера матрицы перевозок;
checkedSize - проверка ввода размера матрицы перевозок;
enterData - создание и вывод на экран матрицы, кнопок;
goMenu - выход в главное меню программы;
firstPlan - постраение первого плана;
nextPlan - постраение следующего плана;
sumElementsVector - суммирует элементы вектора запасов или заявок;
showSS - создание и вывод на экран векторов запасов и заявок;
addZaya - добавление в вектор заявок элемента;
addZap - добавление в вектор запасов элемента;
closeEnter - ограничение доступа ввода запасов и заявок;
correctness - проверка корректности ввода значений запасов и заявок.
_____________________________________________________________
public class Task extends MovieClip
private var store:Array,stock:Array;
private var dataConStore:Sprite,dataConStock:Sprite;
private var kolZayavok:int,kolZapasov:int;
_____________________________________________________________
_____________________________________________________________
hint.x = Main.STAGE_WIDTH / 2 - hint.width / 2;
hint.y = Main.STAGE_HEIGHT / 2 - hint.height / 2;
_____________________________________________________________
Метод H - выводит информацию на экран.
_____________________________________________________________
_____________________________________________________________
*/ private function H(s:String):void
_____________________________________________________________
Метод enterSize - ввод количества заявок и запасов.
_____________________________________________________________
*/ public function enterSize():void
sizeForm.y = Main.STAGE_HEIGHT / 2 - sizeForm.height / 2;
sizeForm.ok.addEventListener(MouseEvent.CLICK,checkedSize);
_____________________________________________________________
Метод checkedSize - проверка правильности заполнения полей
_____________________________________________________________
_____________________________________________________________
*/ private function checkedSize(e:MouseEvent):void
sizeForm.ok.removeEventListener(MouseEvent.CLICK,enterData);
kolZayavok = int(sizeForm.kolzaya.text);
kolZapasov = int(sizeForm.kolzap.text);
H('\n\nНе правильный ввод!\n Все поля должны быть заполнены!');
_____________________________________________________________
Метод enterData - создание и вывод на экран матрицы, кнопок.
_____________________________________________________________
*/ private function enterData():void
control.btnNext.addEventListener(MouseEvent.CLICK,firstPlan);
control.menu.addEventListener(MouseEvent.CLICK,goMenu);
control.hint_btn.addEventListener(MouseEvent.CLICK,showHint);
H('Заполните поля цены, поля заявок и поля запасов.\nИ нажмите кнопку "Далее" для продолжения...');
_____________________________________________________________
_____________________________________________________________
*/ private function showHint(e:MouseEvent):void
_____________________________________________________________
Метод goMenu - выход в главное меню программы.
_____________________________________________________________
_____________________________________________________________
*/ private function goMenu(e:MouseEvent):void
control.btnNext.removeEventListener(MouseEvent.CLICK,firstPlan);
control.menu.removeEventListener(MouseEvent.CLICK,goMenu);
control.hint_btn.removeEventListener(MouseEvent.CLICK,showHint);
dispatchEvent(new TEvent(TEvent.END_TRANSPORT));
_____________________________________________________________
Метод firstPlan - постраение первого плана.
_____________________________________________________________
_____________________________________________________________
sZaya, sZap - сумма элементов вектора заявок, сумма элементов
_____________________________________________________________
*/ private function firstPlan(e:MouseEvent):void
var sZaya:int = sumElementsVector(store,kolZayavok);
var sZap:int = sumElementsVector(stock,kolZapasov);
if (stock.every(correctness) && store.every(correctness))
control.btnNext.removeEventListener(MouseEvent.CLICK,firstPlan);
control.stoimost_plana_txt.text = m.firstPlan(stock,store,kolZayavok,kolZapasov).toString();
control.btnNext.addEventListener(MouseEvent.CLICK,nextPlan);
control.cargo_units_txt.text = sZaya.toString();
H('Первый план поcтроен.\n Нажмите "Далее" для продолжения...');
H('Значения полей запасов и заявок \nне должны быть равными нулю или оставаться пустыми\nпроверте правильность');
_____________________________________________________________
Метод nextPlan - постраение следующего плана.
_____________________________________________________________
_____________________________________________________________
*/ private function nextPlan(e:MouseEvent):void
if (m.newPlan(kolZayavok,kolZapasov))
H('\n\nПлан оптимален, задача решена.\nСтоимость плана:'+control.stoimost_plana_txt.text);
control.btnNext.removeEventListener(MouseEvent.CLICK,nextPlan);
control.stoimost_plana_txt.text = m.sumTransport(kolZayavok,kolZapasov).toString();
_____________________________________________________________
Метод sumElementsVector - суммирует элементы вектора запасов или заявок.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
*/ public function sumElementsVector(v:Array,m:int):int
_____________________________________________________________
Метод showSS - создание и вывод на экран векторов запасов и заявок
_____________________________________________________________
yy,xx - координаты расположения объектов.
_____________________________________________________________
dataConStore.x = m.x + m.width + 10,dataConStore.y = m.y;
dataConStock.y = m.y + m.height + 10;
_____________________________________________________________
Метод addZaya - добавление в вектор заявок элемента.
_____________________________________________________________
arg - значение добавляемого элемента.
_____________________________________________________________
*/ private function addZaya(arg:int):void
store[kolZayavok - 1].y = dataConStore.height + 5;
dataConStore.addChild(store[kolZayavok-1]);
store[kolZayavok - 1].stock = arg.toString();
dataConStock.y = m.y + m.height + 10;
_____________________________________________________________
Метод addZap - добавление в вектор запасов элемента.
_____________________________________________________________
arg - значение добавляемого элемента.
_____________________________________________________________
*/ private function addZap(arg:int):void
stock[kolZapasov - 1].x = dataConStock.width + 5;
dataConStock.addChild(stock[kolZapasov -1]);
stock[kolZapasov - 1].stock = arg.toString();
dataConStore.x = m.x + m.width + 10;
_____________________________________________________________
Метод closeEnter - ограничение доступа ввода запасов и заявок.
_____________________________________________________________
element - элемент для ограничения доступа;
_____________________________________________________________
*/ private function closeEnter(element:*, index:Number, arr:Array):void
_____________________________________________________________
Метод correctness - проверка корректности ввода значений запасов и заявок.
_____________________________________________________________
element - элемент для ограничения доступа;
_____________________________________________________________
*/ private function correctness(element:*, index:Number, arr:Array):Boolean
_____________________________________________________________
_____________________________________________________________
Используемые глобальные переменные класса:
_____________________________________________________________
showMat - создание и вывод на экран матрицы перевозок;
sumTransport - подсчет стоимости плана;
firstPlan - построение первого плана;
getValue - вспомогательный метод копирования значений запасов и
addStr - добавление строки в матрицу;
addSto - добавление столбца в матрицу;
ciclePr - улучшение плана перевозок;
clearCicleShow - визуальная очистка плана;
endCycle - проверка завершения цикла;
newObjectWay - добавление в вектор элемента цикла;
priceCicle - определение цены цикла.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
Метод showMat - создание и вывод на экран матрицы перевозок.
_____________________________________________________________
_____________________________________________________________
yy,xx - координаты расположения элементов.
_____________________________________________________________
*/ public function showMat(n:int,m:int):void
yy += element[i][j - 1].height + 5;
_____________________________________________________________
Метод sumTransport - подсчет стоимости плана.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
*/ public function sumTransport(n:int,m:int):int
sum += element[i][j].stoimost * element[i][j].perevozka;
_____________________________________________________________
Метод firstPlan - построение первого плана.
_____________________________________________________________
_____________________________________________________________
_____________________________________________________________
*/ public function firstPlan(_a:Array,_b:Array,n:int,m:int):int
var min:int,k:int,J:int,I:int,sum:int = 0,p:int = 0;
if (min>element[i][j].stoimost&&(a[j]>0))
_____________________________________________________________
Метод getValue - вспомогательный метод копирования значений
_____________________________________________________________
element - элемент для ограничения доступа;
_____________________________________________________________
*/ private function getValue(element:*, index:int, arr:Array):int
_____________________________________________________________
Метод addStr - добавление строки в матрицу.
_____________________________________________________________
_____________________________________________________________
*/ public function addStr(zap:int):int
var i:int = element.length,xx:int = 0;
var yy:int = element[i - 1][0].y + element[i - 1][0].width - 5;
_____________________________________________________________
Метод addSto - добавление столбца в матрицу.
_____________________________________________________________
_____________________________________________________________
*/ public function addSto(zap:int):int
var xx:int = element[0][zap - 1].x + element[0][zap - 1].width + 5;
for (var j:int=0; jРешение транспортной задачи распределительным методом курсовая работа. Программирование, компьютеры и кибернетика.
Курсовая работа по теме Этапы и формы борьбы индейцев за свои права
Курсовая работа по теме Понятие и классификация основных средств
Реферат На Тему Мировое Хозяйство 20-Х Годов Хх Столетия
Сочинение На Тему Осенние Сумерки
Реферат по теме Фитнес: основные направления
Сочинение Ужастик Про Школу
Пенсионное Обеспечение Инвалидов Курсовая
Реферат: Поліський заповідник
Курсовая работа по теме Принципы уголовного процесса
Курсовая работа по теме Особенности межличностных отношений в младшем школьном возрасте
Реферат: Stylistic analysis of the part of the novel "Rebecca" by Daphne Du Maurier
Лекция: Психология животных. Скачать бесплатно и без регистрации
Влияние Радиоактивных Излучений На Живые Организмы Реферат
Передающее устройство одноволоконной оптической сети
Курсовая работа по теме Технология и организация хлебопекарного производства
Урожайность Озимого Рапса После Гороха Диссертация
Реферат На Тему Правовой Статус Личности
Дипломная работа по теме Содержание и технологии деятельности социального работника в пенитенциарном учреждении
Эссе Значения Непроизводственных Активов
Реферат: по предмету: Физическая культура Тема: Физическая подготовка с целью развития качеств быстроты движений, силы и выносливости
Двухдиапазонная антенна, работающая на частотах 264 МГц и 396 МГц - Коммуникации, связь, цифровые приборы и радиоэлектроника дипломная работа
Роль семьи в формировании личности ребенка - Педагогика реферат
Правовой статус политических партий в РФ - Государство и право контрольная работа


Report Page