1

我有以下问题:

权重向量 =[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!
4

0 回答 0