
SciPy (āĻāĻā§āĻāĻžāϰāĻŋāϤ āϏāĻžāĻ āĻĒāĻžāĻ) āĻšāϞ āĻāĻāĻāĻŋ āύāĻŽā§āĻĒāĻŋ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻŖāĻŋāϤ āĻĒā§āϝāĻžāĻā§āĻ āϝāĻžāϤ⧠C āĻāĻŦāĻ Fortran āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻĨāĻžāĻā§āĨ¤ SciPy āĻāĻĒāύāĻžāϰ āĻāύā§āĻāĻžāϰā§āĻā§āĻāĻŋāĻ āĻĒāĻžāĻāĻĨāύ āϏā§āĻļāύāĻā§ MATLAB, IDL, Octave, R, āĻŦāĻž SciLab-āĻāϰ āĻŽāϤ⧠āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻĄā§āĻāĻž āĻŦāĻŋāĻā§āĻāĻžāύ āĻĒāϰāĻŋāĻŦā§āĻļā§ āĻĒāϰāĻŋāĻŖāϤ āĻāϰā§āĨ¤
āĻāĻ āύāĻŋāĻŦāύā§āϧā§, āĻāĻŽāϰāĻž āĻāĻžāĻŖāĻŋāϤāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻāϝāĻŧā§āϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻā§āĻļāϞāĻā§āϞāĻŋ āĻĻā§āĻāĻŦ - scipy.optimize āĻĒā§āϝāĻžāĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āĻāĻāĻāĻŋ āϏā§āĻā§āϞāĻžāϰ āĻĢāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāĨ¤ āĻ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŋāϤ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻ ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāϞā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ . āĻšā§āϞā§āĻĒ() āĻāĻŽāĻžāύā§āĻĄ, āĻļāĻŋāĻĢāĻ+āĻā§āϝāĻžāĻŦ āĻŦāĻž āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāϰā§āĻŦāĻĻāĻž āϏā§āĻāĻŋāĻĒāĻŋ āĻĢāĻžāĻāĻļāύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻŦāĻ āĻāĻĒ-āĻā§-āĻĄā§āĻ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻĒāĻžāĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠.
āĻā§āĻŽāĻŋāĻāĻž
scipy.optimize āĻĒā§āϝāĻžāĻā§āĻā§ āĻļāϰā§āϤāϏāĻžāĻĒā§āĻā§āώ āĻāĻŦāĻ āϏā§āĻŽāĻžāĻšā§āύ āĻāĻāϝāĻŧ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻĢāĻžāĻāĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϏāϰāĻŦāϰāĻžāĻš āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ minimize(). āϝāĻžāĻāĻšā§āĻ, āĻāĻāĻŋ āĻāĻžāύāĻž āϝāĻžāϝāĻŧ āϝ⧠āϏāĻŽāϏā§āϤ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻā§āύāĻ āϏāϰā§āĻŦāĻāύā§āύ āĻĒāĻĻā§āϧāϤāĻŋ āύā§āĻ, āϤāĻžāĻ āĻāĻāĻāĻŋ āĻĒāϰā§āϝāĻžāĻĒā§āϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒāĻāύā§āĻĻ, āϏāϰā§āĻŦāĻĻāĻž āĻšāĻŋāϏāĻžāĻŦā§, āĻāĻŦā§āώāĻā§āϰ āĻāĻžāĻāϧ⧠āĻĒāĻĄāĻŧā§āĨ¤
āĻāĻĒāϝā§āĻā§āϤ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻ
ā§āϝāĻžāϞāĻāϰāĻŋāĻĻāĻŽ āĻĢāĻžāĻāĻļāύ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻšāϝāĻŧ minimize(..., method="").
āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύā§āϰ āĻļāϰā§āϤāĻžāϧā§āύ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύā§āϰ āĻāύā§āϝ, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋāϰ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāĻĒāϞāĻŦā§āϧ:
trust-constrâ āĻāϤā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻ āĻā§āĻāϞ⧠āĻāĻāĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧ āϏāϰā§āĻŦāύāĻŋāĻŽā§āύ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāϰā§āύāĨ¤ , ;SLSQPâ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϏāĻš āĻ āύā§āĻā§āϰāĻŽāĻŋāĻ āĻĻā§āĻŦāĻŋāĻāĻžāϤ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ, āϞā§āϝāĻžāĻā§āϰā§āĻā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āύāĻŋāĻāĻāύāĻŋāϝāĻŧāĻžāύ āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ .TNC- āϏāĻā§āĻā§āĻāĻŋāϤ āύāĻŋāĻāĻāύ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ, āϏā§āĻŽāĻŋāϤ āϏāĻāĻā§āϝāĻ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ, āĻŦāĻŋāĻĒā§āϞ āϏāĻāĻā§āϝāĻ āϏā§āĻŦāĻžāϧā§āύ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏāĻš āĻ āϰā§āĻāĻŋāĻ āĻĢāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻāĻžāϞāĨ¤ .L-BFGS-Bâ BroydenâFletcherâGoldfarbâShanno āĻĻāϞā§āϰ āĻāĻāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ, āϝāĻž āĻšā§āϏāĻŋāϝāĻŧāĻžāύ āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ āĻĨā§āĻā§ āĻā§āĻā§āĻāϰā§āϰ āĻāĻāĻļāĻŋāĻ āϞā§āĻĄ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻžāϰāĻŖā§ āĻŽā§āĻŽāϰāĻŋāϰ āĻāϰāĻ āĻāĻŽāĻŋāϝāĻŧā§ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ , .COBYLAâ MARE āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āϞāĻŋāύāĻŋāϝāĻŧāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰā§āĻā§āϏāĻŋāĻŽā§āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž, āϰā§āĻāĻŋāĻ āĻāύā§āĻŽāĻžāύāĻŋāĻāϤāĻžāϰ āϏāĻžāĻĨā§ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ (āĻā§āϰā§āĻĄāĻŋāϝāĻŧā§āύā§āĻ āĻāĻŖāύāĻž āĻāĻžāĻĄāĻŧāĻž)āĨ¤ .
āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻļāϰā§āϤ āĻāĻŦāĻ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§:
- āĻā§āϞāĻžāϏ āĻ
āĻŦāĻā§āĻā§āĻ
BoundsL-BFGS-B, TNC, SLSQP, āĻŦāĻŋāĻļā§āĻŦāĻžāϏ-āĻāύāϏā§āĻā§āϰ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāύā§āϝ; - āĻā§āϰāĻŽāϤāĻžāϞāĻŋāĻāĻž
(min, max)āĻāĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāύā§āϝ L-BFGS-B, TNC, SLSQP, trust-constr; - āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āĻŦāĻž āĻŦāϏā§āϤā§āϰ āĻāĻāĻāĻŋ āϤāĻžāϞāĻŋāĻāĻž
LinearConstraint,NonlinearConstraintCOBYLA, 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)āĻšā§āϏāĻŋāϝāĻŧāĻžāύ āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ āĻāĻŖāύāĻž āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ
āĻ
āύā§āĻ āĻĒā§āϰāĻā§āώā§āĻāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻā§āϞāĻžāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ . āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻā§āĻļāϞ āĻāĻĒāϞāĻŦā§āϧ: 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 ŅĐĩĐģ * ŅаŅ.
āĻĒā§āϰāĻĨāĻŽ āĻāĻĒāϞāĻŦā§āϧ āĻā§āύāĻŋāϝāĻŧāϰāĻā§ (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
