2017-04-18 78 views
0

我想添加一個約束到一個非常複雜的最小化問題,但我不知道如何實現它,即使在閱讀文檔之後。將約束添加到iminuit鉗工

我有一個簡單的例子,如果回答將幫助我與我原來的問題。這裏是代碼:

from iminuit import Minuit 
def f(x,y,z): 
    return (x-1.)**2 +(y-2*x)**2 + (z-3.*x)**2 -1. 

    m=Minuit(f, x=.5, error_x=0.2, limit_x=(0.,1.), y=0.,limit_y= 
    (0.,1.), print_level=1) 

m.migrad(); 

我想添加一個約束,比如x + y = 1。

感謝

+0

我想如果我將x和y約束到間隔say(0,1),並且僅用因子1 /(x + y)加權每個變量,它就可以工作。它會工作,但不是跛腳?更復雜的約束呢?我想知道是否有任何我不知道的與這個特定的鉗工有關的構造。 – Canuck

回答

0

回答我自己的問題是不要打擾使用minuit。使用scipy.optimize方法SLSQP。它有內置的等式和不等式約束方法。