2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

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



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 
Сообщение15.04.2009, 10:45 


17/10/08

1313
Нужная Вам версия Quick NP еще находится в разработке (я делал ремарку по этому поводу).

Если хватит терпения, то можно воспользоваться ipopt:
http://www.coin-or.org/projects/Ipopt.xml

 Профиль  
                  
 
 
Сообщение16.04.2009, 01:11 


08/01/08
58
Попробую на матлабе запрогать. Там есть метод внутренней точки.

Как я понял метод решения исходной задачи выглядит таким образом:
Сделав замену переменной $\tau = t/T,\; T \in \mathbb R_+, d\tau = (1/T)dt, t \in [0,T], \tau \in [0,1]$, задача примет вид:
\begin{equation}
\label{MathModel3}
    \left\{
    \begin{array}{rcl}
        \frac{dx(\tau)}{d\tau}&=&T\frac{V_L(\tau) + V_R(\tau)}2\cos(\varphi(\tau)),\\
        \frac{dy(\tau)}{d\tau}&=&T\frac{V_L(\tau) + V_R(\tau)}2\sin(\varphi(\tau)),\\
        \frac{d\varphi(\tau)}{d\tau}&=&T\frac{V_R(\tau) - V_L(\tau)}{L},\\
        x(0) &=& x_0,\\
        y(0) &=& y_0,\\
        \varphi(0) &=& \varphi_0,\\
        x(1) &=& x_1,\\
        y(1) &=& y_1,\\
        (x(\tau)&-&x_c)^2 +(y(\tau)-y_c)^2 \ge r^2, r > 0,\\
        \tau &\in& [0,1],\\
        T &\to& \min_{|V_L(\cdot)| \le 1, |V_R(\cdot)| \le 1}.\\
    \end{array}
   \right.
\end{equation}Задача ~\eqref{MathModel3} сводится к задаче нелинейного программирования:
\begin{eqnarray*}
F(z) &\to& min_{z \in \mathbb X}, \quad \mathbb X = \{ z = (x^i, u^j, T) \in\mathbb R^{3(k+1)+2k+1} |\; g(z) = 0,\; h(z) \le 0 \},\\
x^i &\in& \mathbb R^3,\; u^j \in \mathbb R^2,\; i=0..k,\; j=0..k-1,\; T \in \mathbb R,\\
F(z) &=& T,\\
g(z) &=& (x^{i+1} - x^i - \frac{1}{k}f(i/k, x^i, u^i)), i=0..k-1,\\
x^0 &=& (x_0, y_0, \varphi_0),\; x^{k+1}_1 = x_1,\; x^{k+1}_2 = y_1.\\
h(z) &=& (-T,\; x^i_1 - x_{max},\; x^i_2 - y_{max},\; x_{min} - x^i_1,\; y_{min} - x^i_2,
r^2 - (x^i_1 - x_c)^2 - (x^i_2 - y_c)^2), i = 0..k.
\end{eqnarray*}
$f(t,x,u) -$ правая часть системы дифференциальных уравнений~\eqref{MathModel3}.

Полученная задача нелинейного программирования решается методом внутренней точки.
$$\frac{dz(t)}{dt} = -W_z(t,z),\; z(0) = z_0 \in X,$$
где $W(t,z) = F(z) + \tau(t)\sum_{i=1}^{k}\varphi(g^i(z)) + \tau(t)^{-1}\sum_{i=1}^{5(k+1)+1}\xi(h^i(z)),\;$
$\tau(t), \varphi(s), \xi(s) - $ скалярные, непрерывно дифференцируемые функции, определенные для всех $t\ge0,\;s > 0.$

$\tau(t)>0,\; d\tau(t)/dt > 0,\; \xi(s) > 0,\; \lim_{s\to-0}\xi(s) = \infty,\; \varphi(0) = \varphi'(0) = 0,\;
\varphi(s) > 0,\; \varphi''(s) > 0\; \forall s \neq 0.$

Ищем решение $z(t)$ при $t \to \infty,$ точнее $z(t')$, такое что $||W_z(t',z)|| \le \varepsilon(t).$
Правильно ли я понял суть метода?
Не совсем ясна идея о переменном шаге во времени(из каких соображений его выбирать?), поэтому в вышеуказанном алгоритме использовал постоянный шаг $1/n.$

Добавлено спустя 47 минут 28 секунд:

Каким образом лучше выбирать начальную точку(допустимое управление, соответствующую траекторию и время)? Есть ли какие-то универсальные методы или нужно использовать специфику системы(в данном случае физические соображения)?

 Профиль  
                  
 
 
Сообщение16.04.2009, 16:33 


17/10/08

1313
Задача (1), похоже, записана правильно. Ограничения мощности двигателей можно записать наравне с другими ограничениями.

Сам подход получения задачи нелинейного программирования правильный, но, видимо в описании есть ошибки. Например, я не вижу ограничения мощности двигателей, а $g(z)$ вообще выглядит подозрительно. Еще, обычно можно указать допустимый диапазон переменных, неужели матлаб не дает такой возможности?

Признаюсь, я уже забыл описание метода внутренней точки, т.к. Quick NP делает все сам по описанию. Поэтому здесь помощи от меня ждать не стоит. Никто не мешает использовать любой другой метод, просто решение в ipopt уже проверено и оно работает: ipopt решает задачи с 100 точками (это ~500 переменных) примерно секунд за 40 (процессор ~2ГГ)

********************
Шаг времени я имел в виду одинаковый, но не фиксированный, как это обычно бывает при решении дифференциальных уравнений. Вы в своей модели вынесли T – суть получилось одно и то же.

Общее время в задаче можно ограничить длительностью пробега робота по периметру «стола», взяв с коэффициентом запаса, скажем 2. За это время робот точно должен добраться до цели.

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

 Профиль  
                  
 
 
Сообщение19.04.2009, 13:30 


08/01/08
58
Да в $g(z)$ определённо есть ошибки(уже исправил). Управления, конечно, нужно ограничивать. В матлабе действительно есть полезная возможность указывать диапазоны изменения переменных. Не совсем понял зачем ограничивать T сверху(снизу есть смысл, чтобы не было отрицательных значений).

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

 Профиль  
                  
 
 
Сообщение19.04.2009, 14:52 


17/10/08

1313
При большом T робот за один шаг может пройти "100 размеров стола". Поэтому, на всякий случай, лучше T ограничить.

Экстремум то Вы найдете, только он будет локальным минимумом. Глобальность никто не обещает.

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

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group