Моделирование автостоянки

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Информатика
  • 22 22 страницы
  • 4 + 4 источника
  • Добавлена 15.12.2011
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Содержание
1. Математическая постановка задачи
2. Описание метода решения
3. Программная реализация
Список литературы

Фрагмент для ознакомления

horizontalAlignment = GridData.CENTER;
label9.setLayoutData(grD);
slider5.setMinimum(1);
slider5.setMaximum(110);
slider5.setIncrement(1);
slider5.setPageIncrement(20);
slider5.setSelection(Tend/100);
grD = new GridData();
grD.horizontalAlignment = GridData.CENTER;
grD.heightHint=10;
grD.widthHint=100;
slider5.setLayoutData(grD);
label9.setText(String.format("%d шагов",Tend));
slider5.addListener(SWT.Selection, new Listener(){
public void handleEvent(Event e) {
Tend=slider5.getSelection()*100;
label9.setText(String.format("%d шагов",Tend));
}
});
label10.setText("Период моделирования");
grD = new GridData();
grD.horizontalAlignment = GridData.CENTER;
label10.setLayoutData(grD);
grD = new GridData();
grD.widthHint=50;
grD.horizontalAlignment = GridData.CENTER;
label11.setLayoutData(grD);
slider1.setMinimum(10);
slider1.setMaximum(510);
slider1.setIncrement(10);
slider1.setPageIncrement(50);
slider1.setSelection(timerInterval);
grD = new GridData();
grD.horizontalAlignment = GridData.CENTER;
grD.heightHint=10;
grD.widthHint=100;
slider1.setLayoutData(grD);
label11.setText(String.format("%d мс",timerInterval));
slider1.addListener(SWT.Selection, new Listener(){
public void handleEvent(Event e) {
timerInterval=slider1.getSelection();
label11.setText(String.format("%d мс",timerInterval));
}
});
label12.setText("Интервал таймера");
grD = new GridData();
grD.horizontalAlignment = GridData.CENTER;
label12.setLayoutData(grD);
grD = new GridData();
grD.horizontalAlignment = GridData.CENTER;
exec.setLayoutData(grD); // устанавливаем параметры кнопки
exec.setText("Выполнить");
exec.addSelectionListener(new SelectionAdapter(){ // заводим слушателя для нажатия кнопки "Выполнить"
public void widgetSelected(SelectionEvent e) {
slider2.setEnabled(false); // запрещаем все слайдеры, кроме интервала таймера
slider3.setEnabled(false);
slider4.setEnabled(false);
slider5.setEnabled(false);
exec.setEnabled(false); // запрещаем саму кнопку
T=0; // устанавливаем время на начало периода
SQ=0; // обнуляем накопительную переменную по длине очереди
mainstream.clear(); // очищаем массив стоянки и очереди
laterparking.clear(); // очищаем массив вспомогательной стоянки
average.clear(); // очищаем массив средних длин очередей
disp.timerExec(timerInterval, runnable); // запускаем таймер первый раз
}
});

sh.pack();
sh.open(); // открываем главное окно
runnable = new Runnable() { // создаем объект вычисления шага модели
public void run() {
if(animate())
disp.timerExec(timerInterval, this); // устанавливаем следующий интервал
else{
slider2.setEnabled(true); // разрешаем элементы управления
slider3.setEnabled(true);
slider4.setEnabled(true);
slider5.setEnabled(true);
exec.setEnabled(true);
}
}
};

sh.addListener(SWT.Close, new Listener(){ // заводим слушателя для закрытия главного окна
public void handleEvent(Event event){
disp.timerExec(-1, runnable); // снимаем событие таймера
}
});
while(!sh.isDisposed()){ // цикл обработки событий
if(!disp.readAndDispatch()) // окно не закрыто
disp.sleep(); // продолжаем ждать
}
sh.dispose(); // освобождаем ресурсы
disp.dispose();
}

public static boolean animate() {
if(Math.random() < P){ // прибытие нового автомобиля
// задаем для него цвет и вероятность выезда
Car car=new Car(colors[(int)(Math.random()*(colors.length-1))],Qi);
mainstream.add(car);
}
int cl=mainstream.size();
for(int i=0; i < n && i < cl; i++){ // устанавливаем признаки у готовых для выезда
double Q=Math.random();
Car car=mainstream.get(i);
if(car != null){
if(Q < car.getProbab())
car.setTodep();
}
}
int k; // определяем ближайший к выезду готовый автомобиль
boolean depart=false;
for(k=0; k < n && k < cl; k++){
Car car=mainstream.get(k);
if(car != null){
if(car.getTodep()){
depart=true;
break;
}
}
}
if(depart){ // имеется автомобиль, отмеченный для выезда
int l;
for(l=0; l < k; l++){
Car car=mainstream.get(l);
if(car != null)
break;
}
l--;
if(l == k-1) // дорога свободна, автомобиль выехал
mainstream.set(k,null);
else{ // перемещаем мешающий проезду автомобиль на временную стоянку
Car car=mainstream.get(l+1);
mainstream.set(l+1,null);
laterparking.add(car);
}
}
else{ // нет автомобилей, отмеченных для выезда
int lp=laterparking.size();
if(lp != 0){ // на временной стоянке есть автомобили
Car car=laterparking.get(lp-1); // перемещаем последний автомобиль на основную стоянку
laterparking.remove(lp-1);
mainstream.set(lp-1,car);
}
}
int lp=laterparking.size();
for(int i=lp; i < mainstream.size(); i++){ // если появилось свободное место, перемещаем один автомобиль
Car car=mainstream.get(i);
if(car == null){
if(i == cl-1)
mainstream.remove(i);
else{
car=mainstream.get(i+1);
if(car == null) // если есть несколько пустых мест подряд - прогоняем очередное
mainstream.remove(i);
else{
mainstream.set(i,car);
mainstream.set(i+1,null);
}
}
break;
}
}
synchronized (monitor) { // сообщаем рисовальщику о готовности данных
ready = true;
}
canvas.redraw(); // даем команду на перерисовку
cl=mainstream.size();
SQ += cl <= n ? 0 : cl-n; // накапливаем длину очереди
average.add((double)SQ/(double)T); // сохраняем текущее среднее
T += dt; // продвигаем время
if(T > Tend) // диапазон моделирования закончился
return false;
disp.asyncExec(new Runnable() {
public void run() {
label1.setText(String.format("%d",T)); // прописываем текущее модельное время в интерфейс
}
});
return true;
}
}
Список литературы
1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил.
2. Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с.
3. Scarpino M., Holder S., Ng S., Mihalkovic L. SWT/JFace in Action Greenwich, CT, USA: Manning Publications Co., 2005. – 496 pp. ISBN 1-932394-27-3
4. Standard Widget Toolkit http://ru.wikipedia.org/wiki/SWT












7



3
размещение
автомобиля из очереди

2
размещение
автомобиля из очереди

наращиваем модельное время



1
размещение
автомобиля из очереди

да

нет

обнаружен выезжающий


проходим по местам стоянки

удаляем своб.место

нет

прибытие
автомобиля


да

фиксируем позицию выезжающего

нет

есть готовый к выезду


добавляем автомобиль в очередь

следующ. место своб.


да

проходим по местам стоянки

да






уст.признак ожидания выезда

да

нет

пора выезжать


нет

нет

послед. место в очереди


перемещаем следующего на своб.место

нет

есть свободное место


проходим по стоянке и очереди

да

да

автомобиль покидает стоянку

начало

обнаружен мешающий


да

фиксируем позицию мешающего

нет

есть не готовый к выезду


проходим по местам стоянки

да

1
размещение
автомобиля из очереди

нет

перемещаем мешающий на вспом.стоянку

нет

да

есть автомобили на вспом.

2
размещение
автомобиля из очереди

перемещаем последний на осн.стоянку

3
размещение
автомобиля из очереди

Список литературы
1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил.
2. Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с.
3. Scarpino M., Holder S., Ng S., Mihalkovic L. SWT/JFace in Action Greenwich, CT, USA: Manning Publications Co., 2005. – 496 pp. ISBN 1-932394-27-3
4. Standard Widget Toolkit http://ru.wikipedia.org/wiki/SWT

Вопрос-ответ:

Какая математическая постановка задачи в моделировании автостоянки?

Математическая постановка задачи в моделировании автостоянки заключается в определении вероятности нахождения машины на определенном месте стоянки в определенное время.

Как описывается метод решения задачи моделирования автостоянки?

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

Какая программа используется для реализации моделирования автостоянки?

Для реализации моделирования автостоянки может быть использована любая программа, которая позволяет создавать и выполнять математические модели и статистические расчеты. Например, MATLAB, R или Python.

Какие данные нужны для моделирования автостоянки?

Для моделирования автостоянки необходимо иметь данные о времени прибытия и убытия автомобилей на стоянку, а также статистические данные о длительности пребывания машин на стоянке.

Какова цель моделирования автостоянки?

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

Чему соответствуют значения шкалы слайдера slider5?

Значения шкалы слайдера slider5 соответствуют времени в минутах, которое автомобиль проводит на стоянке.

Какие параметры задаются для слайдера slider5?

Для слайдера slider5 задаются минимальное и максимальное значение, приращение, значение по умолчанию и ширина слайдера.

Каким образом рассчитывается максимальное значение слайдера slider5?

Максимальное значение слайдера slider5 рассчитывается путем деления времени окончания работы программы на 100.