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
Stránky: 1
Ahoj,
potřeboval bych poradit s jednou úlohou kvadratického programování v Matlabu. Nevím jak ji optimalizovat.
Úloha tedy je taková:
Moje řešení není ideální a dělá problémy, protože podmínka kdy součet těch
, 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
Stránky: 1