Форум программистов, компьютерный форум, киберфорум
Методы оптимизации
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346

Алгоритм Монте Карло и глобальная оптимизация

11.11.2016, 19:50. Показов 4596. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дали интересную задачи с реализацией ПС на тему Обезьянего Поиска(С использованием алгоритма решения задачи глобальной оптимизации)

Но меня интересует вопрос как находятся решения по Алгоритму Монте-Карло?

На рисунке предоставлен кусок алгоритма,над которым я вожусь(Это из книги Карпенко-Алгоритмы вдохновлённые природой)

Мои попытки собрать в кучу вышли в следующие вопросы.

1)Сгенерировал случайным образом размерность вектора,а вот дальше тупик.Дальнейшие действия после генерации размерности вектора ввели в заблуждение.Какие величины они от меня требуют?Если я только лишь работаю с размерностью вектора.

2)Затем в 3-ем пункте мы снова генерируем точку,возможно это элемент моего вектора(То есть мои исходные данные среди которых я буду находить решение или экстремум)

3)И наконец проблема это формула фитнесс функции.Описание я нашёл,я понял что она функция приспособленности и в некоторых случаях минимизация(то есть из всей значений я должен найти минимум)

Если не сложно сможете объяснить понятным языком или указать литературу или сайт где будет пояснено понятным языком.
Миниатюры
Алгоритм Монте Карло и глобальная оптимизация  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2016, 19:50
Ответы с готовыми решениями:

Написать алгоритм методом Монте - Карло
Написать алгоритм для вычисления площади под кривой до оси абсцисс в пределах от x=-3 до x=+3 методом Монте-Карло. Очень нужна ваша...

Монте-карло
Преподаватель попросил разобрать метод монте-карло, и реализовать его в c++, помогите реализовать метод в с++

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

4
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
12.11.2016, 02:13
Цитата Сообщение от redseven Посмотреть сообщение
Описание я нашёл,я понял что она функция приспособленности и в некоторых случаях минимизация(то есть из всей значений я должен найти минимум)
Да, это целевая функция, которую нужно минимизировать. Функция подбирается так, чтобы её глобальный минимум был решением задачи.

Например, мы хотим решить уравнение x^2=4. Перепишем по-другому: x^2-4=0. Выражение слева может быть положительным, нулём и отрицательным. А его квадрат (x^2-4)^2 может быть только положительным или нулём. Причём ноль — минимум — соответствует точному решению уравнения. Поэтому целевая функция f(x) = (x^2-4)^2 подходит для задачи.

Кстати, x здесь это число. Или одномерный вектор. Будь перед нами система из N уравнений, целевая функция, вероятно, была бы N аргументов. Или одного аргумента размерности N.

Размерность вектора определяется целевой функцией и на протяжении всего алгоритма постоянна.

Цитата Сообщение от redseven Посмотреть сообщение
Затем в 3-ем пункте мы снова генерируем точку
Ключевая фраза — мы генерируем точку. Скажем, задача одномерна. Тогда просто берём любой генератор случайных чисел. Если задача многоразмерная, тут уже есть больше простора для фантазии.

Сам же алгоритм не регламентирует ни выбор целевой функции, ни выбор генератора.

Скажем, мы выбрали стандартное нормальное распределение.

Реализуем алгоритм с 4 итерациями:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
f = lambda x: (x^2 - 4)^2
x = NormalDistr(0, 1)
v = f(x)
x* = NormalDistr(0, 1)
if f(x*) < v:
  x = x*
  v = f(x*)
x* = NormalDistr(0, 1)
if f(x*) < v:
  x = x*
  v = f(x*)
x* = NormalDistr(0, 1)
if f(x*) < v:
  x = x*
  v = f(x*)
x* = NormalDistr(0, 1)
if f(x*) < v:
  x = x*
  v = f(x*)
print(x)
1
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
12.11.2016, 21:35  [ТС]
Спасибо большое
уже начало что-то прояснятся по поводу алгоритма

Но вот про фитнесс-функцию снова спрошу,2 вопроса возникло.

Дело в том что нигде толком не указывается формула этой фитнес-функции,даже вы указали пример формулы X^2-4=0.

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

По поводу алгоритма
Судя по алгоритму указанному выше и плюс я ещё внимательно перечитал.
Я понял что вся суть Монте Карло сводится к тому что я на протяжении всей длинны вектора(Допустим мой вектор-массив на 9 значений)

1)Создаю динамический массив
2)Заполняю его случайными числами
2)Нахожу минимум(то есть минимальное значение временного массива)
3)Запоминаю его(заношу в главный вектор-массив)
4)Очищаю временный массив(для повторения следующей генерации)
5)Делаю это столько раз,сколько нужно заполнить главный вектор(к примеру 9 раз)

В итоге мой вектор заполнен минимальными числами.

Правильно ли это рассуждение про алгоритм?
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
12.11.2016, 22:56
Цитата Сообщение от redseven Посмотреть сообщение
А существует ли общая формула?
Нет, не существует.
Фитнес-функция выбирается творчески, для каждой задачи по-своему.
Основная суть ф-ф в том, чтобы задачу сформулировать в терминах минимизации некоторой функции.
Вот к примеру любое уравнение вида A=B можно представить в виде задачи минимизации (A-B)^2. Я выше написал, почему.
Ещё пример: силовые методы укладки графа на плоскости позволяют сформулировать задачу визуализации графа (где какие вершины нарисовать) в терминах минимизации некоторой функции (потенциала).
Почти любая задача аппроксимации может быть сформулирована в терминах минимизации (пример — метод наименших квадратов).
Общей формулы, понятно, нет, как нет общей формулы для решения любого (ЛЮБОГО) уравнения.

Цитата Сообщение от redseven Посмотреть сообщение
А простое условие проверки на минимум тоже может подойти в качестве фитнес-функции?
Что это такое?

Цитата Сообщение от redseven Посмотреть сообщение
Я понял что вся суть Монте Карло сводится к тому что я на протяжении всей длинны вектора(Допустим мой вектор-массив на 9 значений)
Я предлагаю забыть о векторах и для начала разобраться с числами. Число — это вектор длины один. То есть |X|=1 в тексте.
X и X* — числа.

Как тогда выглядит алгоритм? Распишите сами. Вся суть в шагах 3 и 4. В начале генерируем случайное число, а затем сравнимаем значения ф-ф для неё и уже найденного приближения.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.11.2016, 23:35
Вот как я понимаю:
Для начала нужно на основании вашей задачи придумать уравнение с неизвестными и приравнять к нулю. Свести вашу задачку в математическое выражение, это творческая задача. Затем задать пределы поиска переменным minX maxX и желаемую точность корня(сколько знаков после запятой). Это тоже вы задаете. Вроде таких людей называют аналитик. Задать пределы количества итераций MaxIter.
Суть Монте-Карло это обычный случайный поиск.
Пример: возьмем отбалды любую формулу (представим вы ее вывели) X^2-4=0
Задаем пределы поиска minX maxX: от 0 до 10. Задаем точность например 2 знака. Суть расчета найти такой X чтобы при подстановке в целевую функцию она бы минимально отличалась от нуля ( 0 идеально).
1)Разбрасываем N точек на интервале от 0 до 10 например 20 точек.
Считаем массив f(x).Находим два минимальных числа с разными знаками и сохраняем X которым они относятся minX maxX. Разные знаки значит на этом интервале есть корень. Проверяем сколько нулей после запятой если подставить ближайшее к нулю из двух minX maxX точность решения устраивает?
Если да то выход, иначе cнова пункт 1 но уже на найденном мелком интервале. Снова разбрасываем N точек но уже от minX до maxX. И так повторяем пока итераций будет меньше MaxIter или точность не устраивает.
Зачем разбрасывать точки когда корень один? Потому, что в реальности может быть много локальных минимумов из которых другие методы не смогут выйти или будут выходить долго.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2016, 23:35
Помогаю со студенческими работами здесь

Метод Монте-Карло
Задание состоит в том, чтобы составить программу для определения методом Монте-Карло площади фигуры. У меня есть код программы, но...

метод Монте-Карло
Трехмерное тело образовано объединением нескольких сфер произвольного размера и взаимного расположения. Найти объем этого тела, используя...

метод Монте-Карло
всем привет, у меня вопрос по методу Монте - Карло, у меня есть код, #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include...

Метод Монте-Карло
как мне перевести этот код на с++..... помогите пожалуста(( program MonteKarlo; uses crt; Label l1,l2; var ...

Метод Монте-Карло
Друзья кто владеет методом Монте-Карло? Помогите решить по этому методу, буду вам благодарен: На велосипедном заводе выпускают...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru