【发布时间】:2015-07-28 21:57:35
【问题描述】:
假设我有一个带有 N 变量的线性系统,但我只有 N-1 方程(约束)。如何使用 R 获得 N 个变量中每一个的可行集(范围)?
示例:
A <- matrix(data=c(0,1,0,1,0,1,0,1,
0,0,1,1,0,0,1,1,
0,0,0,0,1,1,1,1,
0,0,0,1,0,0,0,1,
0,0,0,0,0,1,0,1,
0,0,0,0,0,0,1,1,
1,1,1,1,1,1,1,1
),
ncol=8, byrow=T)
b <- matrix(data=c(0.2,0.4,0.6,0.06,0.18,0.12,1),
ncol=1)
> A
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
##[1,] 0 1 0 1 0 1 0 1
##[2,] 0 0 1 1 0 0 1 1
##[3,] 0 0 0 0 1 1 1 1
##[4,] 0 0 0 1 0 0 0 1
##[5,] 0 0 0 0 0 1 0 1
##[6,] 0 0 0 0 0 0 1 1
##[7,] 1 1 1 1 1 1 1 1
> b
## [,1]
##[1,] 0.20
##[2,] 0.40
##[3,] 0.60
##[4,] 0.06
##[5,] 0.18
##[6,] 0.12
##[7,] 1.00
附加约束:每个值都必须是正的,并且应该在 0 和 1 之间(可以省略最后一个,因为最后一个等式加起来只有正值 1)
【问题讨论】:
-
这类问题可以使用正则化回归等统计工具来解决。其中之一就是著名的 LASSO。
标签: r mathematical-optimization