Магический Квадрат, используя Оптимизацию Роя Частиц
Мне дают матрицу беспокойства, где n колеблется от 3 до 5. Матрице тогда назначают случайные значения от 1-n^2. Учитывая матрицу, я должен оптимизировать доску так, чтобы я пришел к решению магического квадрата.
Случайный пример доски: n = 3
3 5 6
1 7 8
2 4 9
У меня есть немного знаний о PSO, но я по крайней мере знаю это:
1. Randomly initialize a set of particles at random positions in the search space;
2. Evaluate all positions and update the global best position and the personal best positions;
3. Update each velocity based on the relative position of the global best position, the current velocity of the particle, the personal best position of the particle and some random vector;
4. goto 2.
Мне также сказали, что эта проблема не подходит для таких алгоритмов, как PSO, но у меня нет выбора, кроме как использовать ее для этой проблемы, поскольку это необходимый алгоритм.
Я думаю, что частицы - это числа, назначенные в массиве, но как мне оценить его положение и обновить положение частиц?
Спасибо!
1 ответ
У вас должна быть проблема оптимизации, чтобы применить PSO. Если вы можете определить фитнес-функцию, вы можете сделать следующее:
Например, ваша целевая сумма 20
и ваша фитнес-функция f(currentSum) = |20 - currentSum|
для каждой строки, столбца и диагонали.
Вы меняете значение квадрата. После этого при изменении этого значения уменьшается значение f()
это означает, что ваша скорость должна быть направлена на это решение. Если это увеличило значение, вы должны пойти и посмотреть в другом месте.
Вам нужны два типа операций: разведка и разведка.
Эксплуатация меню, поиск окрестностей для решения. Когда значение suqare изменяется, ищите решения, которые бы приблизили строку и столбец этого значения к вашему. targetSum
,
Разведка означает изменение всей картины. Вы делаете эксплуатацию (обычно после рандомизации всей доски) после применения этого шага.
Для начала вам нужно определить
- Модель проблемы
- Какое решение? Как вы определяете решение?
- Объективная функция
- Фитнес-функция
- Скорость
- Poisiton
- окрестности
- Исследование
Но мой совет - не использовать PSO для решения проблемы, которая не является оптимизацией. Вероятно, PSO будет работать с той же производительностью, что и случайный поиск.