2013-05-02 28 views
8

Có phương pháp dễ dàng nào để thiết lập theta, ui, ci cho các ràng buộc sau đây trong hàm constrOptim không?Ràng buộc thiết lập trong constrOptim

c1<x1<=c2 
x1+1<x2<=c2+1 
x2+1<x3<=c2+2 
x3+1<x4<=c2+3 

Tôi xem xét sử dụng simplex nhưng chỉ mất 3 ràng buộc.

Cảm ơn

Trả lời

18

Chỉ cần viết lại những hạn chế trong các hình thức mong muốn, ui %*% theta >= ci.

# Initial formulation of the constraints 
c1 <= x1 
     x1 <= c2 
x1+1 <= x2 
     x2 <= c2+1 
x2+1 <= x3 
     x3 <= c2+2 
x3+1 <= x4 
     x4 <= c2+3 

# Rewrite them 
    x1    >= c1 
- x1    >= -c2 
- x1 + x2   >= 1 
    - x2   >= -c2 - 1 
    - x2 + x3  >= 1 
      - x3  >= -c2 - 2 
      - x3 + x4 >= 1 
       - x4 >= -c2 - 3 

# In matrix form 
ui <- matrix(c(
    1, 0, 0, 0, 
    -1, 0, 0, 0, 
    -1, 1, 0, 0, 
    0, -1, 0, 0, 
    0, -1, 1, 0, 
    0, 0, -1, 0, 
    0, 0, -1, 1, 
    0, 0, 0, -1 
), 
    ncol = 4, 
    byrow = TRUE 
) 
ci <- c(c1, -c2, 1, -c2-1, 1, -c2-2, 1, -c2-3) 
+0

Cảm ơn Vincent. Điều đó rất hữu ích. Tôi nghĩ rằng tôi cần phải trở lại trường trung học ... lol ... – earthlink

+2

Đối với người dùng vấp ngã khi câu hỏi này, lưu ý rằng khu vực khả thi là 'ui% *% theta> ci' theo [link] này (https: //stat.ethz.ch/pipermail/r-devel/2010-June/057730.html) – earthlink

+0

@ vincent-zoonekynd Bạn đã dịch các ràng buộc ops 'c1 crsh

Các vấn đề liên quan