Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 20. 12. 2009 12:28

espanas
Zelenáč
Příspěvky: 1
Reputace:   
 

úloha kvadratického programování v Matlabu

Ahoj,
potřeboval bych poradit s jednou úlohou kvadratického programování v Matlabu. Nevím jak ji optimalizovat.
Úloha tedy je taková:
http://forum.matweb.cz/upload/1261307110-problem.jpg

Moje řešení není ideální a dělá problémy, protože podmínka kdy součet těch $x_{i}$, které jsou záporné má být v intervalu <-0.3, 0> není splněna. Je to vidět při vypsání výsledků v posledních asi 8 případech z celkových 100 případů.

Nevím jestli je tento typ úlohy vůbec v Matlabu řešitelný.

Tady je nástin mého řešení - kdyby někdo něčemu nerozuměl, stačí se dotázat a vysvětlím.

Zdrojový kód je na adrese: Odkaz


nebo ho zkusím umístit přímo zde, ale nevím co to tady udělá (takže se případně omlouvám):

__________________________________________________________________________________________________________________________

r = [2.109 1.684 1.679 2.136 1.864 2.817 1.416 0.888 2.823 2.374 ];       % zadaný vektor r a matice V
V = [137.23 30.51 9.67 27.32 30.46 45.54 48.40 54.09 26.72 24.82;
30.51 47.80 6.90 9.00 9.47 13.76 8.65 14.48 16.79 14.91;
9.67 6.90 33.19 7.84 11.60 4.70 7.68 7.21 14.97 8.28;
27.32 9.00 7.84 39.12 27.12 21.21 16.53 16.00 11.91 14.00;
30.46 9.47 11.60 27.12 49.76 30.15 18.68 19.58 15.40 6.04;
45.54 13.76 4.70 21.21 30.15 102.80 39.77 51.51 22.17 16.35;
48.40 8.65 7.68 16.53 18.68 39.77 83.81 33.78 18.39 15.86;
54.09 14.48 7.21 16.00 19.58 51.51 33.78 97.01 32.19 25.38;
26.72 16.79 14.97 11.91 15.40 22.17 18.39 32.19 93.07 22.63;
24.82 14.91 8.28 14.00 6.04 16.35 15.86 25.38 22.63 90.47];

M=[1:10,1:100];
N=[1:10,1:100];
t=linspace(0,1,100);
x=1:100;
y=1:100;
D=[1:10,1:100];
for i=1:100
    lambda=t(i);
    H=(1-lambda)*V;
    f=(-1)*(lambda)*r; A=[0 0 0 0 0 0 0 0 0 0];b=[0];
    Aeq=[1 1 1 1 1 1 1 1 1 1];beq=[1];LB=[-0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; ];UB=[];
    X = quadprog(H,f,A,b,Aeq,beq,LB,UB);
    N(1:10,i)=X;   % výpočet podílů xi za první podmínky, že jejich součet má být roven 1
    for j=1:10     % zde se částečne snažím o zakomponování podmínky součtu záporných xi, ale není správně formulovaná
        if X(j)<0 A(1,j)=-1; b=[0.3];
        end
        Aeq=[1 1 1 1 1 1 1 1 1 1];beq=[1];LB=[-0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; -0.3; ];UB=[];
        X = quadprog(H,f,A,b,Aeq,beq,LB,UB);
    end
    M(1:10,i)=X;   % výpočet nových podílů xi
    D(1:10,i)=transpose(A);   
       
    x(i)=sqrt(transpose(X)*V*X);
    y(i)=r*M(1:10,i);
end

plot(x,y);    % vykreslení řešení


for i=1:100             % vypsání řešení, kdy v posledních 8 případech je vidět nesplňení podmínky
    [N(1:10,i) D(1:10,i) M(1:10,i)]
end

__________________________________________________________________________________________________________________________

Zkusil byste mi s tím tedy někdo prosím pomoct? Případně mi sdělit že to v Matlabu nelze řešit?
Díky.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson