роботы робототехника микроконтроллеры


 Страниц (3): [1] 2 3 »   

> Без описания
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



Доброго времени суток.
Нам сейчас необходимо решить примерно следующую задачу
1. Есть скриптовый язык, программа на котором представляет собой XML выражение
2. Язык относительно простой - основные используемые операции
присвоение
вычисление значения функции (функций определено очень много, есть функции от функций)
условия
циклы
определение собственных функций
Классов, преобразований типов, указателей и пр. - ничего этого нет.
3. Стоит задача написания "процессора" на Java для исполнения программы на данном языке
4. Предполагается следующий вариант работы - система получает запрос на выполнение программы, выполняет ее в реальном времени и возвращает результат
5. Результат также представляет собой XML выражение, состоящее из тех же тегов, что и программа
6. Система многопользовательская (запросов одновременно может быть несколько), серверные ресурсы ограничены, поэтому вопросы производительности имеют значение
7. Предполагается, что "процессор" сначала будет некоторым образом транслировать программу в определенный набор Java объектов (связь многие ко многим)
одна команда - один объект
одна команда - несколько объектов
несколько команд - один объект
несколько команд - несколько объеков,
а затем работать с данными объектами.

В связи с этим необходимо решить
1. В виде какой структуры представлять и обрабатывать Java представление?
2. Какой алгоритм использовать для обхода и расчета дерева?
3. Можно ли как-то написать такую реализации, которая бы допускала параллельные вычисления?
и реализовать сам "процессор" :-)

Есть у кого-нибудь какие-нибудь мысли/ссылки/материалы, которые помогут в этом продвинуться?
Интересует именно самая общая идея-концепция, куда двигаться. С деталями готовы справляться сами.

Сама задача - это продолжение вот этого http://myrobot.ru/forum/topic.ph...=10&topic=24 , ну и развитие проекта http://webequa.org
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Видимо w3 консорциум уже решил все проблемы интернета, раз решил заняться такой ахинеей.
MAPL-a им чтоли не хватает.
 
 Top
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



W3C сам решит, чем им заниматься.
По теме есть что сказать?

killgur пишет:
Видимо w3 консорциум уже решил все проблемы интернета, раз решил заняться такой ахинеей.
MAPL-a им чтоли не хватает.
 
 Top
-dead- Post Id


Президент


Сообщений всего: 966
Дата рег-ции: Февр. 2009  



Не понимаю, а в чем проблема? Напишите транслятор вашего XML в Java, прописав нужный вам упрощенный или полный XML-формат вывода результата, скормите это Java-компилятору, выполните код, верните результат, преобразовав его в XML если требуется.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



romeo пишет:
W3C сам решит, чем им заниматься.
По теме есть что сказать?

killgur пишет:
Видимо w3 консорциум уже решил все проблемы интернета, раз решил заняться такой ахинеей.
MAPL-a им чтоли не хватает.



По делу могу сказать, что если Вы в курсе, что существуют такие проекты как

http://www.sagemath.org/

и

http://sax.sourceforge.net/ (это про java парсинг xml)

то, что требуется еще кроме математического гения и искусства программиста?

И причем тут компилятор ... это скорей всего парсер называется если на входе xml и на выходе xml.
 
 Top
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



Про http://www.sagemath.org/ - раньше не слышал, информация очень интересная, спасибо.
В части заявленной миссии Mission: Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab существует http://www.scilab.org/
С первого взгляда все аналогичные проекты - прямые конкуренты друг друга и коммерческого ПО. Остается надеяться, что область прикладных вычислений настолько большая, что места хватит всем.

По поводу этого
Цитата:
Не понимаю, а в чем проблема? Напишите транслятор вашего XML в Java, прописав нужный вам упрощенный или полный XML-формат вывода результата, скормите это Java-компилятору, выполните код, верните результат, преобразовав его в XML если требуется.


и этого
Цитата:
то, что требуется еще кроме математического гения и искусства программиста?


Написать какую-нибудь реализацию из общих соображений можно.
вопрос именно в том, как ее написать наиболее оптимальным образом (с точки зрения дальнейшего развития, производительности, "простоты" и т.д.). Например, программа представлена в виде дерева.
Как обходить это дерево -
1. последовательно каждый узел от начала до конца
2. последовательно каждый уровень
3. если программа тяжелая, ресурсов не осталось - может быть сохранять промежуточное состояние (записав результаты в соответствующие узлы), освободить память и начать сначала
Или, как реализовать возможность параллельных вычислений...

Понятно, что одного однозначного ответа тут не будет, но, возможно, кто-то предложит направление / соображение, куда смотреть - например, в сторону нейронных сетей :-)
 
 Top
-dead- Post Id


Президент


Сообщений всего: 966
Дата рег-ции: Февр. 2009  



"Хочу сделать то, не знаю что. Подскажите литературу, как это сделать оптимальней?" Улыбка

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

Для сохранения состояния программы и т.п. - проще всего посмотреть в сторону родных Java-инструментов выполнения - скорее всего там уже есть какие-то решения по управлению загрузкой.

"Как обходить это дерево" а какие есть варианты? Как только вы добавили ветвления и циклы - вы автоматически определили, что обходить всё будете последовательно. И вообще для параллелизма обычно явно в язык внедряют соотв. конструкции, которые скажем гарантируют, что вот эти 2 блока кода можно выполнять параллельно - они друг другу вообще ничего не передают.
 
 Top
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



Конкретные вопросы:
1. в виде какой структуры хранить набор объектов, каждый из которых представляет собой определенную команду "скриптового" языка
2. как учесть 2.1 ограниченную мощность ресурсов 2.2 наличие нескольких параллельных серверов

Для простоты можно предположить, что второго вопроса пока нет.

-dead- пишет:
"Хочу сделать то, не знаю что. Подскажите литературу, как это сделать оптимальней?" Улыбка

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

Для сохранения состояния программы и т.п. - проще всего посмотреть в сторону родных Java-инструментов выполнения - скорее всего там уже есть какие-то решения по управлению загрузкой.

"Как обходить это дерево" а какие есть варианты? Как только вы добавили ветвления и циклы - вы автоматически определили, что обходить всё будете последовательно. И вообще для параллелизма обычно явно в язык внедряют соотв. конструкции, которые скажем гарантируют, что вот эти 2 блока кода можно выполнять параллельно - они друг другу вообще ничего не передают.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



romeo пишет:
Конкретные вопросы:
1. в виде какой структуры хранить набор объектов, каждый из которых представляет собой определенную команду "скриптового" языка
2. как учесть 2.1 ограниченную мощность ресурсов 2.2 наличие нескольких параллельных серверов

Для простоты можно предположить, что второго вопроса пока нет.



Стоит перейти от сложных слов к простым и наконец изучить Apache Tomcat Servlet/JSP container.

Вряд ли тут есть большие спецы по этому модулю.
 
 Top
-dead- Post Id


Президент


Сообщений всего: 966
Дата рег-ции: Февр. 2009  



В общем я так понял основной вопрос - как управлять пачкой параллельно выполняющихся Java-процессов, это надо у спецов по серверным приложениям на Java спрашивать надо, и пожалуй действительно надо посмотреть в сторону web-серверных приложений, там как раз задача пачку независимых запросов обрабатывать.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



На самом деле все заданные вопросы давно решены т.е. как хранить как выполнять и как организуется параллельная обработка запросов и.т.п. это уровень сервера... который уже готовый.

Его надо качать, ставить на никсы естественно и "курить маны".

А, что под сервер писать ... это вот уже личный выбор каждого.
 
 Top
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



Вы меня не так поняли... :-)
Да, действительно - вся система будет реализована как web приложение в виде jsp/beans на JSP контейнере (Tomcat, JBOSS и пр).
Да, вопросы обработки параллельных запросов и балансирования нагрузки как-то решаются на уровне этого самого JSP контейнера.
Но в данном случае речь идет не об оптимизации обработки всех запросов вместе, а об оптимизации обработки одного конкретного запроса.
Попробую объяснить еще раз.
Например, надо вычислить что-то типа a1(a2,a3) = a2(b1,b2) +a3(c1,c2(d1)))
Есть варианты
1. Можно сделать полное представление этого в виде java объектов
a1, a2, a3
b1, b2
c1, c2
d1
Потом считать последовательно с2, a3, a2, a1.
2. Можно распараллелить вычисление a2 и a3 между разными агентами и в каждом из них представлять только необходимые объекты.
3. Можно остановить на втором уровне - т.е. сначала посчитать a2 и с2, а затем полностью повторить все для выражения a1(a2,a3) = a2 +a3(c1,c2) (без сохранения промежуточного результат)

Вопрос - какой вариант выбрать.
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



romeo пишет:
Вы меня не так поняли... :-)
Да, действительно - вся система будет реализована как web приложение в виде jsp/beans на JSP контейнере (Tomcat, JBOSS и пр).
Да, вопросы обработки параллельных запросов и балансирования нагрузки как-то решаются на уровне этого самого JSP контейнера.
Но в данном случае речь идет не об оптимизации обработки всех запросов вместе, а об оптимизации обработки одного конкретного запроса.
Попробую объяснить еще раз.
Например, надо вычислить что-то типа a1(a2,a3) = a2(b1,b2) +a3(c1,c2(d1)))
Есть варианты
1. Можно сделать полное представление этого в виде java объектов
a1, a2, a3
b1, b2
c1, c2
d1
Потом считать последовательно с2, a3, a2, a1.
2. Можно распараллелить вычисление a2 и a3 между разными агентами и в каждом из них представлять только необходимые объекты.
3. Можно остановить на втором уровне - т.е. сначала посчитать a2 и с2, а затем полностью повторить все для выражения a1(a2,a3) = a2 +a3(c1,c2) (без сохранения промежуточного результат)

Вопрос - какой вариант выбрать.


между какими такими агентами?
 
 Top
-dead- Post Id


Президент


Сообщений всего: 966
Дата рег-ции: Февр. 2009  



romeo пишет:
Вопрос - какой вариант выбрать.

Ответ - тот который будет лучше в вашей конкретной ситуации.

Вы же не даете никакой информации о типичных задачах и никаких требований что оптимизируем и в каких границах.

Или вы предлагаете рассказать вам тут теорию вычислительной сложности алгоритмов, методы оценки объема используемой памяти и общие принципы выбора того или иного решения?
 
 Top
romeo Post Id


Лейтенант


Сообщений всего: 31
Дата рег-ции: Май 2009  



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

Цитата:
Ответ - тот который будет лучше в вашей конкретной ситуации.

Согласитесь - этот ответ можно было дать сразу после первого поста в теме.

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

Требуется минимизировать время обработки запроса.

(Отредактировано автором: 15 Мая, 2011 - 22:58:39)

 
 Top
Страниц (3): [1] 2 3 »
« Алгоритмы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru