次の問題があります。
重みベクトル =[0.05,0.05,0.15, 0.05,0.22, 0.08, 0.4]
weights vector header =[A11 ,A12 , A21, A22, A31,A32,B1 ] 次の制約があります
0≦A11+A12+A21+A22+A31+A32≦0.3
0≦B1≦0.8
A11+A12 =A21+A22 =A31+A32
A11+A12 + A21+ A22 + A31+A32 + B1=1
上記の制約に従って、元の重みベクトルとの差の二乗和を最小化したい
これを MATLAB 制約の quadprog で指定するにはどうすればよいですか?
フォーマットがうまくいかないことをお詫びします。私はスタックオーバーフローにかなり慣れていません
ここにいくつかの基本的なコードのサンプルがあります
weights.data = [0.05 0.05 0.15 0.05 0.22 0.08 0.4]
weights.header = {'A11', 'A12', 'A21', 'A22', 'A31', 'A32', 'B1'}
w0 = weights.data
Constraints = [
1 0 1
1 0 1
1 0 1
1 0 1
1 0 1
1 0 1
0 1 1
]
ub = [0.3 0.8 1]
lb = [0 0 1]
A0 = Constraints;
%%Inequality constraints
A_le = [-A0, A0]'; % lower bound first
b_le = [-lb, ub];
n = 7
[solution, fval, exitflag,output] = quadProg(eye(n), -w0', A_le,b_le,[],[],[],[],w0, options);
Thanks for your help!