python解決多變量最優化問題


上一次我們解決了單變量最優化問題,說實話有點簡單,今天來個復雜點的。

多變量最優化
問題:
彩電商准備推出兩種產品,19寸彩電,建議價格339美元(成本195美元),21寸彩電,建議價格399美元(成本225美元),
固定成本400000美元,已知每售出一台彩電,會導致彩電價格下降1美分,而且每售出一台19寸彩電,會導致21寸彩電下降0.4美分;
每售出一台21寸彩電,會導致19寸彩電下降0.3美分,請問每台彩電應該生產多少台才能達到最大收益。

from sympy import *
from sympy.plotting import plot3d

"""
多變量最優化
問題:
彩電商准備推出兩種產品,19寸彩電,建議價格339美元(成本195美元),21寸彩電,建議價格399美元(成本225美元),
固定成本400000美元,已知每售出一台彩電,會導致彩電價格下降1美分,而且每售出一台19寸彩電,會導致21寸彩電下降0.4美分;
每售出一台21寸彩電,會導致19寸彩電下降0.3美分,請問每台彩電應該生產多少台才能達到最大收益。
"""
x1 = symbols('x1')
x2 = symbols('x2')
fx = (339 - 0.01 * x1 - 0.003 * x2) * x1 + (399 - 0.01 * x2 - 0.004 * x1) * x2 - (400000 + 195 * x1 + 225 * x2)

# 分別對x1/x2求偏導數
expr1 = diff(fx, x1)
expr2 = diff(fx, x2)
print(expr1)
print(expr2)
# 解方程組x1=4735,x2= 7043
x1x2 = solve([expr1, expr2], [x1, x2])
nx1, nx2 = round(x1x2[x1]), round(x1x2[x2])
# 將x1,x2代入原方程得到最大收益=553641
result = fx.evalf(subs={x1: nx1, x2: nx2})
print(round(result))

# 是一個曲面
plot3d(fx, (x1, 0, 10000), (x2, 0, 10000))

看一下圖長啥樣,加深一下印象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM