我一直在嘗試解決R中使用constrOptim()(我的第一次)的約束優化問題,但我正在努力爲我的問題設置約束。約束優化R建立約束
的問題是非常簡單的,我可以設置功能確定,但在大約經過約束損失感到有點。
例如我已經定義的問題是(我打算以N固定在1000開始說,所以我只想解決X最終我想選擇N和X的最大利潤):
所以我可以設置功能爲:
fun <- function(x, N, a, c, s) { ## a profit function
x1 <- x[1]
x2 <- x[2]
x3 <- x[3]
a1 <- a[1]
a2 <- a[2]
a3 <- a[3]
c1 <- c[1]
c2 <- c[2]
c3 <- c[3]
s1 <- s[1]
s2 <- s[2]
s3 <- s[3]
((N*x1*a1*s1)-(N*x1*c1))+((N*x2*a2*s2)-(N*x2*c2))+((N*x3*a3*s3)-(N*x3*c3))
}
我需要實現的約束是:
x1>=0.03
x1<=0.7
x2>=0.03
x2<=0.7
x3>=0.03
x2<=0.7
x1+x2+x3=1
的X這裏表示成我需要最優地分配N個區段,所以N個X1 = pecent放置在桶1等,每個桶具有至少3%但不超過70%。
非常感謝任何幫助...
例如,這裏是我用來測試功能的一個例子,我想要什麼:
fun <- function(x, N, a, c, s) { ## profit function
x1 <- x[1]
x2 <- x[2]
x3 <- x[3]
a1 <- a[1]
a2 <- a[2]
a3 <- a[3]
c1 <- c[1]
c2 <- c[2]
c3 <- c[3]
s1 <- s[1]
s2 <- s[2]
s3 <- s[3]
((N*x1*a1*s1)-(N*x1*c1))+((N*x2*a2*s2)-(N*x2*c2))+((N*x3*a3*s3)-(N*x3*c3))
};
x <-matrix(c(0.5,0.25,0.25));
a <-matrix(c(0.2,0.15,0.1));
s <-matrix(c(100,75,50));
c <-matrix(c(10,8,7));
N <- 1000;
fun(x,N,a,c,s);
所以...'X [1:3],'是變量,而一個'[1:3]','S [1:3]'和'C [1:3]'中給出值?你能否詳細說明你需要的配方?我不清楚... – digEmAll
是的 - a [1:3],s [1:3],c [1:3]代表歷史平均激活率,支出,購置成本..我試圖選擇x [1:3]來最大限度地發揮 – andrewm4894