zoukankan      html  css  js  c++  java
  • 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))

    看一下图长啥样,加深一下印象

     

  • 相关阅读:
    Linux常用命令学习
    LA 6437 Power Plant (prim最小生成树)
    Atitit.提升稳定性-----分析内存泄漏PermGen OOM跟解决之道...java
    hdu 1248 寒冰王座
    数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)
    X-射线:探索原子世界的利器
    关于sql中的with(nolock)
    Netty In Action中文版
    抓包报文分析
    POJ 1562 Oil Deposits
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15494571.html
Copyright © 2011-2022 走看看