平等约束的大优化

时间:2016-02-11 10:24:50

标签: r optimization

我想解决一个相当大的优化问题,时间很重要,但我坚持在大量的“R”包中理解,所以我想直接向社区询问这个问题。

我想最小化一个功能:

F=(x-y)^2

其中y是给定的,预定义的8000个值的向量。 所以,我正在寻找8000 x-es。 我有一个A矩阵(基本上是一个虚拟变量矩阵),nrow = 8,ncol = 8000。 我还有一个向量b,有8个给定值。 所以,我想要解决以下问题:

min(x-y)^2

s.t:
A*x=b

从理论上讲,我理解了一切,但不知何故,我无法将F合并到任何允许均等约束的包中。 另外(因为我不知道,处理时间是多少),我想问你,如果你做了什么,你会做什么:

F = abs(x-y)

因为如果二次函数的最小化需要很长时间,那么第二个选项也会让我满意。 数据是保密的,但如果解决方案有必要,我会私下(有点不同)发送数据。

编辑nr.1:

好的,这次我会更具体 我有2年的数据(即8000次测量,每年包含4000次测量) 每年都有q1,q2,q3,q4,它们在过去以某种方式发生(但将来会被指定为最佳,以达到某些目标) 所以,这是我的b矢量,这是优化必须满足的标准。

编号

b<-c(20,30,40,50,60,70,80,90)

我有一个矩阵A,它是一个二进制矩阵,表示我们在时间,q1,q2等的位置 比方说,一年中的四分之一是1天,所以: (向量中有7个零,因为我们在这里谈论的是2年,而且只有四分之一)

a<-c(1,0,0,0,0,0,0,0)
u<-c(0,1,0,0,0,0,0,0)
c<-c(1,0,1,0,0,0,0,0)
d<-c(0,0,0,1,0,0,0,0)

从这一点开始,另一年进入,另一个q1,这就是为什么二进制文件不会跳回到第一位

e<-c(0,0,0,0,1,0,0,0)
f<-c(0,0,0,0,0,1,0,0)
g<-c(0,0,0,0,0,0,1,0)
h<-c(0,0,0,0,0,0,0,1)


A<-cbind(a,u,c,d,e,f,g,h)

这是表示数据的一种不好的方法,我可以欺骗你,因为长度和宽度是 在矩阵中相同,但请记住,在原始数据中,一切都适用于矩阵乘法 A的宽度,x的长度为8000

有一种计划的方式,每个Q中的事情是如何形成的,即“y”,这是给出的。

编号

y<-c(10,11,12,13,14,16,17,18)

所以基本上,我想尽可能坚持这个计划,但是要达到标准b,那就是我想尽量减少 计划值和x值之间的差异,

min F (Ax-y)^2
s.t: A*x=b

希望它更清楚,我可以通过这种方式减少问题的维度 似乎不可行 (愚蠢,我知道:)。

1 个答案:

答案 0 :(得分:0)

看起来没有什么可以优化的。例如。使用您的数据集:

> b<-c(20,30,40,50,60,70,80,90)
> a<-c(1,0,0,0,0,0,0,0)
> u<-c(0,1,0,0,0,0,0,0)
> c<-c(1,0,1,0,0,0,0,0)
> d<-c(0,0,0,1,0,0,0,0)
> 
> e<-c(0,0,0,0,1,0,0,0)
> f<-c(0,0,0,0,0,1,0,0)
> g<-c(0,0,0,0,0,0,1,0)
> h<-c(0,0,0,0,0,0,0,1)
> 
> A<-cbind(a,u,c,d,e,f,g,h)
> x <- solve(A,b)
> x
  a   u   c   d   e   f   g   h 
-20  30  40  50  60  70  80  90 

如果有一些自由度与x一起玩并使其尽可能接近y会更有趣,