Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как минимизировать расхождения между измеренным, Подскажите! Для решения задачи нужно мин 
:(
    Опции темы
Максим
Дата 7.5.2004, 01:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Есть распределение некого поля, измеренного на поверхности Земли. Нужно определить его источник. Для этого рассчитывают эффект от теоретического тела, анализируют расхождения, вносят изменения в параметры тела и снова рассчитывают. Все бы хорошо, но у этого тела много параметров: глубина залегания (Н), мощность (М), проекция центра на профиль (Ц) и угол наклона (У). Для решения задачи нужно минимизировать расхождения между измеренным и расчетным полем. Зависимость Ф(Н,М,Ц,У) – нелинейная.
Я предполагаю, что существуют стандартные способы решения таких задач, но не знаю с чего начать. Подскажите алгоритм или область, в которой нужно искать решение.

Максим.

  Вверх
podval
Дата 7.5.2004, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



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

2. Записываем

SUM(Фрасчетное - Физмеренное)^2 => min

или

SUM|Фрасчетное - Физмеренное| => min

Оптимизируем с ограничениями на глубину залегания, мощность, проекцию центра на профиль и угол наклона. Придется использовать методы нелинейного программирования.
PM WWW ICQ   Вверх
Guest
Дата 11.5.2004, 02:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

  Вверх
podval
Дата 11.5.2004, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Это зависит от вида Ф(Н,М,Ц,У). А по большому счету в общем виде задачу решать накладно. Попробуй свести к задаче безусловной оптимизации.
Может быть, получится применить алгоритм Нелдера-Мида. А может выйдет что-то с методом последовательного квадратичного программирования.
PM WWW ICQ   Вверх
Abrek
Дата 12.5.2004, 13:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А что Matlab использовать нельзя? Там эту задачку махом можно заделать (fminsearch).
Если нет, то самым простым может оказаться метод Ньютона с проверкой на седловые точки. Алгоритм метода Ньютона найдешь без труда.
  Вверх
podval
Дата 12.5.2004, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



fminsearch в Матлабе - штука, конечно, хорошая и задачу нелинейного программирования в общем виде может решать, но не без изъянов.
Во-первых, придется повозиться, если целевая функция испещрена локальными экстремумами. В этом случае мне, например, помогало как можно хуже взять начальное приближение.
Во-вторых, настоящие проблемы начинаются, если внедрять это дело в собственную прогу. Компилировать матлабовский код, содержащий вызов fminsearch, в DLL бесполезно. Единственный способ заставить работать - вызвать Матлаб из своей проги как ActiveX сервер. Но это решение =>(__|__)=> и выглядит по-колхозному, ибо Матлаб - вещь тяжелая и долго грузится.
А если все равно, на чем делать расчеты, Матлаб - самое то. Даже с простеньким пользовательским интерфейсом можно сделать.
PM WWW ICQ   Вверх
Максим
Дата 13.5.2004, 00:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо всем!
Обдумаю поступившие предложения.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.