Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2023, 01:28   #1
Alisa15
Пользователь
 
Регистрация: 28.09.2022
Сообщений: 19
По умолчанию решить задачу на муравьиную стратегию (на любом языке)

Помогите пожалуйста решить задачу (наДействие происходит на поле размером N*N клеток. В клетке с координатами (1,1) находится «муравейник», в котором имеется M муравьев. На поле также в случайных местах находится k источников пищи емкостью в Pi единиц. Также на поле находятся непроходимые препятствия, которые приходится обходить.
Необходимо собрать всю пищу за наиболее короткое время.
В начальный момент все муравьи находятся в «муравейнике» и начинают поочередно выходить в поисках пищи. Двигаться они могут на любую из 8-и окружающих клеток. Поначалу все муравьи двигаются в случайных направлениях и их движение похоже на броуновское.
Если какой-то муравей находит источник пищи, то он:
- сообщает координаты источника всем остальным муравьям;
- откусывает от источника 1 единицу и начинает двигаться к муравейнику по наиболее короткому пути.
- достигнув муравейника он «разгружается», и по наиболее короткому пути идет к источнику за очередной порцией.
Получив информацию о координатах пищи, остальные муравьи также по наиболее коротким путям начинают переносить пищу в муравейник. В одной клетке может находиться только один муравей.
Как только найденный источник пищи будет полностью исчерпан, то все муравьи переходят в режим броуновского движения, до нахождения очередного источника пищи.
Графическая иллюстрация обязательна и достаточна хотя бы в примитивном варианте - в виде разноцветных точек.
Пример игрового поля (зеленые клетки – пища, серые клетки – препятствия, красные – муравьи)
любом языке)
Изображения
Тип файла: png пример игрового поля.png (12.8 Кб, 38 просмотров)
Alisa15 вне форума Ответить с цитированием
Старый 16.01.2023, 09:12   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Цитата:
Сообщение от Alisa15 Посмотреть сообщение
Двигаться они могут на любую из 8-и окружающих клеток.
Синюю окружают только 3 клетки.

Цитата:
Сообщение от Alisa15 Посмотреть сообщение
- сообщает координаты источника всем остальным муравьям;
Только о еде "рассказывает" или о пустых клетках и препядствиях тоже?
Или каждый муравей сам должен найти все препядствия и пустые клетки?

Цитата:
Сообщение от Alisa15 Посмотреть сообщение
откусывает от источника 1 единицу и начинает двигаться к муравейнику по наиболее короткому пути.
Муравей может заходить на клетку с едой?

Муравей может пропустить ход оставаясь на месте или он обязательно должен сделать переход.

Последний раз редактировалось Valick; 16.01.2023 в 09:41.
Valick вне форума Ответить с цитированием
Старый 16.01.2023, 11:39   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

16.01.2023

ТЕХНИЧЕСКОЕ ЗАДАНИЕ
ДИЗАЙНЕРСКИЙ ДОКУМЕНТ
ДИЗДОК

НАПИСАНИЕ ТЕХНИЧЕСКОГО ЗАДАНИЕ ПО ГОСТУ
ТЕХНИЧЕСКИЙ ПИСАТЕЛЬ

ПОСТРОЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЙ МОДЕЛИ ПРЕДМЕТНОЙ ОБЛАСТИ
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

1. ОПРЕДЕЛЕНИЕ ОБЪЕКТОВ

ОБЪЕКТЫ:

ПОЛЕ
n - размер поля по горизонтали
m - размер поля по вертикали

КЛЕТКА
0 - пустая клетка
1 - муравейник
2 - муравей
3 - источник питания

МУРАВЕЙ
m - количество муравьев
x - координата муравья
y - координата муравья

МУРАВЕЙНИК
x - координата муравейника
y - координата муравейника

ИСТОЧНИК ПИТАНИЯ
k - количество источников питания
x - координата источника питания
y - координата источника питания

ИСТОЧНИК ПРЕПЯТСТВИЯ
x - координата источника препятствия
y - координата источника препятствия

2. ПОСТРОЕНИЕ ИЕРАРХИЧЕСКОЙ МОДЕЛИ КЛАССОВ
ОПРЕДЕЛЕНИЕ КЛАССОВ
ОПРЕДЕЛЕНИЕ СВЯЗЕЙ МЕЖДУ КЛАССАМИ
ПОСТРОЕНИЕ ИНФОРМАЦИОННОЙ СИСТЕМЫ
ИНФОРМАЦИОННАЯ СИСТЕМА ИЗ КЛАССОВ И СВЯЗЕЙ МЕЖДУ НИМИ

3. ВЫБОР ЯЗЫКА ПРОГРАММИРОВАНИЯ
ОБЪЯСНЕНИЕ ВЫБОРА

A. ДЛЯ РЕЮЗАБИЛИТИ - C++
B. ДЛЯ ГРАФИЧЕСКОГО ОТОБРАЖЕНИЯ - C++

4. ГРАФИЧЕСКИЙ ДИЗАЙН: Сделать необходимые изображения
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 16.01.2023, 11:56   #4
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

challengerr, это откуда? Сам придумал? Имеет место конечно быть, но у меня немного другая структура.
Например Муравей вообще не должен знать о количестве муравьёв (это свойство муравейника), даже собственные координаты как свойство класса под вопросом, скорее всего должен получать извне (от клетки в которой он находится). По хорошему его можно взять за шкирку и бросить на любую клетку и он не должен потеряться.
Valick вне форума Ответить с цитированием
Старый 16.01.2023, 14:27   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Я не понял вашу задачу:
1. Как связано изображение с условием поля N*N
На изображении не N*N
2. Если муравьи движутся броуновски, как может быть достигнуто минимальное время??? Время там случайное.
3. Как источники питания размещаются на поле - по заготовленной схеме или случайно
4. Как определяется изначальная емкость источника - по заготовленной схеме или случайно
5. как размещаются препятствия - по заготовленной схеме или случайно

Заготовка у меня получилась вот такая:
Код:
/*
МУРАВЕЙНИК
x - координата муравейника 
y - координата муравейника
*/

class muraveynik
{
public:
int x;
int y;

};


/*
ИСТОЧНИК ПРЕПЯТСТВИЯ
x - координата источника препятствия
y - координата источника препятствия
*/

class obstacle
{
public:
int x;
int y;

};

/*
МУРАВЕЙ
m - количество муравьев
x - координата муравья
y - координата муравья
*/

class muravey
{
public:
int x;
int y;

};


/*
ИСТОЧНИК ПИТАНИЯ
k - количество источников питания
x - координата источника питания
y - координата источника питания
n - количество ресурсов в источнике питания
*/

class resource
{
public:
int n; // количество

};

/*
КЛЕТКА
x - координата 
y - координата 
type - тип клетки
0 - пустая клетка
1 - муравейник
2 - муравей
3 - источник питания
4 - препятствие
*/

class cell
{
public:
int type;


cell() { type = 0; }

};

/*
1000000000020000
0002000300000000
0000000000000040
0000000000000040
0444444000000040
2000000002000040
0000400000000040
0030400000000000
0000400000444400
0440400000004000
0000430000034000
0000400000004000
0400400000004000
0400444400004000
0400000000004044
0400000000004000
0400003000004030
0000000000000000
*/

class field
{
public:
int n;
int m;
cell** a; // клетка
resource* b; // источники питания
muravey* c; // муравьи
int m;  // количество муравьев
int k; // количество источников питания


field(int p1, int p2) 
{ 
int i; 
a = 0; 
b = 0;
c = 0;
a = new cell*[p1]; 
n = p1; 
for(i=0;i<p1;i++) a[i] = new cell[p2]; 
m = p2; 
create_type(); 
}

void create_source(int t) { k = t; b = new resource[t]; }
void create_muraveynik() { a[0][0].type = 1; }
void create muravey(int t) { m = t; c = new muravey[t]; }
void create_obstacle(){ }
void create_type() { create_source(5); create_obstacle(); create_muraveynik(); create muravey(10); }

};
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.01.2023, 01:20   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
Муравей может пропустить ход оставаясь на месте или он обязательно должен сделать переход.
Он может оказаться зажатым со всех сторон и будет вынужден пропустить ход.
Arigato вне форума Ответить с цитированием
Старый 17.01.2023, 02:02   #7
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

Arigato, это да, но я немного неправильно спросил, допустим еда нашлась и у мураша есть чёткий план, а на кратчайшем пути к еде стоит другой муравей, который скорее всего следующим ходом подвинеться, поэтому стоит ли его обходить или можно подождать?
Кстати действительно очень интересная задачка.
Valick вне форума Ответить с цитированием
Старый 17.01.2023, 12:19   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
допустим еда нашлась и у мураша есть чёткий план, а на кратчайшем пути к еде стоит другой муравей, который скорее всего следующим ходом подвинеться
Скорее всего надо перестраивать путь заново на каждом ходе. Ну если подвинется, то на следующем ходе это будет учтено.
Arigato вне форума Ответить с цитированием
Старый 17.01.2023, 13:33   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

идут два муравья по короткому пути:
1-й С едой в муравейник;
2-й из муравейника ЗА едой (один муравейник и один источник еды)
рано или поздно они уткнутся друг в друга (путь-то одинаков).
кто будет ждать, а кто обходить, и как?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.01.2023, 13:51   #10
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить задачу про роботов на любом языке программирования Alisa15 Помощь студентам 0 15.01.2023 22:47
помогите решить задачу на массивы на языке ассемблере Berik10 Помощь студентам 1 15.10.2017 16:44
Не получается решить задачу на языке С++ sarexer Помощь студентам 6 22.09.2016 15:34
Решить задачу на языке OCCAM V_F Фриланс 0 22.05.2012 12:11