Ich bin die Lösung eines erzwungener linearer Berechnung der kleinsten Quadrate Problem wie folgt:lsqlin optimierte Berechnung (Matlab)
lb = zeros(7,1);
ub = ones(7,1);
for i = 1:size(b,2)
x(:,i) = lsqlin(C,b(:,i),[],[],[],[],lb,ub);
end
wo C
ist m x 7
und b
m x n
ist. n
ist ziemlich groß, was zu einer langsamen Rechenzeit führt. Gibt es eine Möglichkeit, diesen Vorgang zu beschleunigen und die langsame for
Schleife loszuwerden. Ich verwende lsqlin
anstelle von pinv
oder \
, weil ich meine Lösung auf die Grenzen von 0-1 beschränken muss (lb
und ub
).
Sie können immer versuchen, den Standardlöser zu wechseln. Probieren Sie '' ''interior-point''' aus. Ich bin mir nicht sicher, wofür diese Schleife funktioniert und wie Sie von uns erwarten, dass wir daran arbeiten. – sascha
Ich habe versucht, die verschiedenen Löser, aber das Problem ist das gleiche. Ich benutze die for-Schleife, weil ich versuche, 'x = lsqlin (C, b, [], [], [], [], lb, ub) zu geben;' Ich bekomme eine 'Innere Matrix Dimensionen müssen übereinstimmen .' Fehler. Auf der anderen Seite, wenn ich 'pinv (C) * b 'oder' C \ b' benutze, funktioniert es wie ein Zauber, aber für den 'lsqlin' muss ich es durch die 'for'-Schleife machen und da brauche ich die Einschränkungen Ich brauche den 'lsqlin'. Daher frage ich nur, ob es eine Möglichkeit gibt, die For-Schleife zu optimieren oder zu verwerfen. – ThT