Фриланс-проекты › Моделирование работы морского порта C++ Моделирование работы морского порта C++
Требуется создать компьютерную модель обслуживания потока заявок на разгрузку, поступающих от грузовых судов (сухогрузов и танкеров), прибывающих в морской порт. Грузовые суда прибывают в порт согласно расписанию, но возможны опоздания и досрочные прибытия. Расписание включает день и время прибытия, название судна, вид груза и его вес, а также планируемый срок стоянки в порту для разгрузки.
Для разгрузки судов в порту используются три вида разгрузочных кранов, соответствующих трем видам грузов: сыпучим и жидким грузам, контейнерам. Число разгрузочных кранов каждого вида ограничено, так что поступающие заявки на разгрузку одного вида груза образуют очередь. Длительность разгрузки судна зависит от вида и веса его груза, а также некоторых других факторов, например, погодных условий. Любой дополнительный (сверх запланированного срока) день стояния судна в порту (из-за ожидания разгрузки в очереди или из-за задержки самой разгрузки) влечет за собой выплату штрафа (например, 2 тыс. у.е. за каждый дополнительный день простоя судна).
При моделировании прибытия судов отклонение их от расписания рассматривается как случайная величина с равномерным распределением в некотором интервале (например, от -2 до 9 дней). Еще одной случайной величиной, изменяющейся в фиксированном диапазоне (например, от 0 до 12 дней), является время задержки окончания разгрузки судна по сравнению с обычным (зависящим только от вида груза и его веса).
Цель моделирования работы морского порта – определение для заданного расписания прибытия судов минимально достаточного числа кранов в порту, позволяющего уменьшить штрафные суммы. Период моделирования – месяц, шаг моделирования – 1-3 дня. В параметры моделирования следует включить расписание прибытия судов, количество кранов каждого вида, диапазоны разброса случайных величин (отклонения от расписания прибытия и отклонения от обычного времени разгрузки), а также шаг моделирования.
Визуализация моделируемого процесса должна предусматривать показ очередей у разгрузочных кранов, приход судов в порт и их отход после разгрузки. Должен быть показан также список произведенных разгрузок, в котором указывается название разгруженного судна, время его прихода в порт и время ожидания в очереди на разгрузку, время начала разгрузки и ее продолжительность. По окончании моделирования должна быть выведена итоговая статистика: число разгруженных судов, средняя длина очереди на разгрузку, среднее время ожидания в очереди, максимальная и средняя задержка разгрузки, общая сумма выплаченного штрафа.
-
ставка отозвана
-
Моделирование данной работы в консольном приложении?
С схохранием состояния программы или без?
-
Здравствуйте, Виктор.
Скажите, а Вы отклоняете ставки, потому что дорого? Или по другим причинам?
-
Виктор Жидков
— заказчик проекта
Бюджет, вроде как написан, так что да, потому что дорого
-
Решил поинтересоваться:
1) Сроки какие?
2) Это простая консоль или нужен интерфейс (MFC например)?
3) Твой уровень какой? На конкретные вопросы по заданию ты способен отвечать? (или спросить у преподавателя, а потом не забыть ответ):
3.1) Сколько классов предполагается реализовать? Один (заявка_от_корабля)?
3.2) Что такое "очередь"?
Понятно, что это структура типа "первый пришёл, первый ушёл" из цепочки кораблей, но непонятно на чём её реализовать. Предполагается работать с указателями и всю "механику" прописывать самостоятельно или можно использовать что-то встроенное (класс vector например)?
3.3.) Что такое погодные условия?
3.4) Что значит разброс "1-3 дн." и "В параметры моделирования следует включить расписание прибытия судов, количество кранов каждого вида, диапазоны разброса случайных величин (отклонения от расписания прибытия и отклонения от обычного времени разгрузки), а также шаг моделирования. "...?
Это всё задаётся пользователем?
3.5) "уменьшить штрафные суммы" до 0-ля?
-
1) Какой интерфейс необходим?
Что вы проходили:
Вот я когда-то давно сталкивался с MFC и всё.
2) Что значит "2-а класса с потомками"? Т.е. 4-ри класса?
Покажи.
Или описываем один класс, а потом создаём очереди от него для каждого крана:
vector <string> konteiner [kol_kran_konteiner]
vector <string> supuch [kol_kran_supuch]
vector <string> gidkost [kol_kran_gidkost]
Вместо стандартного "string" подставляем пользовательский тип ( класс) и в результате получаем 3-ри пустых массива очередей. Далее их надо заполнить (push). Запускаем ....
хочется сказать поток кораблей. Но в С++ слово "поток" означает ещё одну тему "thread" (и такие потоки вполне могут существовать независимо от выполнения основной программы). Вы такое проходили?...
а пока я скажу цикл на 30 дн с шагом 1 (или 2, или 3-ри, - выбирает пользователь). Или думаем не по дням, а по минутно? ... Здесь непонятно как появляются очередной корабль? Может быть в самом начале программы создаётся (на случайное количество) цепочка кораблей с уникальными характеристиками, а потом они распределяются?
-
Предположим.
1) Где у тебя храниться информация: день и время прибытия, название судна, вид груза и его вес, а также планируемый срок стоянки в порту для разгрузки? Которую скачали из txt и сохранили... куда?
2) Что у тебя уже реализовано? На какой ты стадии?
По идеи, используя vector-а, уже должен был сформировать цепочку сухогрузов и цепочку танкеров из txt.
Следующий этап "раскидать" сухогрузы и танкеры по кранам (сухогрузы - это сыпучий или контейнерный кран vector добавляется). При этом надо учесть случайно-сгенерированные задержки. И здесь не важно время (выйдет за пределы месяца или нет).
Что думаешь?
3) А что значит "определить мин. число кранов"? Это пользователь изменяет кол-во кранов и смотрит на результат по убыткам или это что-то программное?
-
Я не понял, ты скачал из файла данные или нет? И что сформировал из них?
-
Ты не думаю, а делай. Раз переделаешь, потом ещё раз и ещё раз переделаешь код ... это нормально.
-
Функции из классов все убирай. Пиши весь код в общей main. Потом (когда заработает) программа код перекочует в классы.
А пока в них держи: день и время прибытия, название судна, вид груза и его вес, а также планируемый срок стоянки в порту для разгрузки.