2012-04-25 4 views
1

여러 평등과 불평등에 선형 문제가 있습니다. 그것은 해결책이 부족합니다. 나는 유전 알고리즘의 초기 모집단을 개선하기 위해이 시스템의 무수한 해법을 찾고 싶다.CSP (Contraints Satisfaction Probes) R

누구나 R을 사용하는 방법에 대한 아이디어가 있습니까? 시간에 대한

들으,

찰스

답변

1

이 최적화 기능 중 일부는 당신이 출발점 지정할 수 있습니다 : 임의의 시작 지점을 선택하여 을, 당신은 다른 솔루션이 있어야합니다.

또한 문제를 수정할 수도 있습니다. 목적 함수에서 임의의 지점까지 거리를 추가하십시오. 당신은 선형 문제 이 있고 유클리드 거리를 사용하는 경우, 문제가 차되고 해결 될 수있다 : 그것은 나를 함수로 제약 조건을 지정할 수 있기 때문에

Not-so-random points satisfying the constraints

library(Rsolnp) 
get_one_point <- function(...) { 
    r <- NULL 
    while(is.null(r) || r$convergence != 0) { 
    x <- rnorm(2) 
    r <- solnp( 
     rnorm(2), 
     # Minimize the distance to some point 
     function(u) sum((u-x)^2), 
     # Constraints we want to satisfy 
     ineqfun = function(u) c(sum(u^2), u[2] - u[1]^2), 
     ineqLB = c(1,0), 
     ineqUB = c(2,5) 
    ) 
    } 
    r$pars 
} 

# Plot the points and the constraints 
library(parallel) # Very slow: run the optimizations in parallel 
x <- mclapply(1:10, get_one_point, mc.cores=detectCores()) 
x <- do.call(rbind, x) 
plot(x, 
    xlim=c(-2,2), ylim=c(0,2), 
    pch=15, cex=1.5, asp=1, las=1, 
    xlab="", ylab="" 
) 
curve(x^2, add=TRUE) 
curve(sqrt(1-x^2), add=TRUE) 
curve(2*sqrt(1-x^2/4), add=TRUE) 
는 난 단지 Rsolnp 사용 quadprog 패키지의 solve.QP입니다.

또한 L^1 표준 (즉, 절대 값)을 사용할 수도 있습니다. 그러면 문제는 선형 문제로 재 형성 될 수 있습니다.

+0

사실 내 목표는 평등과 불평등 제약 조건이있는 비선형 및 비 convexe입니다. Rsolnp의 gosolnp()를 사용하여 문제를 해결했습니다. 그러나 나는 최적의 해결책 즉, 내 fonction의 로컬 미니 마를 발견하고 너무 많은 시간이 걸립니다 (10 분). 왜 지금 genoud()를 사용하고 있는가? 그러나 필요한 시간은 ....입니다. 그래서, 나는 초기 수용력을 향상 시키려고 노력하고 있습니다 ... – Charles

+0

당신의 제약 조건이 비교적 단순하다면, 목적 함수를 임의의 지점까지의 거리로 대체 할 수 있습니다 : 그것은 실현 가능한 솔루션을 제공 할 것입니다. –