SciPy (เจเจเจพเจฐเจฟเจ เจธเจพเจ เจชเจพเจ) เจเฉฑเจ เจจเฉฐเจชเฉ-เจเจงเจพเจฐเจฟเจค เจเจฃเจฟเจค เจชเฉเจเฉเจ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ C เจ เจคเฉ Fortran เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจตเฉ เจธเจผเจพเจฎเจฒ เจนเจจเฅค SciPy เจคเฉเจนเจพเจกเฉ เจเฉฐเจเจฐเจเจเจเจฟเจต เจชเจพเจเจฅเจจ เจธเฉเจธเจผเจจ เจจเฉเฉฐ MATLAB, IDL, Octave, R, เจเจพเจ SciLab เจตเจฐเจเฉ เจธเฉฐเจชเฉเจฐเจจ เจกเจพเจเจพ เจตเจฟเจเจฟเจเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเจพ เจนเฉเฅค
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ, เจ
เจธเฉเจ เจเจฃเจฟเจคเจฟเจ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจฆเฉเจเจ เจฌเฉเจจเจฟเจเจฆเฉ เจคเจเจจเฉเจเจพเจ เจจเฉเฉฐ เจฆเฉเจเจพเจเจเฉ - scipy.optimize เจชเฉเจเฉเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจเฉฑเจ เจธเจเฉเจฒเจฐ เจซเฉฐเจเจธเจผเจจ เจฒเจ เจเฉฐเจกเฉเจธเจผเจจเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจเจพเฅค เจฌเฉเจฐเฉเจ เจ
เจจเฉเจเฉเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจตเจฟเฉฑเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจฐเจเจพ เจเฉเจคเฉ เจเจพ เจเฉเฉฑเจเฉ เจนเฉ
เจเจพเจฃ เจชเจเจพเจฃ
เจซเฉฐเจเจธเจผเจจ เจฆเฉเจเจฐเจพ scipy.optimize เจชเฉเจเฉเจ เจตเจฟเฉฑเจ เจธเจผเจฐเจคเฉเจ เจ
เจคเฉ เจฌเฉเจฐเฉเจ เจ
เจจเฉเจเฉเจฒ เจ
เจจเฉเจเฉเจฒเจจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจธเจพเจเจเจพ เจเฉฐเจเจฐเจซเฉเจธ เจชเฉเจฐเจฆเจพเจจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค minimize()
. เจนเจพเจฒเจพเจเจเจฟ, เจเจน เจเจพเจฃเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ เจธเจพเจฐเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจเฉเจ เจตเจฟเจเจชเจ เจคเจฐเฉเจเจพ เจจเจนเฉเจ เจนเฉ, เจเจธ เจฒเจ เจเฉฑเจ เจขเฉเจเจตเฉเจ เจตเจฟเจงเฉ เจฆเฉ เจเฉเจฃ, เจนเจฎเฉเจธเจผเจพ เจตเจพเจเจ, เจเฉเจเจเจฐเจคเจพ เจฆเฉ เจฎเฉเจขเจฟเจเจ 'เจคเฉ เจเจเจเจฆเฉ เจนเฉ.
เจซเฉฐเจเจธเจผเจจ เจเจฐเจเฉเจฎเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจเจฟเจค เจ
เจจเฉเจเฉเจฒเจจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ minimize(..., method="")
.
เจเจ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจเฉฐเจกเฉเจธเจผเจจเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจฒเจ, เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจคเจฐเฉเจเจฟเจเจ เจฆเฉ เจฒเจพเจเฉเจเจฐเจจ เจเจชเจฒเจฌเจง เจนเจจ:
trust-constr
- เจตเจฟเจธเจผเจตเจพเจธ เจเฉเจคเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจฅเจพเจจเจ เจเฉฑเจเฉ-เจเฉฑเจ เจฆเฉ เจเฉเจ เจเจฐเฉเฅคเจตเจฟเจเฉ เจฒเฉเจ ,Habrรฉ 'เจคเฉ เจฒเฉเจ ;SLSQP
โ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฆเฉ เจจเจพเจฒ เจเฉเจฐเจฎเจตเจพเจฐ เจเจคเฉเจฐเจญเฉเจ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ, เจฒเฉเจเจฐเฉเจเจ เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจจเจฟเจเจเฉเจจเฉเจ เจจ เจตเจฟเจงเฉเฅคเจตเจฟเจเฉ เจฒเฉเจ .TNC
- เจเฉฑเจเจฟเจ เจจเจฟเจเจเจจ เจธเฉเจฎเจค, เจธเฉเจฎเจค เจธเฉฐเจเจฟเจ เจฆเฉเจนเจฐเจพเจ, เจตเฉฑเจกเฉ เจเจฟเจฃเจคเฉ เจตเจฟเฉฑเจ เจธเฉเจคเฉฐเจคเจฐ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉเจฐ-เจฐเฉเจเจฟเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฒเจ เจตเจงเฉเจเฅคเจตเจฟเจเฉ เจฒเฉเจ .L-BFGS-B
โ เจฌเฉเจฐเฉเจเจกเจจโเจซเจฒเฉเจเจฐโเจเฉเจฒเจกเจซเจพเจฐเจฌโเจธเจผเฉเจจเฉ เจเฉเจฎ เจฆเฉ เจเฉฑเจ เจตเจฟเจงเฉ, เจนเฉเจธเฉเจ เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจคเฉเจ เจตเฉเจเจเจฐเจพเจ เจฆเฉ เจ เฉฐเจธเจผเจ เจฒเฉเจกเจฟเฉฐเจ เจเจพเจฐเจจ เจเฉฑเจ เจฎเฉเจฎเฉเจฐเฉ เจเจชเจค เจจเจพเจฒ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจเฅคเจตเจฟเจเฉ เจฒเฉเจ ,Habrรฉ 'เจคเฉ เจฒเฉเจ .COBYLA
โ เจฐเฉเจเจฟเจ เจ เจจเฉเจฎเจพเจจ เจฆเฉเจเจฐเจพ MARE เจธเฉเจฎเจค เจ เจจเฉเจเฉเจฒเจจ, เจฒเฉเจจเฉเจ เจฐ เจ เจจเฉเจฎเจพเจจ เจฆเฉ เจจเจพเจฒ เจธเฉเจฎเจค เจ เจจเฉเจเฉเจฒเจจ (เจเฉเจฐเฉเจกเฉเจเจเจ เจเจฃเจจเจพ เจคเฉเจ เจฌเจฟเจจเจพเจ)เฅคเจตเจฟเจเฉ เจฒเฉเจ .
เจเฉเจฃเฉ เจเจ เจตเจฟเจงเฉ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจฟเจเจ, เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจธเจผเจฐเจคเจพเจ เจ เจคเฉ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจ:
- เจเจฒเจพเจธ เจเจฌเจเฉเจเจ
Bounds
เจคเจฐเฉเจเจฟเจเจ เจฒเจ L-BFGS-B, TNC, SLSQP, trust-constr; - เจธเฉเจเฉ
(min, max)
เจเจธเฉ เจขเฉฐเจเจพเจ เจฒเจ L-BFGS-B, TNC, SLSQP, เจเจฐเฉฑเจธเจ-เจเฉฐเจเจฐ; - เจเฉฑเจ เจตเจธเจคเฉ เจเจพเจ เจตเจธเจคเฉเจเจ เจฆเฉ เจธเฉเจเฉ
LinearConstraint
,NonlinearConstraint
COBYLA, SLSQP, เจเจฐเฉฑเจธเจ-เจเฉฐเจเจฐ เจตเจฟเจงเฉเจเจ เจฒเจ; - เจธเจผเจฌเจฆเจเฉเจธเจผ เจเจพเจ เจธเจผเจฌเจฆเจเฉเจธเจผเจพเจ เจฆเฉ เจธเฉเจเฉ
{'type':str, 'fun':callable, 'jac':callable,opt, 'args':sequence,opt}
COBYLA, SLSQP เจตเจฟเจงเฉเจเจ เจฒเจเฅค
เจฒเฉเจ เจฆเฉ เจฐเฉเจชเจฐเฉเจเจพ:
1) เจตเจธเจคเฉเจเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจจเจฟเจธเจผเจเจฟเจค เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฆเฉ เจจเจพเจฒ เจเจฐเฉฑเจธเจ เจเฉเจคเจฐ (เจตเจฟเจงเฉ = "เจเจฐเจธเจ-เจเฉฐเจธเจเฉเจฐ") เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจผเจฐเจค เจ
เจจเฉเจเฉเจฒ เจ
เจจเฉเจเฉเจฒเจจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจฆเฉ เจตเจฐเจคเฉเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉเฅค Bounds
, LinearConstraint
, NonlinearConstraint
;
2) เจธเจผเจฌเจฆเจเฉเจธเจผ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจคเฉเจ เจเฉฑเจ เจตเจฐเจ เจตเจฟเจงเฉ (เจตเจฟเจงเฉ = "SLSQP") เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเฉเจฐเจฎเจตเจพเจฐ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉเฅค {'type', 'fun', 'jac', 'args'}
;
3) เจตเฉเจฌ เจธเจเฉเจกเฉเจ เจฆเฉ เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจจเจฟเจฐเจฎเจฟเจค เจเจคเจชเจพเจฆเจพเจ เจฆเฉ เจ
เจจเฉเจเฉเจฒเจจ เจฆเฉ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเฉเฅค
เจเฉฐเจกเฉเจธเจผเจจเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจตเจฟเจงเฉ="trust-constr"
เจตเจฟเจงเฉ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพ trust-constr
เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ
เจเจฎ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฑเจเฉ-เจเฉฑเจ เจฒเฉฑเจญเจฃ เจฆเฉ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจเจฃเจฟเจคเจฟเจ เจธเฉเจคเจฐ:
เจธเจเจผเจค เจธเจฎเจพเจจเจคเจพ เจธเฉเจฎเจพเจตเจพเจ เจฒเจ, เจนเฉเจ เจฒเฉ เจธเฉเจฎเจพ เจเจชเจฐเจฒเฉ เจธเฉเจฎเจพ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจธเฉเฉฑเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ .
เจเฉฑเจ เจคเจฐเจซเจพ เจฐเฉเจเจพเจตเจ เจฒเจ, เจเจชเจฐเจฒเฉ เจเจพเจ เจนเฉเจ เจฒเฉ เจธเฉเจฎเจพ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉ เจเจ เจนเฉ np.inf
เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเจฟเฉฐเจจเฉเจน เจฆเฉ เจจเจพเจฒ.
เจฆเฉ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจเฉฑเจ เจเจพเจฃเฉ-เจชเจเจพเจฃเฉ เจฐเฉเจธเจจเจฌเจฐเฉเจ เจซเฉฐเจเจธเจผเจจ เจฆเจพ เจเฉฑเจเฉ-เจเฉฑเจ เจชเจคเจพ เจฒเจเจพเจเจฃเจพ เจเจผเจฐเฉเจฐเฉ เจนเฉ:
เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเจธเจฆเฉ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉ เจกเฉเจฎเฉเจจ 'เจคเฉ เจจเจฟเจฎเจจเจฒเจฟเจเจค เจชเจพเจฌเฉฐเจฆเฉเจเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจ:
เจธเจพเจกเฉ เจเฉเจธ เจตเจฟเฉฑเจ, เจฌเจฟเฉฐเจฆเฉ 'เจคเฉ เจเฉฑเจ เจตเจฟเจฒเฉฑเจเจฃ เจนเฉฑเจฒ เจนเฉ , เจเจฟเจธ เจฒเจ เจธเจฟเจฐเจซ เจชเจนเจฟเจฒเฉ เจ
เจคเฉ เจเฉเจฅเฉ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจตเฉเจง เจนเจจเฅค
เจเจ เจ
เจธเฉเจ เจนเฉเจ เจพเจ เจคเฉเจ เจเฉฑเจชเจฐ เจคเฉฑเจ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจตเจฟเฉฑเจเฉเจ เจฒเฉฐเจเฉเจ เจ
เจคเฉ เจตเฉเจเฉเจ เจเจฟ เจ
เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเจเจฟเจชเฉ เจตเจฟเฉฑเจ เจเจฟเจตเฉเจ เจฒเจฟเจ เจธเจเจฆเฉ เจนเจพเจเฅค
เจชเฉเจฐเจคเจฟเจฌเฉฐเจง ะธ เจเจ เจเจธเจจเฉเฉฐ Bounds เจเจฌเจเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉเจเฅค
from scipy.optimize import Bounds
bounds = Bounds ([0, -0.5], [1.0, 2.0])
เจชเฉเจฐเจคเจฟเจฌเฉฐเจง ะธ เจเจ เจเจธเจจเฉเฉฐ เจฐเฉเจเจฟเจ เจฐเฉเจช เจตเจฟเฉฑเจ เจฒเจฟเจเฉเจ:
เจเจ เจเจนเจจเจพเจ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจจเฉเฉฐ เจเฉฑเจ เจฒเฉเจจเฉเจ เจฐ เจเฉฐเจธเจเฉเจฐเฉเจเจ เจเจฌเจเฉเจเจ เจตเจเฉเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉเจ:
import numpy as np
from scipy.optimize import LinearConstraint
linear_constraint = LinearConstraint ([[1, 2], [2, 1]], [-np.inf, 1], [1, 1])
เจ เจคเฉ เจ เฉฐเจค เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉเจฐ-เจฐเฉเจเจฟเจ เจฐเฉเจเจพเจตเจ:
เจ เจธเฉเจ เจเจธ เจฐเฉเจเจพเจตเจ เจฒเจ เจเฉเจเฉเจฌเฉเจ เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเฉฑเจ เจเจฐเจฌเจฟเจเจฐเฉเจฐเฉ เจตเฉเจเจเจฐ เจฆเฉ เจจเจพเจฒ เจนเฉเจธเฉเจ เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจฆเจพ เจเฉฑเจ เจฐเฉเจเจฟเจ เจธเฉเจฎเฉเจฒ :
เจนเฉเจฃ เจ
เจธเฉเจ เจเฉฑเจ เจตเจธเจคเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจฐ-เจฐเฉเจเจฟเจ เจฐเฉเจเจพเจตเจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเจพเจ NonlinearConstraint
:
from scipy.optimize import NonlinearConstraint
def cons_f(x):
return [x[0]**2 + x[1], x[0]**2 - x[1]]
def cons_J(x):
return [[2*x[0], 1], [2*x[0], -1]]
def cons_H(x, v):
return v[0]*np.array([[2, 0], [0, 0]]) + v[1]*np.array([[2, 0], [0, 0]])
nonlinear_constraint = NonlinearConstraint(cons_f, -np.inf, 1, jac=cons_J, hess=cons_H)
เจเฉเจเจฐ เจเจเจพเจฐ เจตเฉฑเจกเจพ เจนเฉ, เจคเจพเจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจจเฉเฉฐ เจธเจชเจพเจฐเจธ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
from scipy.sparse import csc_matrix
def cons_H_sparse(x, v):
return v[0]*csc_matrix([[2, 0], [0, 0]]) + v[1]*csc_matrix([[2, 0], [0, 0]])
nonlinear_constraint = NonlinearConstraint(cons_f, -np.inf, 1,
jac=cons_J, hess=cons_H_sparse)
เจเจพเจ เจเฉฑเจ เจตเจธเจคเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ LinearOperator
:
from scipy.sparse.linalg import LinearOperator
def cons_H_linear_operator(x, v):
def matvec(p):
return np.array([p[0]*2*(v[0]+v[1]), 0])
return LinearOperator((2, 2), matvec=matvec)
nonlinear_constraint = NonlinearConstraint(cons_f, -np.inf, 1,
jac=cons_J, hess=cons_H_linear_operator)
เจนเฉเจธเฉเจ
เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจฌเจนเฉเจค เจฎเจฟเจนเจจเจค เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเฉเจธเฉเจ เจเฉฑเจ เจเจฒเจพเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ HessianUpdateStrategy
BFGS
ะธ SR1
.
from scipy.optimize import BFGS
nonlinear_constraint = NonlinearConstraint(cons_f, -np.inf, 1, jac=cons_J, hess=BFGS())
เจธเฉเจฎเจฟเจค เจ เฉฐเจคเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจนเฉเจธเฉเจ เจจ เจฆเฉ เจเจฃเจจเจพ เจตเฉ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ:
nonlinear_constraint = NonlinearConstraint (cons_f, -np.inf, 1, jac = cons_J, hess = '2-point')
เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฒเจ เจเฉเจเฉเจฌเฉเจ เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจจเฉเฉฐ เจตเฉ เจธเฉเจฎเจฟเจค เจ เฉฐเจคเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจฟเจฃเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจธเฉเจฎเจฟเจค เจ เฉฐเจคเจฐเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจนเฉเจธเฉเจ เจจ เจฎเฉเจเฉเจฐเจฟเจเจธ เจฆเฉ เจเจฃเจจเจพ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค Hessian เจจเฉเฉฐ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจตเจเฉเจ เจเจพเจ HessianUpdateStrategy เจเจฒเจพเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
nonlinear_constraint = NonlinearConstraint (cons_f, -np.inf, 1, jac = '2-point', hess = BFGS ())
เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจนเฉฑเจฒ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
from scipy.optimize import minimize
from scipy.optimize import rosen, rosen_der, rosen_hess, rosen_hess_prod
x0 = np.array([0.5, 0])
res = minimize(rosen, x0, method='trust-constr', jac=rosen_der, hess=rosen_hess,
constraints=[linear_constraint, nonlinear_constraint],
options={'verbose': 1}, bounds=bounds)
print(res.x)
`gtol` termination condition is satisfied.
Number of iterations: 12, function evaluations: 8, CG iterations: 7, optimality: 2.99e-09, constraint violation: 1.11e-16, execution time: 0.033 s.
[0.41494531 0.17010937]
เจเฉ เจเจฐเฉเจฐเฉ เจนเฉเจตเฉ, เจนเฉเจธเฉเจ เจจ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจ เจฒเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ LinearOperator เจเจฒเจพเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ
def rosen_hess_linop(x):
def matvec(p):
return rosen_hess_prod(x, p)
return LinearOperator((2, 2), matvec=matvec)
res = minimize(rosen, x0, method='trust-constr', jac=rosen_der, hess=rosen_hess_linop,
constraints=[linear_constraint, nonlinear_constraint],
options={'verbose': 1}, bounds=bounds)
print(res.x)
เจเจพเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจฐเจพเจนเฉเจ เจนเฉเจธเฉเจ
เจจ เจ
เจคเฉ เจเฉฑเจ เจเจฐเจฌเจฟเจเจฐเฉเจฐเฉ เจตเฉเจเจเจฐ เจฆเจพ เจเฉเจฃเจจเจซเจฒ hessp
:
res = minimize(rosen, x0, method='trust-constr', jac=rosen_der, hessp=rosen_hess_prod,
constraints=[linear_constraint, nonlinear_constraint],
options={'verbose': 1}, bounds=bounds)
print(res.x)
เจตเจฟเจเจฒเจชเจ เจคเฉเจฐ 'เจคเฉ, เจ
เจจเฉเจเฉเจฒเจฟเจค เจเฉเจคเฉ เจเจพ เจฐเจนเฉ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจชเจนเจฟเจฒเฉ เจ
เจคเฉ เจฆเฉเจเฉ เจกเฉเจฐเฉเจตเฉเจเจฟเจตเจพเจ เจฆเจพ เจ
เจจเฉเจฎเจพเจจ เจฒเจเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจนเฉเจธเฉเจ
เจจ เจจเฉเฉฐ เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจ
เจจเฉเจฎเจพเจจเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ SR1
(เจ
เจฐเจง-เจจเจฟเจเจเฉเจจเฉเจ
เจจ เจ
เจจเฉเจฎเจพเจจ)เฅค เจเจฐเฉเจกเฉเจเจเจ เจจเฉเฉฐ เจธเฉเจฎเจฟเจค เจ
เฉฐเจคเจฐเจพเจ เจฆเฉเจเจฐเจพ เจ
เจจเฉเจฎเจพเจจเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
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)
เจเฉฐเจกเฉเจธเจผเจจเจฒ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจตเจฟเจงเฉ="SLSQP"
SLSQP เจตเจฟเจงเฉ เจจเฉเฉฐ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเฉฑเจ เจเจฐเจจ เจฆเฉเจเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉ:
เจเจฟเฉฑเจฅเฉ ะธ - เจธเจฎเจพเจจเจคเจพเจตเจพเจ เจเจพเจ เจ เจธเจฎเจพเจจเจคเจพเจตเจพเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจตเจพเจฒเฉ เจธเจฎเฉเจเจฐเจจเจพเจ เจฆเฉ เจธเฉเจเจเจพเจเจ เจฆเฉ เจธเฉเฉฑเจเฅค - เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉ เจกเฉเจฎเฉเจจ เจฒเจ เจนเฉเจ เจฒเฉ เจ เจคเฉ เจเฉฑเจชเจฐเจฒเฉ เจธเฉเจฎเจพเจตเจพเจ เจฆเฉ เจธเฉเฉฑเจเฅค
เจฒเฉเจจเฉเจ
เจฐ เจ
เจคเฉ เจเฉเจฐ-เจฒเฉเจจเฉเจ
เจฐ เจฐเฉเจเจพเจตเจเจพเจ เจจเฉเฉฐ เจเฉเฉฐเจเฉเจเจ เจฆเฉ เจจเจพเจฒ เจธเจผเจฌเจฆเจเฉเจธเจผ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจฐเจฃเจจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ 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])
}
เจจเจฟเจเจจเจคเจฎ เจฆเฉ เจเฉเจ เจนเฉเจ เจฒเจฟเจเฉ เจ เจจเฉเจธเจพเจฐ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ:
x0 = np.array([0.5, 0])
res = minimize(rosen, x0, method='SLSQP', jac=rosen_der,
constraints=[eq_cons, ineq_cons], options={'ftol': 1e-9, 'disp': True},
bounds=bounds)
print(res.x)
Optimization terminated successfully. (Exit mode 0)
Current function value: 0.34271757499419825
Iterations: 4
Function evaluations: 5
Gradient evaluations: 4
[0.41494475 0.1701105 ]
เจ เจจเฉเจเฉเจฒเจจ เจเจฆเจพเจนเจฐเจจ
เจชเฉฐเจเจตเฉเจ เจคเจเจจเฉเจเฉ เจขเจพเจเจเฉ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒเฉ เจฆเฉ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจ, เจเจ เจเฉฑเจ เจตเฉเจฌ เจธเจเฉเจกเฉเจ เจฆเฉ เจเจฆเจพเจนเจฐเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจคเจชเจพเจฆเจจ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจจเฉเฉฐ เจตเฉเจเฉเจ, เจเฉ เจธเจพเจกเฉ เจฒเจ เจเฉฑเจ เจเฉเจเฉ เจชเจฐ เจธเจฅเจฟเจฐ เจเจฎเจฆเจจ เจฒเจฟเจเจเจเจฆเจพ เจนเฉ. เจเจ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจเฉฑเจ เจเฉเจฒเฉ เจฆเฉ เจจเจฟเจฐเจฆเฉเจธเจผเจ เจตเจเฉเจ เจเจฒเจชเจจเจพ เจเจฐเฉเจ เจเฉ เจคเจฟเฉฐเจจ เจเจฟเจธเจฎ เจฆเฉ เจเจคเจชเจพเจฆ เจชเฉเจฆเจพ เจเจฐเจฆเฉ เจนเฉ:
- x0 - เจฒเฉเจเจกเจฟเฉฐเจ เจชเฉฐเจจเจฟเจเจ เจจเฉเฉฐ เจตเฉเจเจฃเจพ, 10 tr เจคเฉเจ.
- x1 - เจเจพเจฐเจชเฉเจฐเฉเจ เจตเฉเจฌเจธเจพเจเจเจพเจ, 20 tr เจคเฉเจ.
- x2 - เจเจจเจฒเจพเจเจจ เจธเจเฉเจฐ, 30 tr เจคเฉเจ.
เจธเจพเจกเฉ เจฆเฉเจธเจคเจพเจจเจพ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ เจเฉเจฎ เจตเจฟเฉฑเจ เจเจพเจฐ เจเฉเจจเฉเจ เจฐ, เจฆเฉ เจฎเจฟเจกเจฒ เจ เจคเฉ เจเฉฑเจ เจธเฉเจจเฉเจ เจฐ เจธเจผเจพเจฎเจฒ เจนเจจเฅค เจเจนเจจเจพเจ เจฆเจพ เจฎเจนเฉเจจเจพเจตเจพเจฐ เจเฉฐเจฎ เจเจฐเจจ เจฆเจพ เจธเจฎเจพเจ เจซเฉฐเจก:
- เจเฉเจจ:
4 * 150 = 600 ัะตะป * ัะฐั
, - เจฎเฉฑเจง:
2 * 150 = 300 ัะตะป * ัะฐั
, - เจธเฉเจจเฉเจ
เจฐ:
150 ัะตะป * ัะฐั
.
เจชเจนเจฟเจฒเฉ เจเจชเจฒเจฌเจง เจเฉเจจเฉเจ เจฐ เจจเฉเฉฐ เจเฉฑเจ เจเจฟเจธเจฎ (x0, x1, x2), เจฎเฉฑเจง - (10, 20, 30), เจธเฉเจจเฉเจ เจฐ - (7, 15, 20) เจฆเฉ เจเฉฑเจ เจธเจพเจเจ เจฆเฉ เจตเจฟเจเจพเจธ เจ เจคเฉ เจคเจพเจเจจเจพเจคเฉ 'เจคเฉ (5, 10, 15) เจเฉฐเจเฉ เจเจฐเจ เจเจฐเจจ เจฆเจฟเจเฅค ) เจคเฉเจนเจพเจกเฉ เจเฉเจตเจจ เจฆเฉ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจธเจฎเฉเจ เจฆเฉ เจเฉฐเจเฉเฅค
เจเจฟเจธเฉ เจตเฉ เจเจฎ เจจเจฟเจฐเจฆเฉเจธเจผเจ เจฆเฉ เจคเจฐเฉเจนเจพเจ, เจ
เจธเฉเจ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจฎเจนเฉเจจเจพเจตเจพเจฐ เจฒเจพเจญ เจฒเฉเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจเฅค เจธเจซเจฒเจคเจพ เจฆเจพ เจชเจนเจฟเจฒเจพ เจเจฆเจฎ เจเจฆเฉเจธเจผ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจฒเจฟเจเจฃเจพ เจนเฉ value
เจชเฉเจฐเจคเฉ เจฎเจนเฉเจจเจพ เจชเฉเจฆเจพ เจเฉเจคเฉ เจเจคเจชเจพเจฆเจพเจ เจคเฉเจ เจเจฎเจฆเจจ เจฆเฉ เจฎเจพเจคเจฐเจพ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ:
def value(x):
return - 10*x[0] - 20*x[1] - 30*x[2]
เจเจน เจเฉเจ เจเจฒเจคเฉ เจจเจนเฉเจ เจนเฉ; เจ เจงเจฟเจเจคเจฎ เจฆเฉ เจเฉเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจเจฆเฉเจธเจผ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจเจฒเจ เจเจฟเฉฐเจจเฉเจน เจจเจพเจฒ เจเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจ เจเจฒเจพ เจเจฆเจฎ เจธเจพเจกเฉ เจเจฐเจฎเจเจพเจฐเฉเจเจ เจจเฉเฉฐ เจเจผเจฟเจเจฆเจพ เจเฉฐเจฎ เจเจฐเจจ เจคเฉเจ เจฐเฉเจเจฃเจพ เจ เจคเฉ เจเฉฐเจฎ เจฆเฉ เจเฉฐเจเจฟเจเจ 'เจคเฉ เจชเจพเจฌเฉฐเจฆเฉเจเจ เจฒเจเจพเจเจฃเจพ เจนเฉ:
เจฌเจฐเจพเจฌเจฐ เจเฉ เจนเฉ:
ineq_cons = {'type': 'ineq',
'fun': lambda x: np.array ([600 - 10 * x [0] - 20 * x [1] - 30 * x[2],
300 - 7 * x [0] - 15 * x [1] - 20 * x[2],
150 - 5 * x [0] - 10 * x [1] - 15 * x[2]])
}
เจเฉฑเจ เจฐเจธเจฎเฉ เจชเจพเจฌเฉฐเจฆเฉ เจเจน เจนเฉ เจเจฟ เจเจคเจชเจพเจฆ เจเจเจเจชเฉเฉฑเจ เจธเจฟเจฐเจซ เจธเจเจพเจฐเจพเจคเจฎเจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ:
bnds = Bounds ([0, 0, 0], [np.inf, np.inf, np.inf])
เจ
เจคเฉ เจ
เฉฐเจค เจตเจฟเฉฑเจ, เจธเจญ เจคเฉเจ เจเฉเจฒเจพเจฌเฉ เจงเจพเจฐเจจเจพ เจเจน เจนเฉ เจเจฟ เจเฉฑเจ เจเฉเจฎเจค เจ
เจคเฉ เจเฉฑเจ เจเฉเจฃเจตเฉฑเจคเจพ เจฆเฉ เจเจพเจฐเจจ, เจธเฉฐเจคเฉเจธเจผเจ เจเจพเจนเจเจพเจ เจฆเฉ เจเฉฑเจ เจเจคเจพเจฐ เจธเจพเจกเฉ เจฒเจ เจฒเจเจพเจคเจพเจฐ เจฒเจพเจเจจ เจตเจฟเฉฑเจ เจนเฉ. เจ
เจธเฉเจ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจธเฉเจฒเจเจพเจเจฃ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจฎเจพเจธเจฟเจ เจเจคเจชเจพเจฆเจจ เจฆเฉ เจฎเจพเจคเจฐเจพ เจเฉเจฆ เจเฉเจฃ เจธเจเจฆเฉ เจนเจพเจ scipy.optimize
:
x0 = np.array([10, 10, 10])
res = minimize(value, x0, method='SLSQP', constraints=ineq_cons, bounds=bnds)
print(res.x)
[7.85714286 5.71428571 3.57142857]
เจเจ เจชเฉเจฐเจจ เจธเฉฐเจเจฟเจเจตเจพเจ เจจเฉเฉฐ เจขเจฟเฉฑเจฒเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉเจฒ เจเจฐเฉเจ เจ
เจคเฉ เจเจคเจชเจพเจฆเจพเจ เจฆเฉ เจเฉฑเจ เจ
เจจเฉเจเฉเจฒ เจตเฉฐเจก เจฆเฉ เจจเจพเจฒ เจฐเฉเจ
เจฐเจพเจ เจฆเฉ เจฎเจพเจธเจฟเจ เจฒเฉเจก เจฆเฉ เจเจฃเจจเจพ เจเจฐเฉเจ x = (8, 6, 3)
:
- เจเฉเจจ:
8 * 10 + 6 * 20 + 3 * 30 = 290 ัะตะป * ัะฐั
; - เจฎเฉฑเจง:
8 * 7 + 6 * 15 + 3 * 20 = 206 ัะตะป * ัะฐั
; - เจธเฉเจจเฉเจ
เจฐ:
8 * 5 + 6 * 10 + 3 * 15 = 145 ัะตะป * ัะฐั
.
เจธเจฟเฉฑเจเจพ: เจจเจฟเจฐเจฆเฉเจธเจผเจ เจจเฉเฉฐ เจเจธเจฆเฉ เจเฉฐเจเฉ-เจนเฉฑเจเจฆเจพเจฐ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ, 8 เจฒเฉเจเจกเจฟเฉฐเจ เจชเฉฐเจจเฉ, 6 เจฎเฉฑเจงเจฎ เจเจเจพเจฐ เจฆเฉเจเจ เจธเจพเจเจเจพเจ เจ เจคเฉ 3 เจธเจเฉเจฐ เจชเฉเจฐเจคเฉ เจฎเจนเฉเจจเจพ เจฌเจฃเจพเจเจฃเจพ เจ เจจเฉเจเฉเจฒ เจนเฉเฅค เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจธเฉเจจเฉเจ เจฐ เจจเฉเฉฐ เจฎเจธเจผเฉเจจ เจคเฉเจ เจเฉฑเจชเจฐ เจฆเฉเจเฉ เจฌเจฟเจจเจพเจ เจนเจฒ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจฎเจฟเจกเจฒเจพเจ เจฆเจพ เจญเจพเจฐ เจฒเจเจญเจ 2/3 เจนเฉเจตเฉเจเจพ, เจเฉเจจเฉเจ เจฐ เจ เฉฑเจงเฉ เจคเฉเจ เจเฉฑเจเฅค
เจธเจฟเฉฑเจเจพ
เจฒเฉเจ เจชเฉเจเฉเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจฌเฉเจจเจฟเจเจฆเฉ เจคเจเจจเฉเจเจพเจ เจฆเฉ เจฐเฉเจชเจฐเฉเจเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉ scipy.optimize
, เจธเจผเจฐเจคเฉเจ เจเฉฑเจเฉ-เจเฉฑเจ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจจเจฟเฉฑเจเฉ เจคเฉเจฐ 'เจคเฉ เจฎเฉเจ เจตเจฐเจคเจฆเจพ เจนเจพเจ scipy
เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจ
เจเจพเจฆเจฎเจฟเจ เจเจฆเฉเจธเจผเจพเจ เจฒเจ, เจเจธ เจฒเจ เจฆเจฟเฉฑเจคเฉ เจเจ เจเจฆเจพเจนเจฐเจฃ เจ
เจเจฟเจนเฉ เจนเจพเจธเจฐเจธ เจเจฟเจธเจฎ เจฆเฉ เจนเฉเฅค
เจฌเจนเฉเจค เจธเจพเจฐเฉเจเจ เจฅเจฟเจเจฐเฉ เจ
เจคเฉ เจตเจฐเจเฉเจ
เจฒ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฒเฉฑเจญเฉเจเจ เจเจพ เจธเจเจฆเฉเจเจ เจนเจจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, I.L. Akulich เจฆเฉ เจเจฟเจคเจพเจฌ "เจเจฆเจพเจนเจฐเจจเจพเจ เจ
เจคเฉ เจธเจฎเฉฑเจธเจฟเจเจตเจพเจ เจตเจฟเฉฑเจ เจเจฃเจฟเจคเจ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ" เจตเจฟเฉฑเจเฅค เจตเจงเฉเจฐเฉ เจนเจพเจฐเจกเจเฉเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ scipy.optimize
เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจธเจฎเฉเจน เจคเฉเจ เจเฉฑเจ 3D เจขเจพเจเจเจพ เจฌเจฃเจพเจเจฃ เจฒเจ (
เจเจพเจฃเจเจพเจฐเฉ เจฆเจพ เจฎเฉเฉฑเจ เจธเจฐเฉเจค เจนเฉ scipy
เจธเจตเจพเจเจค เจนเฉ
ะกะฟะฐัะธะฑะพ
เจธเจฐเฉเจค: www.habr.com