Вход

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

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 109306
Дата создания 2011
Страниц 21
Источников 3
Мы сможем обработать ваш заказ (!) 29 марта в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 100руб.
КУПИТЬ

Содержание

Содержание
1. Математическая постановка задачи
2. Описание метода решения
3. Результаты моделирования
4. Текст программы
Список литературы

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

alp += cur.getAlpha(); // и определяем ее ориентацию
repaint(); // отрисовываем изображение
try {
Thread.sleep(10); // создаем задержку
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.WHITE); // закрашиваем рабочее поле
g.fillRect(rc.x,rc.y,rc.width-1,rc.height-1);

drawBox(g); // отрисовываем стены

for(int i=0; i < 11; i++) // отрисовываем автомобили
if(occupied[i] != null){ // если автомобиль есть
if(i != 10) // и не новый
drawCar(g,occupied[i]); // рисуем его
else if(!occupied[10].pc.equals(points[10]))
// автомобиль новый, но не в исходной точке
drawCar(g,occupied[i]); // рисуем его
}
}

private class Car{
PointD pc; // текущее положение центра автомобиля
double alp; // угол оси автомобиля к горизонту
Color clr; // цвет автомобиля
double time; // планируемое время действия

Car(int point,double alp,Color clr,double time){
this.pc=points[point]; // фиксируем заданные параметры
this.alp=alp;
this.clr=clr;
this.time=time;
}
}

public void drawCar(Graphics g,Car car){
g.setColor(car.clr); // устанавливаем цвет автомобиля

PointD p1=new PointD(4.,1.5); // формируем массив точек
PointD p2=new PointD(4.,-1.5);
PointD p3=new PointD(-4.,-2.);
PointD p4=new PointD(-4.,2.);
PointD p10=new PointD(2.,2.);
PointD p20=new PointD(2.,-2.);
PointD p30=new PointD(1.,-2.);
PointD p40=new PointD(1.,2.);
PointD p50=new PointD(-2.2,2.);
PointD p60=new PointD(-2.2,-2.);
PointD p70=new PointD(-2.4,-2.);
PointD p80=new PointD(-2.4,2.);

ArrayList<PointD> curve=new ArrayList<PointD>(); // формируем общий контур
curve.add(p10.rotate(car.alp,car.pc));
curve.add(p1.rotate(car.alp,car.pc));
curve.add(p2.rotate(car.alp,car.pc));
curve.add(p20.rotate(car.alp,car.pc));
curve.add(p3.rotate(car.alp,car.pc));
curve.add(p4.rotate(car.alp,car.pc));
curve.add(p10.rotate(car.alp,car.pc));
drawCurve(g,curve);
curve.clear(); // закрашиваем отдельные элементы
curve.add(p1.rotate(car.alp,car.pc));
curve.add(p2.rotate(car.alp,car.pc));
curve.add(p20.rotate(car.alp,car.pc));
curve.add(p10.rotate(car.alp,car.pc));
fillPoly(g,curve);
curve.clear();
curve.add(p30.rotate(car.alp,car.pc));
curve.add(p40.rotate(car.alp,car.pc));
curve.add(p50.rotate(car.alp,car.pc));
curve.add(p60.rotate(car.alp,car.pc));
fillPoly(g,curve);
curve.clear();
curve.add(p70.rotate(car.alp,car.pc));
curve.add(p80.rotate(car.alp,car.pc));
curve.add(p4.rotate(car.alp,car.pc));
curve.add(p3.rotate(car.alp,car.pc));
fillPoly(g,curve);
}

public void drawBox(Graphics g){ // отрисовываем стены
ArrayList<PointD> curve=new ArrayList<PointD>();
g.setColor(Color.BLACK);
curve.add(new PointD(10.,15.));
curve.add(new PointD(10.,45.));
curve.add(new PointD(60.,45.));
curve.add(new PointD(60.,15.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(20.,45.));
curve.add(new PointD(20.,35.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(30.,45.));
curve.add(new PointD(30.,35.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(40.,45.));
curve.add(new PointD(40.,35.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(50.,45.));
curve.add(new PointD(50.,35.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(20.,25.));
curve.add(new PointD(20.,15.));
curve.add(new PointD(50.,15.));
curve.add(new PointD(50.,25.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(30.,25.));
curve.add(new PointD(30.,15.));
drawCurve(g,curve);
curve.clear();
curve.add(new PointD(40.,25.));
curve.add(new PointD(40.,15.));
drawCurve(g,curve);
}
// Функция вычерчивания линии
private void drawCurve(Graphics g,ArrayList<PointD> curve){
PointD p1=curve.get(0); // начальная точка
PointD p2;
for(int i=1; i < curve.size(); i++){
p2=curve.get(i); // конечная точка
g.drawLine(p1.ix(),p1.iy(),p2.ix(),p2.iy()); // чертим...
p1=new PointD(p2); // меняем начальную точку
}
}
// Функция закраски многоугольника
private void fillPoly(Graphics g,ArrayList<PointD> outline){
int size=outline.size();
int x[]=new int[size]; // формируем массивы координат
int y[]=new int[size];
for(int i=0; i < outline.size(); i++){
PointD p=outline.get(i);
x[i]=p.ix();
y[i]=p.iy();
}
g.fillPolygon(x,y,size); // чертим...
}
// Класс представления точки для вычичслений
private class PointD{
public double x; // координата x
public double y; // координата y
public PointD(double x,double y){ // конструктор по действительным координатам
this.x=x;
this.y=y;
}
public PointD(PointD p){ // конструктор по точке
this.x=p.x;
this.y=p.y;
}
public PointD rotate(double alp,PointD p){
return new PointD(p.x+x*Math.cos(alp)-y*Math.sin(alp),
p.y+x*Math.sin(alp)+y*Math.cos(alp));
}
public int ix(){ // значение x в экранных координатах
return (int)((x-minx)*zoom)+off_x;
}
public int iy(){ // значение y в экранных координатах
return rc.height-(int)((y-miny)*zoom)-off_y;
}
}

private interface Section{ // участок маршрута
public int exactStep(double d);
public PointD next();
public double getAlpha();
}
private class LineSection implements Section{ // отрезок прямой
double length; // длина отрезка
int o; // горизонтальный/вертикальный
int n; // направление
double dx; // смещение по X
double dy; // смещение по Y
double delta; // уточненный шаг
PointD p; // начальная точка
PointD p1; // конечная точка отрезка
LineSection(int o,int n,double length,PointD p0){ // конструктор
this.length=length;
this.o=o;
this.n=n;
this.p1=new PointD(p0.x+(1+o)/2*n*length,p0.y+(-1+o)/(-2)*n*length);
this.p=p0;
dx=0.;
dy=0.;
}
public int exactStep(double d){ // уточнение шага
int num=(int)(length/d);
num--;
delta=length/num;
dx=0.;
dy=0.;
return num;
}
public PointD next(){ // следующая точка
dx += (1+o)/2*n*delta;
dy += (-1+o)/(-2)*n*delta;
return new PointD(p.x+dx,p.y+dy);
}
public double getAlpha() {
return(0.);
}
}
private class ArcSection implements Section{ // дуга
double R; // радиус закругления
int r; // направление поворота
int o; // горизонтальный/вертикальный
int n; // направление входа
double alpha; // текущий угол
double dalpha; // уточненный угловой шаг
PointD p; // начальная точка
PointD p1; // конечная точка отрезка
ArcSection(int r,double R,PointD p0,int o,int n){ // конструктор
this.R=R;
this.r=r;
this.o=o;
this.n=n;
this.p=p0;
this.p1=new PointD(p0.x+(1+o)/2*n*R+(-1+o)/(-2)*o*n*r*R,
p0.y+(-1+o)/(-2)*n*R+(1+o)/2*o*n*r*R);
}
public int exactStep(double d){ // уточнение шага
int num=(int)(Math.PI/2.*R/d);
num--;
dalpha=Math.PI/2./num;
alpha=0.;
return num;
}
public PointD next(){ // следующая точка
alpha += dalpha;
return new PointD(p.x+(1+o)/2*n*R*Math.sin(alpha)
+(-1+o)/(-2)*o*n*r*R*(1-Math.cos(alpha)),
p.y+(-1+o)/(-2)*n*R*Math.sin(alpha)
+(1+o)/2*o*n*r*R*(1-Math.cos(alpha)));
}
public double getAlpha() { // угол со знаком
return r*dalpha;
}
}
}
Список литературы
1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил.
2. Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с.
3. Шеннон Р. Имитационное моделирование систем – искусство и наука/ Пер. с англ. под ред. Е.К. Масловского – М.: Мир, 1978. – 212 с., ил.
Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил., стр.65
Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил., стр.69
Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с., стр.59
Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с., стр.66
Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил., стр.265
Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил., стр.268-269
там же, стр.278-279
Шеннон Р. Имитационное моделирование систем – искусство и наука/ Пер. с англ. под ред. Е.К. Масловского – М.: Мир, 1978. – 212 с., ил., стр.211
4
да
есть свободное место
да
прибытие нового автомобиля
автомобиль покидает стоянку
нет
прибытие
автомобиля
определение
момента и
состояния
нет
есть место в очереди
да
есть автомобили в очереди
да
нет
нет
размещение автомобиля в очереди
размещение
автомобиля
на стоянке
отказ в обслуживании
размещение
автомобиля из очереди
смещение автомобилей по очереди
начало

Список литературы [ всего 3]

Список литературы
1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учеб. для вузов – 3-е изд., перераб. и доп. – М.: Высш. шк., 2001. – 343 с., ил.
2. Бусленко Н.П. Метод статистического моделирования: Математическая статистика для экономистов – М.: Статистика, 1970. – 112 с.
3. Шеннон Р. Имитационное моделирование систем – искусство и наука/ Пер. с англ. под ред. Е.К. Масловского – М.: Мир, 1978. – 212 с., ил.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00471
© Рефератбанк, 2002 - 2024