2015-03-22 3 views
0

Я пытаюсь оптимизировать параметры для известной функции, чтобы соответствовать экспериментальной диаграмме данных. Функция довольно участвуетОптимизация параметров с использованием генетического алгоритма?

enter image description here

где х увлекает ноу набор чисел и р, г и с являются независимыми параметрами, которые будут оптимизированы. Любые идеи или ресурсы, которые могут быть полезны?

+0

В настоящее время я пытаюсь использовать второй дифференциал экспериментальных данных, чтобы узнать, могу ли я найти пики. Параметр c, как вы можете видеть, центрирует соответствующий граф, поэтому, если я могу как-то найти пики из экспериментальных данных, параметр c может быть аналитически решен для ... Кроме того, я не упомянул выше, но экспериментальные данные могут быть бесконечными сочетание волны, описанной выше, поэтому она может включать бесконечный набор параметров p, g и c, поэтому я пытаюсь решить для параметров c перед применением генетического алгоритма – ShawK

+0

Я не уверен, что предложить , Вы просили просить [MathOverflow] (http://mathoverflow.net/) («* Для профессиональных математиков *)) или [math.stackexchange] (http://math.stackexchange.com/) (« * Для люди, изучающие математику на любом уровне и профессионалы в смежных областях *)? Вы вполне можете найти, что получите больше внимания и, возможно, ответы на них. –

+0

Почему вы так уверены, что вам нужен генетический алгоритм? Вы устали от старого [Levenberg-Marquardt] (http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm), как это реализовано в Levenberg-Marquardt.vi. Если это не соответствует вашим потребностям, вы можете попробовать [Waptia library] (https://lavag.org/topic/10984-cr-waptia-genetic-optimization-algorithm/) для LabVIEW с помощью одного из реализованных генетических алгоритмов. – mzu

ответ

0

Устал ли вы старый добрый Levenberg-Marquardt как реализован в Levenberg-Marquardt.vi. Если это не соответствует вашим потребностям, вы можете попробовать Waptia library для LabVIEW с использованием одного из реализованных генетических алгоритмов.

+0

Я слышал, что LMA часто застревает в локальных минимумах и пропускает глобальный минимум .. Задача установлена ​​относительно но я не мог найти хорошую документацию о том, как ее использовать (я новичок) – ShawK

2

Я бы не рекомендовал генетические алгоритмы. Вместо этого перейдите на Оптимизацию вперед.

Scipy имеет некоторые ресурсы.

Вы не указали какие-либо данные или нет, так что я просто отправлю что-то, что должно бежать. Ниже вы можете начать. Я не знаю, работает ли это, не видя данных. Кроме того, вероятно, есть способ динамически подавать objectivefunc ваши данные x и y. Это, вероятно, в документах до scipy.optimize.minimize.

Что я сделал. Создайте функцию для минимизации. Здесь я назвал его objectivefunc. Для этого я взял вашу функцию y = x^2 * p^2 * g/... и преобразовал ее в форму x^2 * p^2 * g/(...) - y = 0. Затем соберите левую сторону и попытайтесь свести ее к минимуму. Поскольку у вас будет несколько выборок данных (x/y), я бы минимизировал сумму квадратов. Поместите все это в функцию и передайте ее до минимума из scipy.

import numpy as np 
from scipy.optimize import minimize 

def objectivefunc(pgq): 
    """Your function transformed so that it can be minimised. 
    I've renamed the input pgq, so that pgq[0] is p, pgq[1] is g, etc. 
    """ 
    p = pgq[0] 
    g = pgq[1] 
    q = pgq[2] 
    x = [10, 9.4, 17] # Some input data. 
    y = [12, 42, 0.8] 
    sum_ = 0 
    for i in range(len(x)): 
     sum_ += (x[i]**2 * p**2 * g - y[i] * ((c**2 - x**2)**2 + x**2 * g**2))**2 
    return sum_ 

pgq = np.array([1.3, 0.7, 0.5]) # Supply sensible initivial values 
res = minimize(objectivefunc, pgq, method='nelder-mead', 
      options={'xtol': 1e-8, 'disp': True}) 
+1

Большое спасибо, моя проблема с scipy - это то, что я не могу установить его. Я использую WIndows 8.1 64 бит и имею python 2.78. Я попробовал pip и easy_install ..Я могу импортировать numpy, pyevolve, но по какой-то причине scipy всегда дает ошибку «.... laplack/blas not found ...» Я пробовал использовать множество решений, которые я нашел здесь, но ни один из них не работал для меня. .. Я новичок. Это часть причины, по которой я использую LabView вместо Python. – ShawK

+0

Не помещайте свой вопрос Python, если вы не хотите использовать Python. Хотя ясно, что это проблема, которая может быть исправлена. Вам, вероятно, потребуется установить лапку/blas. – Unapiedra

+0

Я хочу и хочу использовать Python, просто не могу использовать scipy-библиотеку в это время. Мой план заключался в использовании LabView в качестве интерфейса (на передней панели) и записи алгоритма GA/подгонки в Python для его скорость .. Есть ли другая библиотека, подобная scipy? Заранее спасибо – ShawK

Смежные вопросы