Ich brauche folgende Funktion aus den ersten beiden Spalten dieser TabelleMATLAB - Schreiben Zielfunktion für fmincon()
nDOF, nprocs und T
genommen zu minimierenSo habe ich folgende Vektoren in MATLAB
nDOF =
3993
3993
3993
3993
3993
3993
3993
3993
7623
7623
7623
7623
7623
7623
7623
7623
nprocs =
1
2
3
4
6
8
12
24
1
2
3
4
6
8
12
24
vals =
0.6564
0.2569
0.2719
0.1743
0.1305
0.1230
0.1739
0.1147
1.1998
0.5088
0.6419
0.2899
0.2192
0.2033
0.2126
0.1821
Und ich wollte die Funktion $ F $ mit Funktion fmincon wie folgt minimieren:
fmincon(@(theta) objFunctionMatAssemble(theta(1), theta(2), theta(3), theta(4), ndofIN, nprocsIN, vals), [0 0 0 0]', [], [], [], [], [0 0 0 0], [+inf +inf +inf +inf])
Code of objFunctionMatAssemble:
function [t] = objFunctionMatAssemble(alpha, beta, gamma, delta, ndofIN, nprocsIN, vals)
t = 0;
for i=1:length(nprocsIN)
t = t + alpha*ndofIN^beta + gamma*((ndofIN(i)^delta)/nprocsIN(i) - vals(i))^2;
end
end
Das Problem ist, ich bin immer folgende Fehlermeldung:
Das Problem liegt anscheinend in meiner objektiven Funktion, aber ich kann es trotz mehrmaligem Versuch nicht richtig schreiben. Ich habe hier auf SO eine Lösung gesehen, aber selbst wenn meine "closure function" nur ein Argument braucht und das andere aufruft, ist das Format trotzdem nicht korrekt.
Könnten Sie mir bitte helfen?