![]() |
|
|
![]()
|
|
| Severyanin |
|
|||
![]() Исследователь ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 31.7.2007 Где: Россия, Омск Репутация: нет Всего: 9 |
Доброе время суток. У меня есть следующая задача:
есть участок пути, на нем расположено некое количество опор. Есть бригада ЭЧ, которая проверяет эти опоры. Для каждой опоры известны ее координаты в относительной системе, то есть можно просто посчитать расстояния между двумя любыми, и степень ее разрушения, которая определяется категорией дефектности опоры - от 1 до 4. Бригада ездит по уже готовому алгоритму коммивояжера. Проблема в том, что веса для функции определялись "на глаз", так как срок реализации был - 1 день. Сейчас хотелось бы доработать это все нормально. Задача наверняка не нова и решалась много раз в схожих формулировках. Просьба пнуть меня в сторону нужной литературы и примеров). Так же возможно, эта задача имеет устоявшееся название, как задача о рюкзаке или том же коммивояжере в комбинаторике, по которому это все проще будет найти. Буду благодарен за все подсказки -------------------- "Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл "Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Severyanin, то есть вам просто нужно оптимизировать веса функций в известном алгоритме?
Так может просто тупо подставлять разные сочетания весов и сравнивать результаты? ИМХО здесь есть много подходов. Можно попробовать давать весам небольшие приращения и, таким образом, сползти к локальному минимуму функции. Искать глобальный минимум сложнее, но раз уже есть оцененные на глаз веса, скорее всего они близки к глобальному минимуму. Соответственно, к нему все и приползет. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 4 Всего: 27 |
А можно использовать генный алгоритм, например для поиска глобального минимума (максимума), что более эффективно, чем маленькие приращения
|
|||
|
||||
| Severyanin |
|
|||
![]() Исследователь ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 31.7.2007 Где: Россия, Омск Репутация: нет Всего: 9 |
Bitter,
_Y_, не могли бы вы поточнее описать оценку качества оптимизации в обоих случаях. -------------------- "Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл "Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
1. Оценка алгоритма комивояжера, как понимаю, делается просто по длине пути: чем короче - тем лучше (с учетом весов естественно). Оценить же локальный или глобальный максимум найден, видимо, не так просто. Здесь, ИМХО, фундаментальное ограничение - поиск черной кошки в темной комнате, без уверенности, что кошка там.
2. Кстати, поскольку у Вас задача практическая и опоры имеют разные категории, может просто свести оценку к деньгам? Задать цену условного километра в виде расхода (условного в смысле 1 км по булыжнику равен 4 условным асфальтовым - тоже считается деньгами). А цену каждого проверенного столба - в виде дохода, в зависимости от его категории. И оптимизировать полученный результат? 3. Метод сползания к минимуму функции - не единственный. Просто он мне показался наиболее подходящим поскольку у Вас уже есть оценочные величины и, видимо, неполохие. Если же их нет - я бы начал с метода Монте Карло, получил бы несколько вариантов решения, сильно отличающихся друг от друга, а потом от каждого полз бы к локальному минимуму. Так нашел бы, видимо, несколько локальных минимумов. Чем больше бы проверил вариантов, полученных Монте Карло, тем больше была бы вероятность того, что минимум глобальный. 4. По поводу генетических алгоритмов я тоже подумал. Но с ними есть заморочка. Они хорошо работают только если имеешь большой опыт их применения именно к данному типу задач. Слишком много вариаций у этих алгоритмов и слишком много у них параметров не имеющих отношения к самой задаче (число хромосом, вероятность мутации, вероятность обмена частями хромосом, число точек разрыва при обмена частями, возможность/невозможность изменения длины хромосом, всего и не вспомнишь....). Если все-таки будет желание в них разбираться, мне очень понравилась книжка Melanie Mitchel, An Introduction to Genetic Algorithms, 1996, MIT. Книжка отнюдь не свежая, но в ней очень хорошо и кратко расписаны принципы. Опять же, если будет желание, могу поискать в бакапах что-то я писал с генетическими алгоритмами на Java. Но врядли пригодится т.к. было давно и я уже не смогу помочь с советами - сам уже все забыл что писал. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |