R中的二次型相对于权重向量的最大化。

问题描述 投票:1回答:1

我有一个距离(相似性)矩阵 D比如说:

D <- matrix(c(0.00, 1.00, 1.00, 0.10, 0.05, 1.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.90, 0.95, 0.10, 1.00, 0.90, 0.00, 0.15, 0.05, 1.00, 0.95, 0.15, 0.00),5,5)

和一个权重向量 w = (w1,...,wn),这样,sum(w) == 1. 矢量中的值 w 是实数且在0和1之间,包罗万象。我需要找到一个矢量 w 以致于 w*D*t(w)为最大化。其中t(w)的转置。w 而符号 "*"表示矩阵乘法。

令人惊奇的是,我找不到一个能在R中实现这个功能的求解器。

谢谢你的帮助

r optimization algebra maximize quadratic-programming
1个回答
3
投票

也许你可以试试 fmincon 从包 pracma,如:。

library(pracma)
D <- matrix(c(0.00, 1.00, 1.00, 0.10, 0.05, 1.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 0.00, 0.90, 0.95, 0.10, 1.00, 0.90, 0.00, 0.15, 0.05, 1.00, 0.95, 0.15, 0.00),5,5)
n <- dim(D)[1]
res <- fmincon(rep(1,n),
               fn = function(w) -t(w)%*%D%*%w, 
               A = t(rep(1,n)), 
               b = 1,
               lb = rep(0,n),
               ub = rep(1,n))
w <- res$par

你将得到

> w
[1] 3.333331e-01 3.333338e-01 3.333331e-01 7.008297e-22 0.000000e+00
© www.soinside.com 2019 - 2024. All rights reserved.