2016-06-20 2 views
0

에 OPTIM 난 (Optim을 파에 대한 시작 값)를 입력 값으로 정수 벡터세트 제약 - R

my.data.var <- c(10,0.25,0.25,0.25,0.25,0.25, 
      10,0.25,0.25,0.25,0.25,0.25, 
      10,0.25,0.25,0.25,0.25,0.25, 
      10,0.25,0.25,0.25,0.25,0.25) 
  • 최적화 문제는 분이다있다. 문제.

  • 에러 함수 TWO 행렬 (계산치 매트릭스 VS 감안 값 매트릭스)

  • 계산 된 매트릭스는 정수 벡터 위에 사용하는 하나 사이의 값에서 DIFF의 제곱근의 합을 산출한다.
    그러므로, 에러 함수, I는 my.data.var.mat <- matrix(my.data.var,nrow = 4,ncol = 6,byrow = TRUE)

으로 I는 colSum(my.data.var.mat) <=1

있다는 Optim을가

sols<-optim(my.data.var,Error.func,method="L-BFGS-B",upper=c(Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1), 
    lower=c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)) 
로 정의된다 도입해야하는 제약 행렬로 정수 벡터 스택

오류 함수는 다음과 같이 정의됩니다.

Error.func <- function(my.data.var){ 


my.data.var.mat <- matrix(my.data.var,nrow = ncol(my.data.matrix.prod),ncol = ncol(my.data.matrix.inj)+1,byrow = TRUE) 

    Calc.Qjk.Value <- Qjk.Cal.func(my.data.timet0,my.data.qo,my.data.matrix.time, 
           my.data.matrix.inj, my.data.matrix.prod,my.data.var,my.data.var.mat) 

    diff.values <- my.data.matrix.prod-Calc.Qjk.Value #FIND DIFFERENCE BETWEEN CAL. MATRIX AND ORIGINAL MATRIX 

    Error <- ((colSums ((diff.values^2), na.rm = FALSE, dims = 1))/nrow(my.data.matrix.inj))^0.5 #sum of square root of the diff 

    Error_total <- sum(Error,na.rm=FALSE)/ncol(my.data.matrix.prod) # total avg error 

    Error_total 
} 
my.data.matrix.prod, 내가 매트릭스 COL 합 제약을 도입해야하는 위치

my.data.timet0, my.data.qo, my.data.matrix.time, my.data.matrix.inj 그래서, 내 질문은 어떻게입니다 :

는 데이터 집합을 감안할 때? 또는 OPTIM이 행렬 열 합계 제약 조건에서 정수 벡터를 어떻게 다르게 할 것인가?

+0

@ ZheyuanLi : thnks. 나는 약간의 조언을 얻을 희망! – Modi

+0

@ ZheyuanLi : "nloptr"로 내 행운을 시험해 보았습니다. 보자! – Modi

+1

@ ZheyuanLi : 해결했습니다. Optim을 사용하는 대신 nloptr solver를 사용했습니다. 불평등 제약 조건을 허용합니다. 여기 좀 봐 .http : //stackoverflow.com/questions/37951719/multiple-inequality-constraints-minimization-with-r-npt-package – Modi

답변