roboforum.ru

Технический форум по робототехнике.

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

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

Re: Как правильно писать сценарии поведения робота?

Сообщение Dmitry__ » 06 дек 2016, 00:18

Ой, я все проспал :)
Ну да, чо-то я не всю задачу поставил, да, имелось в виду у крестьянина есть выделенная земля опред. площади, надо построить самый короткий забор.
Но вот вопрос, как математика без итераций дает ответ: при сторонах прямоугольника A=b ? Вот это сила :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 00:38

Dmitry__ писал(а):Ой, я все проспал :)
Ну да, чо-то я не всю задачу поставил, да, имелось в виду у крестьянина есть выделенная земля опред. площади, надо построить самый короткий забор.
Но вот вопрос, как математика без итераций дает ответ: при сторонах прямоугольника A=b ? Вот это сила :)

Ну что значит без итераций? Ты квадратный корень как считаешь на компьютере?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Как правильно писать сценарии поведения робота?

Сообщение Dmitry__ » 06 дек 2016, 00:39

S=const=100 = a*b, 100 = a*b
p=2(a+b)
Человек, чтоб это решить, должен построить функцию (итерации) зависимости периметра от длины одной стороны:
p=y, a=x
y=2(x + 100/a)
Получаем:
http://www.yotx.ru/#!1/3_h/sH@1sHB/tGDOF/bf9o/2D/YN9PSq3t72zsQbcODrb3dvcP9kk07MbOKePxdIvxuHV5sbu/tQ8E
www.yotx.ru.png


Теперь человек пальчиком находит минимум функции = p =40 при а = 10
Осталось найти вторую сторону b = 100/a = 10
a=b=10, для площади 100 :)
А математика это решает нахождением производной функции (без итераций) - т.е. где скорость функции = 0, и ответ ее будет: a = b для любых значений площади. Вот такая она сука :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 00:47

Ну производная - это просто математический аппарат. Математика сама никуда не пойдет и ничего не решит.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Как правильно писать сценарии поведения робота?

Сообщение Dmitry__ » 06 дек 2016, 00:55

Да, щаз, можно не зная производных самому решить:
Скорость функции = дельта Y / дельта Х. И соотв. скорость приравнять к нулю.
Осталось взять 2 значения х, например х1 = x, a x2 = x+0.000000000000000000001
Теперь функцию периметра посчитать для этих 2-х значений и найти такие х1,х2, при которых периметр не меняется :)

Добавлено спустя 2 минуты 46 секунд:
0.000000000000000000001 = lim
2(x+const/x) = 2((x+lim)+const/(x+lim))
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Как правильно писать сценарии поведения робота?

Сообщение smur » 06 дек 2016, 00:58

Я вот теоретически решил отхалявить :)
m - мама, f - папа, d1,2 - дочки, s1,2 - сыновья, p - полицейский, g - гангстер
Ф-ии (не минимизированные) по таблицам истинности по конъюктивной нормальной форме (КНФ)
f1=(m+!f+d1+d2)*(m+!f+!d1+!d2)*(m+!f+!d1+!d2)
f2=(!p+g)*(p+!g)
f3=(m+f+p+g)
На берегах (берег и инверсия берега) ф-я = f1*f2
В лодке ф-я = f1*f2*f3
Обход дерева (m,f,d1,d2,s1,s2,p,g) в глубину
То есть по сути ставим условие в виде ф-й, а решается обходом графов, что сильно сокращает поиск. Никакого ИИ.

Добавлено спустя 1 минуту 45 секунд:
Ошибся
f1=(m+!f+d1+!d2)*(m+!f+!d1+d2)*(m+!f+!d1+!d2)
smur
 
Сообщения: 89
Зарегистрирован: 22 ноя 2016, 22:00

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 01:04

Ответ-то дай обходом графов
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Как правильно писать сценарии поведения робота?

Сообщение Dmitry__ » 06 дек 2016, 17:31

dccharacter писал(а):Ответ-то дай обходом графов

Да, присоединяюсь, ответ-то дай :)

Ой, я выше чушь вывел с производной и никто не скажет, патамучта всем пофиг.
Привел все к классическому двоечнику на математике: х=x :oops:

dccharacter, следи за руками:

s=ab, p=2(a+b)
функция:
y=2(x + s/x)
производная (предел = lim)
(2(x+lim + s/(x+lim)) - 2(x + s/x))) / (x + lim - x)
приравниваем к нулю, ибо нам нужен минимальный периметр.
(2(x+lim + s/(x+lim)) - 2(x + s/x))) / (x + lim - x) = 0
сокращаем:
( + 2lim + 2s/(x+lim) - 2x - 2s/x) / lim = 0
2lim + 2s/(x+lim) -2s/x = 0
lim + s/(x+lim) = s/x
(lim(x+lim) + s)/(x+lim) = s/x
(limx + lim^2 + s)/(x+lim) = s/x
(lim*x^2 + lim^2*x + sx)/(x+lim) = s
lim*x^2 + lim^2*x + sx = xs + lim*s
lim*x^2 + lim^2*x = lim*s
x^2 + lim*x = s
x(x + lim) = s
x + lim = s/x
x - это сторона а
s/x - это сторона b
Получаем:
а + lim = b
из-за своей ничтожности lim, который около 0.0000000000000000000000000000000000000000000000001, имеем:
a=b
йохо :D
Кто здесь?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Как правильно писать сценарии поведения робота?

Сообщение smur » 06 дек 2016, 17:41

Решается по типу волк коза и капуста
http://www.habarov.spb.ru/bz/bz08.pdf
на досуге напишу
smur
 
Сообщения: 89
Зарегистрирован: 22 ноя 2016, 22:00

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 18:18

Дим, чо за лимиты, блин?
Одна сторона x, другая s/x
p(x) = 2x + 2s/x
p'(x) = 2 - 2s/x^2
s = x^2
x = sqrt(s)

Добавлено спустя 2 минуты 25 секунд:
smur, да это то же самое, что у меня
Только у меня вот это:
Код: Выделить всёРазвернуть
if not (("husb" in plot) or ("wife" in plot) or ("police" in plot)):
                continue
            if "inmate" in plot and "police" not in plot:
                continue
            if "inmate" in left and "police" not in left and len(left) > 1:
                continue
            if ("husb" in plot and "girl1" in plot) or ("husb" in plot and "girl2" in plot):
                continue
            if ("wife" in plot and "son1" in plot) or ("wife" in plot and "son2" in plot):
                continue
            if ("husb" in left and "girl1" in left and "wife" not in left) or ("husb" in left and "girl2" in left and "wife" not in left):
                continue
            if ("wife" in left and "son1" in left and "husb" not in left) or ("wife" in left and "son2" in left and "husb" not in left):
                continue
            if ("wife" in headingTo and "son1" in headingTo and "husb" not in headingTo) or ("wife" in headingTo and "son2" in headingTo and "husb" not in headingTo):
                continue
            if ("husb" in headingTo and "girl1" in headingTo and "wife" not in headingTo) or ("husb" in headingTo and "girl2" in headingTo and "wife" not in headingTo):
                continue


А у тебя вот это:
Код: Выделить всёРазвернуть
(m+!f+d1+!d2)*(m+!f+!d1+d2)*(m+!f+!d1+!d2)

Но это, уж извини, я такой программист
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Как правильно писать сценарии поведения робота?

Сообщение smur » 06 дек 2016, 18:26

Я на кафедре электроники учился в МИФИ, а там учили работать через таблицы истинности, на курсе дискретной математики.
Как научили, так и делаем :)
Строишь таблицу, получаешь на ее базе логическую ф-ю, минимизируешь ее. Как то так.
smur
 
Сообщения: 89
Зарегистрирован: 22 ноя 2016, 22:00

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 18:31

Очень круто. А я вот дерево.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Как правильно писать сценарии поведения робота?

Сообщение smur » 06 дек 2016, 18:35

Да ладно! Ты круче ИИ :) Турнир мы ведь видели, присылал :)
smur
 
Сообщения: 89
Зарегистрирован: 22 ноя 2016, 22:00

Re: Как правильно писать сценарии поведения робота?

Сообщение Dmitry__ » 06 дек 2016, 18:46

dccharacter писал(а):Дим, чо за лимиты, блин?

Ты сам просил без "Ну производная - это просто математический аппарат."
Я тебе сделал без правил выведения производных. Одна математика 7-го класса.
dccharacter писал(а):x = sqrt(s)

Ты сам сказал, что эти итерация. У меня нет итераций, математика 7-го класса проявила ИИ :)
И если честно, я не очень понял твоего примера, где исследование, что минимальный периметр - это квадрат? Можно ведь просто написать формулу вычисления стороны квадрата из его площади, что у тебя и получилось.
Низачот!
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Как правильно писать сценарии поведения робота?

Сообщение dccharacter » 06 дек 2016, 18:53

эээээ, ты в курсе, как ведет себя производная в экстремумах? Лучше бы был в курсе, потому что это единственное, что я помню из школьного курса :-D
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Пред.След.

Вернуться в Компьютеры в роботостроении

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

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