LINUX.ORG.RU

[Затупил][Ниасилил] Помогите оптимизовать функцию

 


0

1
def toOpt(x,rsk,doh):
    # ограничитель на 100% распределения средств
    if sum(x) != 1:
        return 0

    # ограничитель по риску
    ar = []
    for i in range(len(x)):
        ar.append(rsk[i]*(x[i]**2))
    mris = math.sqrt(sum(ar))
    if mris > 0.15:
        return 0

    # считаем максимальную доходность
    ar = []
    for i in range(len(x)):
        ar.append(doh[i]*x[i])
    tmax = sum(ar)

    return tmax

rsk = [0.022066999464842394, 0.026462734577576533, 0.03329919092113635, 0.027660815860746285, 0.026329576864529882]

doh = [-0.006779403781041136, 0.004880350115622904, -0.0011432743291569872, 0.007594218276622398, -0.01223390116926412]

списки rsk и doh заведомо рассчитаны, требуется найти оптимальный набор значений списка x. Покажите, как это сделать?

Формула в общем виде: http://img231.imageshack.us/img231/6089/016v.png

man SciPy уже предлагали, ниасилил, прошу просто взять и показать. =)

★★★★★

Последнее исправление: Siado (всего исправлений: 3)
Ответ на: комментарий от AIv

Обана, оно и в OpenOffice есть. Вот функцию бы такую, просто задать параметры и получить результат.

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

Мдя... в общем задача имеет аналитическое решение, причем на первый взгляд довольно простое. Целевая ф-я задает семейство плоскостей doh*x=const, из которых нужна плоскость с макс значением const очевидно касательная (одна общая точка) к эллипсоиду. Посл условие задает плоскость, те точка ищется на некоторым элиппсоиде-срезе исходного с размерностью меньшей на единицу. Очевидно искомая точка находится в направлении doh но спроектированном на плоскость. Посл у-е задает плоскость x*n=1, n=(1,1,1,1...), тогда строим параметризованую прямую вдоль doh на плоскости как x = n/sqrt(N)+alpha*(doh-doh*n*n/N) где N размерность задачи, alpha параметр. Подставляем x в у-е эллипсоида, получаем у-е на alpha которое имеет два корня, один мин, другой макс, подставляем alpha в у-е прямой находим х.

AIv ★★★★★
()
Ответ на: комментарий от Siado

Жабры нету, есть мыло aivanov@keldysh.ru

Предпочитаю гранатовый сок;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

> ТС-питонщик озвучил задачу и пытается ее решить в меру своих сил, а ты тока троллишь, так что не видно чем именно ты умнее. Троллее - с этим я согласен.

А мне-то зачем твое мнение?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.