我正在嘗試使用差分進化來根據成本優化可用性。但是,我在這裏有三個未知參數(a,b,c),我可以使用邊界定義範圍。然而,我想定義額外的約束爲a + b + c < = 10000.我正在使用python來做到這一點,我嘗試在差分進化中使用選項「args」,但它沒有奏效。任何信息將不勝感激。在python中使用差分進化的參數約束
1
A
回答
0
使用差分演化定義約束不是合適的解決方案對於我上面描述的問題。爲此,我們可以使用Nminimize命令,它有專門的選項來定義約束。
scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
2
這是一個黑客。我用從documentation最後一個例子和約束的和(x)> 4.1(如果沒有這個約束的優化方案是(0,0)):
from scipy.optimize import differential_evolution
import numpy as np
def ackley(x):
arg1 = -0.2 * np.sqrt(0.5 * (x[0] ** 2 + x[1] ** 2))
arg2 = 0.5 * (np.cos(2. * np.pi * x[0]) + np.cos(2. * np.pi * x[1]))
if x[0]+x[1] > 4.1: #this is the constraint, where you would say a+b+c <=1000
return -20. * np.exp(arg1) - np.exp(arg2) + 20. + np.e
else:
return 1000 #some high value
bounds = [(-5, 5), (-5, 5)]
result = differential_evolution(ackley, bounds)
result.x, result.fun
+0
謝謝你分享這個。由於我的優化問題的複雜性,我必須使用不同的優化。 –
相關問題
- 1. scipy.optimize.minimize在python中進行約束優化
- 2. python中的約束優化
- 3. Python中的約束整數優化
- 4. 更改PuLP(用於Python)約束公差
- 5. 如何使用cvxopt進行帶有約束的均值方差優化?
- 6. 使用Python和ODRPACK擬合參數的約束條件
- 7. 在接口中約束函數參數
- 8. 使用Python約束編程
- 9. 如何使用Data.Constraint來約化約束?
- 10. 在Mathematica中使用等式約束的函數最小化8
- 11. 使用python更新RHS約束在scip中使用python
- 12. 使用Sympy在Python中的差異化
- 13. 如何在約束優化中將參數'sum設置爲1
- 14. 如何用差分進化算法選擇最佳參數
- 15. 在約束中使用SCOPE_IDENTITY()
- 16. 使用RJAGS在貝葉斯線性迴歸中約束參數
- 17. R中的約束優化
- 18. 參照約束?
- 19. RhinoMock方法中的參數約束
- 20. 在python中,找到約束的最小約束?
- 21. Simulink中約束條件下模型參數的優化
- 22. 在scipy中用hessian約束優化
- 23. 如何在Python中使用pypyodbc進行參數化查詢?
- 24. rhino mocks ref參數約束
- 25. 類型參數約束
- 26. 模板參數約束
- 27. 約束參數,新建()
- 28. SSRS - 實現參數約束
- 29. 我可以使用通用約束來啓用參數化構造函數嗎?
- 30. Python中的約束MLE
你能否提供一個代碼示例。 –
DEF ahs_Ca(): 在範圍BUDG(7000000,100000000,10000000): xaxis.append(BUDG) F =(0,BUDG) 界限= [F] *組分 resultEta = differential_evolution(ETA,邊界,maxiter = 4000)這是帶邊界的示例代碼。我需要在這裏定義一些限制。希望這些信息是有幫助的。 –