SciPy (แแแแแแแฅแแแก sai pie) แแ แแก numpy-แแ แแแคแฃแซแแแแฃแแ แแแแแแแขแแแแก แแแแแขแ, แ แแแแแแช แแกแแแ แแแแชแแแก C แแ Fortran แแแแแแแแแแแแก. SciPy แแฅแชแแแก แแฅแแแแก แแแขแแ แแฅแขแแฃแ แแแแแแแก แกแแกแแแก แแแแแชแแแแ แแแชแแแแ แแแแก แกแ แฃแ แแแ แแแแจแ, แ แแแแ แแชแแ MATLAB, IDL, Octave, R แแ SciLab.
แแ แกแขแแขแแแจแ แแแแแแฎแแแแแ แแแแแแแขแแแฃแ แ แแ แแแ แแแแ แแแแก แซแแ แแแแ แขแแฅแแแแแก - แแแ แแแแแ แแแขแแแแแแชแแแก แแแแชแแแแแแก แแแแฎแกแแแก แ แแแแแแแแ แชแแแแแแก แกแแแแแ แฃแแ แคแฃแแฅแชแแแกแแแแก scipy.optimize แแแแแขแแก แแแแแงแแแแแแ. แจแแฃแแฆแฃแแแแ แแแขแแแแแแชแแแก แแแแแ แแแแแแ แฃแแแ แแแแฎแแแฃแแแ
แจแแกแแแแแ
แกแแแ แแ แแแขแแ แคแแแกแ แ แแแแ แช แแแ แแแแแ, แแกแ แจแแฃแแฆแฃแแแแ แแแขแแแแแแชแแแก แแ แแแแแแแแแก แแแแแกแแญแ แแแแ scipy.optimize แแแแแขแจแ แแแชแแแฃแแแ แคแฃแแฅแชแแแ. minimize()
. แแฃแแชแ แชแแแแแแแ, แ แแ แงแแแแ แแ แแแแแแแก แแแแแญแ แแก แฃแแแแแ แกแแแฃแ แ แแแแแแ แแ แแ แกแแแแแก, แแแแขแแ แแแแแแแขแฃแ แ แแแแแแแก แแ แฉแแแแแ, แ แแแแ แช แงแแแแแแแแก, แแแแแแแแ แแก แแฎแ แแแแ แแแแแก.
แจแแกแแแแแแกแ แแแขแแแแแแชแแแก แแแแแ แแแแ แแแแแแแแฃแแแ แคแฃแแฅแชแแแก แแ แแฃแแแแขแแก แแแแแงแแแแแแ minimize(..., method="")
.
แ แแแแแแแแ แชแแแแแแก แคแฃแแฅแชแแแก แแแ แแแแแ แแแขแแแแแแชแแแกแแแแก แฎแแแแแกแแฌแแแแแแ แจแแแแแแ แแแแแแแแแก แแแแฎแแ แชแแแแแแ:
trust-constr
โ แแแซแแแแแ แแแแแแแแ แแแ แแแแแแฃแแ แแแแแแก แ แแแแแแจแ.แแแแ แกแขแแขแแ ,แกแขแแขแแ แฐแแแ แแแ ;SLSQP
โ แแแแแแแแแแ แฃแแ แแแแแ แแขแฃแแ แแ แแแ แแแแ แแแ แจแแแฆแฃแแแแแแ, แแแฃแขแแแแก แแแแแแ แแแแ แแแแแก แกแแกแขแแแแก แแแแฎแกแแแกแแแแก.แแแแ แกแขแแขแแ .TNC
- Truncated Newton แจแแแฆแฃแแฃแแ, แจแแแฆแฃแแฃแแ แ แแแแแแแแแก แแแแแแ แแแ, แแแ แแแ แแ แแฌแ แคแแแ แคแฃแแฅแชแแแแแกแแแแก แแแแ แ แแแแแแแแแ แแแแแฃแแแแแแแแ แชแแแแแแแ.แแแแ แกแขแแขแแ .L-BFGS-B
- แแแแแแ Broyden-Fletcher-Goldfarb-Shanno-แก แแฃแแแแแแ, แแแแฎแแ แชแแแแแแฃแแ แแแฎแกแแแ แแแแก แจแแแชแแ แแแฃแแ แแแฎแแแ แแแแ แฐแแกแแแแฃแ แ แแแขแ แแชแแแแ แแแฅแขแแ แแแแก แแแฌแแแแแ แแแ แแแขแแแ แแแแก แแแแ.แแแแ แกแขแแขแแ ,แกแขแแขแแ แฐแแแ แแแ .COBYLA
โ MARE แจแแแฆแฃแแฃแแ แแแขแแแแแแชแแ แฎแแแแแแแ แแแแฎแแแแแแ, แจแแแฆแฃแแฃแแ แแแขแแแแแแชแแ แฌแ แคแแแ แแแแฎแแแแแแ (แแ แแแแแแขแแก แแแแแแแ แแจแแแแก แแแ แแจแ).แแแแ แกแขแแขแแ .
แแ แฉแแฃแแ แแแแแแแแแ แแแแแแแแแแ แ, แแ แแแแแแแก แแแแแญแ แแก แแแ แแแแแ แแ แจแแแฆแฃแแแแแ แแแแกแฎแแแแแแฃแแแ แแ แแก แแแแแแแแแ:
- แแแแกแแก แแแแแฅแขแ
Bounds
แแแแแแแแแกแแแแก L-BFGS-B, TNC, SLSQP, trust-constr; - แกแแ
(min, max)
แแแแแ แแแแแแแแแกแแแแก L-BFGS-B, TNC, SLSQP, trust-constr; - แแแแแฅแขแ แแ แแแแแฅแขแแแแก แกแแ
LinearConstraint
,NonlinearConstraint
COBYLA, SLSQP, trust-constr แแแแแแแแแกแแแแก; - แแแฅแกแแแแแ แแ แแแฅแกแแแแแแแแก แกแแ
{'type':str, 'fun':callable, 'jac':callable,opt, 'args':sequence,opt}
COBYLA, SLSQP แแแแแแแแแกแแแแก.
แกแขแแขแแแก แแแแแฎแแแ:
1) แแแแแฎแแแแ แแแ แแแแแ แแแขแแแแแแชแแแก แแแแแ แแแแแก แแแแแงแแแแแ แแแแแแก แ แแแแแแจแ (metod=โtrust-constrโ) แแแแแฅแขแแแแก แกแแฎแแ แแแแแแแแฃแแ แจแแแฆแฃแแแแแแ. 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])
แจแแแฆแฃแแแแแ ะธ แแแแแ แแแแฌแแ แแ แฎแแแแแแแ แคแแ แแแ:
แแแแแ แแแแแกแแแฆแแ แแ แแก แจแแแฆแฃแแแแแ, แ แแแแ แช LinearConstraint แแแแแฅแขแ:
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]
แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, Hessian-แแก แแแแแแแแแก แคแฃแแฅแชแแ แจแแแซแแแแ แแแแแกแแแฆแแ แแก 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 แขแ .
- x1 - แแแ แแแ แแขแแฃแแ แแแแกแแแขแแแ, 20 แขแ .
- x2 - แแแแแแ แแแฆแแแแแแ, 30 แขแ .
แฉแแแแ แแแแแแ แฃแแ แกแแแฃแจแแ แแฃแแแ แจแแแแแแ แแแฎแ แฃแแชแ แแกแ, แแ แ แจแฃแ แแ แแ แแ แฃแคแ แแกแ. แแแแ แงแแแแแแแแฃแ แ แกแแแฃแจแแ แแ แแแก แคแแแแ:
- แแแแแกแ:
4 * 150 = 600 ัะตะป * ัะฐั
, - แจแฃแ แ แแชแฎแแแแ:
2 * 150 = 300 ัะตะป * ัะฐั
, - แกแแแแแ แ:
150 ัะตะป * ัะฐั
.
แแแ, แแแ แแแแแ แฎแแแแแกแแฌแแแแแแ แฃแแชแ แแกแแ แแแฎแแ แฏแแก (0, 1, 2) แกแแแแ แแ แแ แขแแแแก (x10, x20, x30), แกแแจแฃแแแ - (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
แฌแแแแแ แแแแแแแแฃแ แ แแแแแแแแกแแแแก, แ แแก แแแแแช แแแชแแแฃแแ แแแแแแแแ แแกแแแ แแแแแแฃแ แ แฎแแกแแแแแกแแ.
แแแแ แ แแแแ แแ แแ แแแ แขแฃแแแฃแ แ แแแแแแแแ แจแแแแซแแแแ แแฎแแแแ, แแแแแแแแแ, แแ. แแแขแ แฐแแ แแแแ แ แแแแแแแชแแ scipy.optimize
3D แกแขแ แฃแฅแขแฃแ แแก แจแแฅแแแ แกแฃแ แแแแแแก แแแแ แแแแแแ (
แแแคแแ แแแชแแแก แซแแ แแแแแ แฌแงแแ แแ scipy
แฒแแแแแ แแงแแก แแฅแแแแ แแแแ แซแแแแแ
แแแแแแแ
แฌแงแแ แ: www.habr.com