roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 02:31

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 20 окт 2004, 21:32 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Обдумал немного, получилось:

В самом простом варианте "все по очереди приоритетов":
1. Надо создавать список целей из которых в каждый момент времени выбирается наиболее приоритетная;
2. Надо отдельно создавать список правил и проверять все правила, имеющие больший или равный приоритет с текущей главной целью;

Робот тупой до невозможности :)

===============================================

Чуть сложнее:

Введем еще понятие стоимости достижения цели (в простейшем варианте - время, которое нужно затратить на выполнение задачи);

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

В более сложном варианте "пытаемся успеть несколько главных целей":
1. В списке целей у каждой кроме приоритета есть крайний срок;
2. Правила просто имеют некоторый приоритет;

Выбор варианта выполнения задач происходит следующим образом:
1. Среди всех целей выбираем N самых важных (если для не достаточно приоритетов и крайнего времени выполнения, учитываем стоимость из текущего положения);
2. Перебираем все перестановки из этих N задач и определяем оптимальную из них по совокупности вовремя выполненных задач (учитывая приоритет, т.е. если первые несколько приоритетов имеют одинаковое количество решенных задач в каждой совокупности, то выбираем тот вариант, где какой-то приоритет имеет больше решенных задач, если все одинаковые, то выбираем более дешевый по выполнению вариант);

Как только выполнена какая-то задача, полностью пересматриваем порядок выполнения;

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

==============================================

Интересный пример для второго варианта - задача роботу побывать в 50 случайно расставленных по помещению точках, в этом случае при одинаковых приоритетах и крайнем времени выполнения робот будет действовать по "жадному алгоритму", но оптимизируя путь между ближайшими к себе N точками :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 окт 2004, 10:24 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
народ, есть предложение.
Раз уж мы пытаемся алогритм создать, так давайте попробуем всё вышеописанное привести к алгоритмическому виду, только пока без языкового синтаксиса - словесно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 окт 2004, 20:41 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Процедура определение списка следующих N задач и порядка их выполнения:

1. Упорядочим задачи сначала по приоритетам, внутри по времени выполнения, а внутри по стоимости выполнения из текущего положения;
2. Возьмем первые N задач;
3. Переберем все перестановки из этих N задач и для каждой оценим совокупную стоимость выполнения и какие задачи смогут быть выполнены в срок при такой последовательности;
4. Выберем лучшую перестановку по совокупности удачно выполненных задач;
5. Вернем порядок и список задач с моментами начала выполнения как результат своей работы;

При изменении списка задач процедура вызывается заново.

===============================================

Очевидные проблемы такой эвристики:
1. Если нам нужно до завтра выполнить N важных дел и все их можно успеть сделать завтра, а на сегодня с крайним сроком сегодня же есть менее важные дела, то менее важные дела будут загублены.
2. Не ясно как быть с составными задачами, т.е. которые составляют большую задачу и должны выполняться в некой последовательности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 окт 2004, 00:07 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
=DeaD= писал(а):
Процедура определение списка следующих N задач и порядка их выполнения:

1. Упорядочим задачи сначала по приоритетам, внутри по времени выполнения, а внутри по стоимости выполнения из текущего положения;
2. Возьмем первые N задач;
3. Переберем все перестановки из этих N задач и для каждой оценим совокупную стоимость выполнения и какие задачи смогут быть выполнены в срок при такой последовательности;
4. Выберем лучшую перестановку по совокупности удачно выполненных задач;
5. Вернем порядок и список задач с моментами начала выполнения как результат своей работы;

При изменении списка задач процедура вызывается заново.

===============================================

Очевидные проблемы такой эвристики:
1. Если нам нужно до завтра выполнить N важных дел и все их можно успеть сделать завтра, а на сегодня с крайним сроком сегодня же есть менее важные дела, то менее важные дела будут загублены.
2. Не ясно как быть с составными задачами, т.е. которые составляют большую задачу и должны выполняться в некой последовательности.


Давайте попробуем применить этот алгоритм скажем к передвижению между точками с целю посещения всех точек из списка. Навигация идет по карте. Стоимостью назовем например время...или длину пути...
Предположим, что на карте есть ненанесенные препятствия. Вопрос, как предполагается делать оценку стоимости?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 окт 2004, 09:13 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
Давайте попробуем применить этот алгоритм скажем к передвижению между точками с целю посещения всех точек из списка. Навигация идет по карте. Стоимостью назовем например время...или длину пути...
Предположим, что на карте есть ненанесенные препятствия. Вопрос, как предполагается делать оценку стоимости?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 окт 2004, 23:09 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
=DeaD= писал(а):
Виталий писал(а):
Давайте попробуем применить этот алгоритм скажем к передвижению между точками с целю посещения всех точек из списка. Навигация идет по карте. Стоимостью назовем например время...или длину пути...
Предположим, что на карте есть ненанесенные препятствия. Вопрос, как предполагается делать оценку стоимости?

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

А если препятствие такое, что обойти его нельзя, то система построенная на подобного рода правилах, может не выполнить ни одной из поставленных задач (просто не успеет). Надо подумать над такой ситуацией...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 07:14 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
А если препятствие такое, что обойти его нельзя, то система построенная на подобного рода правилах, может не выполнить ни одной из поставленных задач (просто не успеет). Надо подумать над такой ситуацией...

Ну вы же, когда идете в магазин за продуктами - не паритесь по поводу "вдруг в городе продукты кончились, или все магазины закрыты сегодня" - а может ведь быть? Вот и тут - если лабиринт такой что не пройти почти всегда, то робот очень быстро этой поймет и сделает соотв. весовой коэфф., иначе будет считать, что почти всегда есть проход.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 12:36 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
=DeaD= писал(а):
Ну вы же, когда идете в магазин за продуктами - не паритесь по поводу "вдруг в городе продукты кончились, или все магазины закрыты сегодня" - а может ведь быть? Вот и тут - если лабиринт такой что не пройти почти всегда, то робот очень быстро этой поймет и сделает соотв. весовой коэфф., иначе будет считать, что почти всегда есть проход.

Ну ладно поставим вопрос немного по другому.
Цитата:
1. Упорядочим задачи сначала по приоритетам, внутри по времени выполнения, а внутри по стоимости выполнения из текущего положения;

1. Что такое задача? Метод ее представления в вашем случае?
2. Как определяется приоритет (как я понимаю должна быть методология вычисления приоритета, если это число)?
3. Соответственно, как определить стоимость выполнения для задач разного рода? (вообще-то вопрос не совсем корректен, т.к. я не знаю что по-вашему задача...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 13:51 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
В данном случае я описал лишь один из вариантов способа выбора задач.

Виталий писал(а):
1. Что такое задача? Метод ее представления в вашем случае?

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

Виталий писал(а):
2. Как определяется приоритет (как я понимаю должна быть методология вычисления приоритета, если это число)?

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

Виталий писал(а):
3. Соответственно, как определить стоимость выполнения для задач разного рода? (вообще-то вопрос не совсем корректен, т.к. я не знаю что по-вашему задача...)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 14:17 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Мне иногда кажется, что меня пытаются закидать шапками...

Цитата:
Метод представления задачи зависит от конкретного проекта. Мне например видимо будет удобен текстовый формат. Синтаксис особого значения не имеет, но могу привести пример.

Да, пожалуйста, приведите пример...
Цитата:
Не определяется, а назначается в соответствии с правилами, либо явно. Да это число. Например можно назначить приоритет по умолчанию от каждого субъекта, максимальный приоритет, который может назначать каждый субъект и т.п. принципы.

По вашему слово назначается более емко? Ну что ж соглашусь... Но вот какова методика назначения приоритетов? Точнее так: каков закон, следуя которому назначается приоритет? (Если это правило, то какое количество правил вы хоти те использовать, или же это будет метод синтеза новых правил из уже существующих, если да, то что будет взято за основу?)

Цитата:
...или их линейной комбинацией...

Только линейной?

И еще, объясните мне пожалуйста, что в вашем случае субъект?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 14:31 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
Мне иногда кажется, что меня пытаются закидать шапками...

Между закидыванием шапками и обсуждением теории пропасть разницы :)

Виталий писал(а):
Да, пожалуйста, приведите пример...

0. СТОЯТЬ;
1. ДВИГАЙСЯ_В_РАЙОН [50,10,60,20];
2. ЗАРЯДИСЬ;
3. ОБНОВИ_КАРТУ [-100,-100]-[100,100];
4. ПРИНЕСИ_ОБЪЕКТ [КРАСНЫЙ_ШАР], РАЙОН [50,60]-[60,70];
5. НАЙДИ_ОБЪЕКТ [ЗЕЛЕНЫЙ_ШАР], РАЙОН [0,0]-[50,50];

Виталий писал(а):
По вашему слово назначается более емко? Ну что ж соглашусь... Но вот какова методика назначения приоритетов? Точнее так: каков закон, следуя которому назначается приоритет? (Если это правило, то какое количество правил вы хоти те использовать, или же это будет метод синтеза новых правил из уже существующих, если да, то что будет взято за основу?)

Приоритет - может определятся явно при получении команды, например я могу дать команду роботу и указать приоритет, а могу не дать, и тогда он должен быть выставлен по умолчанию (соотв. он может быть у каждого субъекта свой "по умолчанию").

Виталий писал(а):
Цитата:
...или их линейной комбинацией...

Только линейной?

Цитируйте полностью :) там было слово "например".

Виталий писал(а):
И еще, объясните мне пожалуйста, что в вашем случае субъект?

Вроде как обычно - тот, кто может давать команды роботу.

Виталий писал(а):
P.S. Мне действительно интересен подобный подход к решению проблемы, но не видно никакой конкретики...к сожалению. Правила, еще что-то заоблачное, а вот реального визуализатора - нет...

Потому что сначала надо обсудить и перетереть алгоритм, а потом реализовывать. Конкретика - это уже с объявлениями конкретных массивов и списком статусов - я до такого опускаться буду только в своей конкретной программе. До этого мне важен принцип.

PS: Сразу предупреждаю - моя конкретика будет работать на PC, поэтому я буду использовать его огромные вычислительные мощности. Однако думаю принципы подойдут и для МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 15:16 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
Между закидыванием шапками и обсуждением теории пропасть разницы

Она сокращается, до размеров трещины в асфальте, как только теоретики начинают препираться =)
Цитата:
...
ДВИГАЙСЯ_В_РАЙОН [50,10,60,20];
...

На думать данная команда разбивается на ряд более мелких (элементарных) самим роботом (не будем уточнять каким образом). И соответственно сам робот расставляет приоритеты я так понимаю? Если я понимаю, то как он это будет делать? Если я понимаю неправильно, то где по вашему робот-то?
Цитата:
Вроде как обычно - тот, кто может давать команды роботу.

Давайте будем называть это управляющим устройством...все-таки субъект это
немного другое.
Цитата:
Потому что сначала надо обсудить и перетереть алгоритм, а потом реализовывать. Конкретика - это уже с объявлениями конкретных массивов и списком статусов - я до такого опускаться буду только в своей конкретной программе. До этого мне важен принцип.

Ну вы рассматриваете свою теорию в каком-то контексте ведь так?  Есть ведь у вас некоторая умозрительная модель...
Но это неважно впринципе, то, что конкретика это конкретные объявления - ну несогласен, блок-схема тоже конкретика в какой-то мере, просто хочется спорить о вкусе устриц с теми, кто их ел. Перетереть-то можно мы только за - но перетерать надо на основе чего-то...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 15:51 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
На думать данная команда разбивается на ряд более мелких (элементарных) самим роботом (не будем уточнять каким образом). И соответственно сам робот расставляет приоритеты я так понимаю? Если я понимаю, то как он это будет делать? Если я понимаю неправильно, то где по вашему робот-то?

У меня это будет разбиваться уже внутри схемы выполнения команды и приоритет будет только у всей команды целиком, но можно рассматривать и другие варианты. Что значит "где по вашему робот-то"?

Виталий писал(а):
Давайте будем называть это управляющим устройством...все-таки субъект это немного другое.

Не я полез в философию :) Толковый словарь, "СУБЪЕКТ" - 5. В грамматике: семантическая категория со значением производителя действия или носителя состояния.
Если хотите могу называть управляющим устройством.

Виталий писал(а):
Но это неважно впринципе, то, что конкретика это конкретные объявления - ну несогласен, блок-схема тоже конкретика в какой-то мере, просто хочется спорить о вкусе устриц с теми, кто их ел. Перетереть-то можно мы только за - но перетерать надо на основе чего-то...


1. Я имею общий опыт программирования в достаточном объеме и достаточного уровня, в т.ч. разумеется успешного решения задач гораздо более сложных, чем создание формочек;
2. Мне интересна тема создания алгоритмов для управления роботом, уровня существенно выше "стукнулся => отъехал назад";
3. Я изучаю темы связанные с этими алгоритмами, читаю статьи всяких MIT и ему подобных на эти темы;
4. Я написал софт для управления 4х-ногим роботом с моделированием его перемещения по поверхности и прямой и обратной кинематикой + тупые пара команд типа идти вперед и повернуться;
5. В данный момент я собираю колесную базу для исследования алгоритмов составления карты (пока не заморачиваюсь на 4-хногого робота, т.к. запарок много, а темных мест, которые я не уверен что преодолею, типа работы с 2мя вебкамерами сразу, до кучи). Схемы управления всей фигней уже испытаны, сегодня куплю еще пару сервов для управления камерой.

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

Так я ел устриц?

PS: А на основе чего Вы хотите перетирать эту тему?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 17:13 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Цитата:
У меня это будет разбиваться уже внутри схемы выполнения команды и приоритет будет только у всей команды целиком, но можно рассматривать и другие варианты. Что значит "где по вашему робот-то"?

Просто если вы разбивате команду, то получаете, опять таки задачу расстановки приоритетов, но теперь уже роботом...посему очень интересен способ этой самой расстановки, а заодно и определения приоритетов.
"где по вашему робот-то" - если вы будете давать роботу элементарные команды самостоятельно анализируя его состояния и расставляя приоритета...ну далше понятно. Суть вопрос исчерпан.
Цитата:
Не я полез в философию  Толковый словарь, "СУБЪЕКТ" - 5. В грамматике: семантическая категория со значением производителя действия или носителя состояния.

Я тоже не лез.. Просто теперь посмотрим
"Вроде как обычно - тот, кто может давать команды роботу." и "семантическая категория со значением производителя действия или носителя состояния" немного разные понятия, но вобщем разобрались...
Цитата:
1. Я имею общий опыт программирования в достаточном объеме и достаточного уровня, в т.ч. разумеется успешного решения задач гораздо более сложных, чем создание формочек;

Не будем злословить на эту тему...но мне непонятно, достаточным для чего?
Цитата:
2. Мне интересна тема создания алгоритмов для управления роботом, уровня существенно выше "стукнулся => отъехал назад";

По большому счету, если говорить об алгоритмах объезда (отъезда) от препятствий на примитивных ИК датчиках, то все сводится именно к этому.
Цитата:
4. Я написал софт для управления 4х-ногим роботом с моделированием его перемещения по поверхности и прямой и обратной кинематикой + тупые пара команд типа идти вперед и повернуться;

А проверили работает или нет на живой модели?
Цитата:
Так я ел устриц?

Не могу судить...
Цитата:
PS: А на основе чего Вы хотите перетирать эту тему?

Для начала, на алгоритме отъезда от препятствий, потому как такое понятие как управление роботом слишком обширно ИМХО.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 окт 2004, 17:20 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
:lol:  Горячие финские Парни


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO