【发布时间】:2015-12-30 16:49:31
【问题描述】:
我正在尝试通过一个 1x42 的加权向量(权重)来最大化 N_ent 的数量。
N_ent 使用以下函数计算:
N_ent <- exp(-sum((((solve(pca$rotation[])) %*% t(weight))^2)*
(pca$sdev^2)/(sum((((solve(pca$rotation[])) %*% t(weight))^2)*
(pca$sdev^2)))*log((((solve(pca$rotation[])) %*% t(weight))^2)*
(pca$sdev^2)/(sum((((solve(pca$rotation[])) %*% t(weight))^2)*(pca$sdev^2))))))
虽然看起来相当复杂,但当使用相等的权重 0.0238 (1/42 = 0.0238) 时,该等式运行良好并为我提供N_ent = 1.0967。
此外,权重不得低于 -0.1 或高于 1。
我是 R 新手,在使用 optim()(忽略我的约束)和 constrOptim() 函数时遇到错误
match.arg(method) 中的错误:“arg”的长度必须为 1
当optim()被使用时
ui %*% theta 中的错误:参数不一致
何时使用constrOptim()。
任何有关如何为此类优化问题设置代码的帮助将不胜感激。
【问题讨论】:
-
我使用
nloptr包和函数来优化约束。请附上一个示例数据集pca,以便我写下答案。 -
非常感谢,我不知道如何上传数据,但它是一个 42x42 矩阵,如果有帮助,所有元素都在 -1 和 1 之间?或者,也许我可以以某种方式将数据集发送给您?
-
请阅读this线程。
-
dput 命令产生的输出太大而无法从控制台复制,因此我将其写入此 csv 文件,希望它能正常工作。 dropbox.com/s/ga99tgt1q7a5rz4/pca.csv?dl=0
-
您能否详细说明您正在解决的问题 - 是科学问题还是现实问题。这种熵最大化的背后是什么?
标签: r optimization