2017-02-13 114 views
-2

該函數將4個輸入作爲x,y,w,z,並且我想用x + y + w + z = 1約束來優化函數,並且所有4應該小於1。我接近這個任務?在python中優化函數

+0

定義你的約束並編寫一些代碼?如上所述,無論如何,您的優化都有無數的解決方案。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)。 – roganjosh

+0

*所有4應小於1 * - 如果它們都小於1,他們如何給出1作爲結果? – RomanPerekhrest

+0

@RomanPerekhrest'0.25 + 0.25 + 0.25 + 0.25' – roganjosh

回答

1

如果我理解正確的話,下面的解決方案應適合您最初的要求:

def checkAllForOne(x,y,w,z): 
    args = [x,y,w,z] 
    return all(i < 1 for i in args) and sum(args) == 1 

print(checkAllForOne(0.2, 0.25, 0.25, 0.3)) # True 
print(checkAllForOne(0.0, 0.25, 0.25, 0.3)) # False 
print(checkAllForOne(0.5, 0.4, 0.1, 0))  # True 

使用的功能:
all() - 檢查每一個參數小於1
sum() - 檢查參數的總和