我想使用IPOP函數從kernlab解決以下二次規劃方程式二次規劃:求解,使用R
min 0.5*x'*H*x + f'*x
subject to: A*x <= b
Aeq*x = beq
LB <= x <= UB
其中在我們的例H 3×3矩陣,f是3X1,A是2×3,b爲2×1 ,LB和UB都是3x1。
編輯1 我的R代碼裏面是:
library(kernlab)
H <- rbind(c(1,0,0),c(0,1,0),c(0,0,1))
f = rbind(0,0,0)
A = rbind(c(1,1,1), c(-1,-1,-1))
b = rbind(4.26, -1.73)
LB = rbind(0,0,0)
UB = rbind(100,100,100)
> ipop(f,H,A,b,LB,UB,0)
Error in crossprod(r, q) : non-conformable arguments
我從MATLAB知道是這樣的:
H = eye(3);
f = [0,0,0];
nsamples=3;
eps = (sqrt(nsamples)-1)/sqrt(nsamples);
A=ones(1,nsamples);
A(2,:)=-ones(1,nsamples);
b=[nsamples*(eps+1); nsamples*(eps-1)];
Aeq = [];
beq = [];
LB = zeros(nsamples,1);
UB = ones(nsamples,1).*1000;
[beta,FVAL,EXITFLAG] = quadprog(H,f,A,b,Aeq,beq,LB,UB);
,答案是3×1的矢量等於[0.57 ,0.57,0.57];
但是,當我嘗試在R上使用kernlab庫的ipop函數 ipop(f,H,A,b,LB,UB,0))並且我面臨crossprod(r,q)中的錯誤:非順應性參數
我明白任何評論
請張貼您使用的R代碼,包括您在哪裏定義f,H,A,b,LB和UB。 – Max
這不應該被移到R論壇嗎? – 2012-09-10 02:11:17
@Max,我加了幾個R代碼 – user702846