SciPy (yotchulidwa kuti sai pie) ndi phukusi la masamu lomwe limaphatikizaponso malaibulale a C ndi Fortran. SciPy imatembenuza gawo lanu la Python lolumikizana kukhala malo asayansi athunthu monga MATLAB, IDL, Octave, R, kapena SciLab.
M'nkhaniyi, tiwona njira zoyambira za masamu - kuthetsa mavuto okhazikika okhazikika pa ntchito ya scalar yamitundu ingapo pogwiritsa ntchito phukusi la scipy.optimize. Ma algorithms okhathamiritsa osasunthika adakambidwa kale nkhani yomaliza. Thandizo latsatanetsatane komanso laposachedwa pazantchito za scipy litha kupezeka nthawi zonse pogwiritsa ntchito lamulo la help(), Shift+Tab kapena mu zolemba zovomerezeka.
Mau oyamba
Mawonekedwe wamba kuti athe kuthana ndi zovuta zonse zokhazikika komanso zosagwirizana mu phukusi la scipy.optimize limaperekedwa ndi ntchitoyi. minimize(). Komabe, zimadziwika kuti palibe njira yapadziko lonse yothetsera mavuto onse, kotero kusankha njira yokwanira, monga nthawi zonse, imagwera pamapewa a wofufuza.
Kukhathamiritsa koyenera kumatchulidwa pogwiritsa ntchito mfundo ya ntchito minimize(..., method="").
Kukhathamiritsa kokhazikika kwa ntchito yamitundu ingapo, kukhazikitsa njira zotsatirazi zilipo:
SLSQP - Mapulogalamu otsatizana a quadratic okhala ndi zopinga, njira ya Newtonian yothetsera dongosolo la Lagrange. Nkhani ya Wiki.
TNC - Newton Constrained, chiwerengero chochepa cha kubwereza, chabwino kwa ntchito zopanda mzere ndi chiwerengero chachikulu cha mitundu yosiyana. Nkhani ya Wiki.
L-BFGS-B - njira yochokera ku gulu la Broyden-Fletcher-Goldfarb-Shanno, yomwe idakhazikitsidwa ndikuchepetsa kukumbukira kukumbukira chifukwa chotsitsa pang'ono ma vectors kuchokera ku matrix a Hessian. Nkhani ya Wiki, Nkhani ya Habre.
COBYLA - MARE Constrained Optimization By Linear Approximation, kukhathamiritsa kocheperako ndikuyerekeza kwa mzere (popanda kuwerengera kwa gradient). Nkhani ya Wiki.
Kutengera njira yosankhidwa, mikhalidwe ndi zoletsa zothetsera vutoli zimayikidwa mosiyanasiyana:
kalasi chinthu Bounds kwa njira L-BFGS-B, TNC, SLSQP, trust-constr;
mndandanda (min, max) kwa njira zomwezo L-BFGS-B, TNC, SLSQP, trust-constr;
chinthu kapena mndandanda wa zinthu LinearConstraint, NonlinearConstraint kwa COBYLA, SLSQP, trust-constr njira;
dikishonale kapena mndandanda wamadikishonale {'type':str, 'fun':callable, 'jac':callable,opt, 'args':sequence,opt} kwa COBYLA, njira za SLSQP.
Ndondomeko yankhani:
1) Ganizirani za kugwiritsidwa ntchito kwa algorithm yokhazikika mdera la trust (njira = "trust-constr") yokhala ndi zopinga zomwe zafotokozedwa ngati zinthu. Bounds, LinearConstraint, NonlinearConstraint ;
2) Ganizirani madongosolo otsatizana pogwiritsa ntchito njira ya masikweya (njira = "SLSQP") yokhala ndi zoletsa zomwe zafotokozedwa mumtanthauzira mawu. {'type', 'fun', 'jac', 'args'};
3) Unikani chitsanzo cha kukhathamiritsa kwa zinthu zopangidwa pogwiritsa ntchito chitsanzo cha situdiyo yapaintaneti.
Conditional kukhathamiritsa njira="trust-constr"
Kukhazikitsa njira trust-constr kutengera Mtengo wa EQSQP pamavuto okhala ndi zopinga za mawonekedwe ofanana ndi kupitilira TRIP kwa mavuto okhala ndi zopinga mu mawonekedwe a kusagwirizana. Njira zonsezi zimagwiritsidwa ntchito ndi ma aligorivimu kuti apeze zochepa zakumaloko mdera la chidaliro ndipo ndizoyenera kuthana ndi mavuto akulu.
Kapangidwe ka masamu avuto lopeza zochepa mu mawonekedwe wamba:
Kwa zopinga zokhwima zofanana, malire apansi amaikidwa mofanana ndi apamwamba .
Kwa kuletsa kwa njira imodzi, malire apamwamba kapena otsika amaikidwa np.inf ndi chizindikiro chofanana.
Zikhale zofunikira kupeza ntchito yocheperako yodziwika ya Rosenbrock yamitundu iwiri:
Kapenanso, zotumphukira zoyamba ndi zachiwiri za ntchito yomwe ikukonzedwanso zitha kuyerekezedwa. Mwachitsanzo, Hessian ikhoza kuyerekezedwa pogwiritsa ntchito ntchitoyi SR1 (kuyerekeza kwa Newtonian). Ma gradient amatha kufananizidwa ndi kusiyana komaliza.
from scipy.optimize import SR1
res = minimize(rosen, x0, method='trust-constr', jac="2-point", hess=SR1(),
constraints=[linear_constraint, nonlinear_constraint],
options={'verbose': 1}, bounds=bounds)
print(res.x)
Conditional kukhathamiritsa njira="SLSQP"
Njira ya SLSQP idapangidwa kuti ithetse mavuto ochepetsa ntchito mu mawonekedwe:
Kumeneko ΠΈ - magulu a zizindikiro zofotokozera zoletsa mu mawonekedwe a kufanana kapena kusagwirizana. - ma seti a malire apansi ndi apamwamba a dera la tanthauzo la ntchitoyi.
Zoletsa zofananira komanso zopanda mzere zimafotokozedwa ngati madikishonale okhala ndi makiyi type, fun ΠΈ jac.
ineq_cons = {'type': 'ineq',
'fun': lambda x: np.array ([1 - x [0] - 2 * x [1],
1 - x [0] ** 2 - x [1],
1 - x [0] ** 2 + x [1]]),
'jac': lambda x: np.array ([[- 1.0, -2.0],
[-2 * x [0], -1.0],
[-2 * x [0], 1.0]])
}
eq_cons = {'type': 'eq',
'fun': lambda x: np.array ([2 * x [0] + x [1] - 1]),
'jac': lambda x: np.array ([2.0, 1.0])
}
Optimization terminated successfully. (Exit mode 0)
Current function value: 0.34271757499419825
Iterations: 4
Function evaluations: 5
Gradient evaluations: 4
[0.41494475 0.1701105 ]
Kukhathamiritsa Chitsanzo
Pokhudzana ndi kusintha kwa kamangidwe ka teknoloji yachisanu, tiyeni tiwone kukhathamiritsa kwa kupanga pogwiritsa ntchito chitsanzo cha studio ya intaneti, yomwe imatibweretsera ndalama zochepa koma zokhazikika. Tiyerekeze kuti ndinu wotsogolera gulu lankhondo lomwe limapanga mitundu itatu ya zinthu:
x0 - kugulitsa masamba ofikira, kuchokera ku 10 tr.
x1 - masamba amakampani, kuyambira 20 tr.
x2 - malo ogulitsa pa intaneti, kuyambira 30 tr.
Gulu lathu logwira ntchito mwaubwenzi limaphatikizapo ana anayi, apakati awiri ndi wamkulu mmodzi. Ndalama zawo zogwirira ntchito pamwezi:
Juni: 4 * 150 = 600 ΡΠ΅Π» * ΡΠ°Ρ,
zapakati: 2 * 150 = 300 ΡΠ΅Π» * ΡΠ°Ρ,
sensa: 150 ΡΠ΅Π» * ΡΠ°Ρ.
Lolani woyamba kupezeka kuti awononge maola (0, 1, 2) pakupanga ndi kutumiza kwa tsamba limodzi lamtundu (x10, x20, x30), pakati - (7, 15, 20), wamkulu - (5, 10, 15) ) maola a nthawi yabwino kwambiri pa moyo wanu.
Monga wotsogolera aliyense wamba, tikufuna kukulitsa phindu la mwezi uliwonse. Chinthu choyamba kuti mupambane ndikulemba ntchito yomwe mukufuna value monga kuchuluka kwa ndalama zomwe zimaperekedwa pamwezi:
Nkhaniyi ikufotokoza njira zoyambira zogwirira ntchito ndi phukusi scipy.optimize, yogwiritsidwa ntchito kuthetsa mavuto ochepetsetsa. Ine ndekha ndimagwiritsa ntchito scipy chifukwa cha maphunziro basi, nchifukwa chake chitsanzo choperekedwacho chili choseketsa.
Malingaliro ambiri ndi zitsanzo zenizeni zingapezeke, mwachitsanzo, m'buku la I.L. Akulich "Mapulogalamu a masamu mu zitsanzo ndi mavuto." More hardcore application scipy.optimize kupanga mawonekedwe a 3D kuchokera pazithunzi (Nkhani ya Habre) ikhoza kuwonetsedwa mu scipy-cookbook.
Gwero lalikulu la chidziwitso ndi docs.scipy.orgamene akufuna kuthandizira kumasulira kwa zigawo izi ndi zina scipy Takulandilani ku GitHub.