2016-02-11 6 views
1

Я хотел бы решить довольно большую проблему оптимизации, когда время имеет значение, но я придерживался понимания в огромном количестве пакетов «R», поэтому я хотел бы спросить сообщество прямо об этом проблема.Большая оптимизация с ограничениями равенства

Я хочу, чтобы минимизировать функцию:

F=(x-y)^2 

где у данности, предварительно определенный вектор из 8000 значений. Итак, я ищу 8000 x-es. У меня есть матрица A (которая в основном является фиктивной переменной матрицей), с nrow = 8, ncol = 8000. У меня также есть вектор b с 8 заданными значениями. Итак, я хочу, чтобы хотеть решить следующую проблему:

min(x-y)^2 

s.t: 
A*x=b 

Теоретически я понимаю все, но почему-то я не включать F в любой пакет, где equallity сдерживает разрешено. Кроме того (и потому что я понятия не имею, какой будет время обработки), я хотел бы спросить вас, что бы вы сделали, если:

F = абс (х)

, потому что если минимализация квадратичной функции длится, этот второй вариант также удовлетворит меня. Данные конфиденциальны, но конфиденциально (и немного иначе) я отправлю его, если это необходимо для решения.

Edit nr.1:

нормально, я буду более конкретно на этот раз я получил 2 года данных (то есть 8000 Measurment, каждый год содержит 4000 мерки) каждый год имеют q1 , q2, q3, q4, которые каким-то образом произошли в прошлом (но будут указаны как оптимальные в будущем, для достижения некоторых целей) , так что это мой вектор b, критерии, которые должна выполнить оптимизация.

составлявшие номера

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

я получил матрицу А, которая является бинарной матрицей, указывает на то, где мы находимся во времени, 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 , поэтому двоичный шрифт не возвращается к первому pl туз

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

Существует строгий способ, как вещи sholud идут в каждом Q, то есть «y», которое дается.

составлявшие номера

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

так в основном, я хочу, чтобы прилип к плану, так же, как я могу, но для того чтобы достигнуть критерии б, то есть whay я хочу, чтобы минимизировать различия между планируемым и значения х,

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

Надежда это яснее, я уменьшил размер проблемы, таким образом, это может показаться невыполнимой (его немой, я знаю :)

+3

Крафт [mcve] с наименьшим размером , покажите свой ожидаемый результат, так как я не понимаю, что ваш вопрос на самом деле. – Tensibai

+0

После разговора в чате возможно [этот пакет] (https://stat.ethz.ch/R-manual/R-devel/library/Matrix/html/solve-methods.html) может помочь – Tensibai

+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 

Было бы интересно, если бы были какие-то степени свободы осталось играть с х и сделать его как можно ближе у как можно,

+0

Благодарим вас за ответ. –

+0

Но таким образом мы просто решаем x, он должен оставаться рядом с y. Я искал весь день, я думаю, что моя проблема - квадратичная задача оптимизации. –

+0

Если x близко к y, это нарушит Ax = b. –

Смежные вопросы