2014-02-11 4 views
0

У меня есть портфолио весов Я использую quadprog в matlab. У меня есть все входы для оптимизатора quadprog. Я просто возникли некоторые проблемы формулирующая ограниченияmatlab quadprog constraints issue

Я хотел бы мои ограничения, чтобы иметь нижнюю границу либо 0, либо 1%, есть способ сделать это, в то время как maintainng моей целевой функции

Спасибо!

ответ

0

Я не уверен, насколько хорошо я понимаю ваш вопрос.

Если веса уже определены в процентном выражении, то есть непосредственно определение quadprog:

x = quadprog(H, f, [], [], [], [], lb, []) 

Так H, e и f должны быть предоставлены описания MatLab из:

quadprog(H,f) - возвращает вектор x, который минимизирует 1/2 * x' * H * x + f' * x. H должна быть положительно определенной для проблемы, чтобы иметь конечный минимум.»

И lb является вектором ограничений. Например, если x вектор 3 x 1, то lb = [0.01; 0.01; 0.01] в случае требуемого процента является 0.01 (1%)

с другой стороны, позволяет предполагать sum_{i=1}^{n} w_i не равна 1. Поэтому w_i не определен в процентном выражении.

Ther поэтому ограничение, которое вам нужно, - p_i (percentage)= w_i/(sum w_i) >= 0.01 (в случае нижней границы должно быть 1%).

Обратите внимание, что ограничение в данном случае является

w_i >= 0.01 * (sum w_i)

Или

-0.01 * (sum_{j=1}^{i-1} w_j) + 0.99 * w_i - 0.01 * (sum_{j=i+1}^{n} w_j) >= 0

Или

0.01 * (sum_{j=1}^{i-1} w_j) - 0.99 w_i + 0.01 * (sum_{j=i+1}^{n} w_j) <= 0

Поэтому й is является ограничением типа Ax <= b.

Так

A_ij = 0.01 когда i отличается от j

A_ij = -0.99 когда i = j и b = zeros(n, 1)

В этом случае вы используете

x = quadprog(H, f, A, b) 

Я надеюсь, что я помог вам!

Daniel

+0

Привет Даниил, Я пытаюсь установить минимальный быть либо 1% или 0 ничего в between..Thats, что я борюсь с – qfd

+0

@hdg дать мне несколько часов, чтобы обновить свой ответ! ОК? – DanielTheRocketMan

+0

@hdg Я не понимаю, что вы хотите, или вы не понимаете мое решение выше. Конкретно, если все веса больше 2%, например. В этом случае ограниченная и безусловная проблема имеют одинаковые решения. Теперь представьте себе, что неопределенная проблема имеет вес, равный 0,5%, а ваше ограничение составляет 1%. Таким образом, неограниченное решение неприемлемо. Таким образом, ограниченная проблема должна учитывать ограничения, представленные выше. Я не предполагаю, что нижняя граница - это число от 0 до 1%. Если у вас есть сомнения по поводу выше, просто спросите! – DanielTheRocketMan