0
A
回答
1
總和你可以這樣做與maxLik。不等式約束必須被指定爲$ Ax + B> 0 $,其中x是參數。
例如,假設你有兩個參數,你最大的指數帽子:
f <- function(x) exp(- (x[1]-2)^2 - (x[2]-2)^2)
A <- matrix(c(1,1,-1,-1), 2, 2, byrow=TRUE)
B <- c(0,1)
您可以檢查,現在$ AX + B> 0 $等同於您的不平等條件(當然,除非你寫>> =而不是>,但這對數值解決方案無關緊要)。
您可以使用BFGS或其他優化器。你需要ineqA和ineqB爲限制名單:
a <- maxBFGS(f, start=c(0.2, 0.2), constraints=list(ineqA=A, ineqB=B))
summary(a)
--------------------------------------------
BFGS maximization
Number of iterations: 50
Return code: 0
successful convergence
Function value: 0.01104892
Estimates:
estimate gradient
[1,] 0.4990966 0.03316674
[2,] 0.4990966 0.03316674
Constrained optimization based on constrOptim
1 outer iterations, barrier value -0.0003790423
--------------------------------------------
正如你所看到的約束結合,不受約束的最大是在(2,2)。
+0
對不起,現在我回答了「如何估計R中的不等式約束」這個問題,而不是「優化/優化不等式約束」。 –
0
在optimx
使用L-BFGS-B,
- 對於變量> = 0,則會在
optimx
的lower
參數設置爲rep.int(0, n_variables)
- 對於薩姆(變量)< = 1,我不不知道用
optimx
編程的直接方法。我建議upper = rep.int(1, n_variables)
,修改你的目標函數,包括:如果總和(變量)> 1,objectiveValue = objectiveFunction +大懲罰,然後設置一個符合所有標準的起點,Vars> = 0,Sum(Vars)< = 1 ,並且(如您的約束所暗示,變量< = 1)
相關問題
- 1. 「不包含」約束?
- 2. (+ r)與(= r)的約束
- 3. R中的約束優化
- 4. 等式約束
- 5. 列表不等式約束
- 6. stata:xttobit中的不等式約束
- 7. 約束優化R建立約束
- 8. 約束nlsLM()與R中
- 9. 在PROC中不等於約束OPTMODEL
- 10. WebRTC - 對等約束
- 11. R中的二次約束的二次約束:Rsolnp?
- 12. 約束揹包不重
- 13. 的Optim與不等式約束
- 14. 整數規劃不平等的約束
- 15. Z3Py:不等於元組的約束
- 16. 約束具有不等式的規範
- 17. 約束上的平等
- 18. 如何在fmincon中使用'不等於'不等式約束?
- 19. 優化中的R與任意約束
- 20. RGLPK庫中的條件約束R
- 21. 約束操縱包
- 22. hibernate中的約束等價註釋?
- 23. ASP.NET路由具有不等於約束
- 24. 類型約束類型不等式
- 25. 線性模型約束,[R]
- 26. 在相等性約束
- 27. 在R中繪製包含「大約等於」的文本
- 28. ServiceStack Ormlite多列約束失敗,其中約束包括枚舉
- 29. 在R中約束數據插補
- 30. 把等式約束放在z3中
您可能想查看[CRAN優化任務視圖](https://cran.r-project.org/web/views/Optimization的.html)。 –
Optim/optimx僅適用於無約束和框約束的問題。你似乎只有'線性'約束(你提到了非線性約束,但是你顯示的約束是一個線性約束)。 'optim'的'see also'部分提到'constrOptim',它允許線性不等式約束,這就是你所擁有的。在R下還有很多其他解算器可以處理線性甚至非線性約束。 –
您的約束:變量<= 0;和總和(變量)<= 1對我來說似乎是完全線性的...另外,如果沒有> 0的變量,那麼總和應該<= 0 ... –