如何在python中通过改变参数来优化函数?

2024-10-02 18:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它的参数沿求和方向变化

例如, 求和是一个月(比如说28天)的总订单价格 而且每周价格都在变化

每件商品的价格是 p1-项目1的价格 p2-项目2的价格 p3-项目3的价格

每个星期的价格都不一样,所以 p1w1-第1周第1项的价格 p1w2-第2周第1项的价格 p1w3-第3周第1项的价格 p1w4-第4周第1项的价格

p2w1-第1周第2项的价格 p2w2-第2周第2项的价格…等等…你知道了

所以我想优化的是每周每件商品的购买数量,以最大限度地降低成本。 x1w1-第1周第1项的编号 x1w1-第2周第1项的编号等

x2w1-第1周第2项的数量 等等…你明白了

所以总成本是

合计=(p1w1*x1w1+p1w2*x1w2+p1w3*x1w3+p1w4*x1w4)+ (p2w1*x2w1+p2w2*x2w2+p2w3*x2w3+p2w4*x2w4)+等等……你明白了

我的问题比这更复杂,上面只是对方程的简化,但概念是一样的

我试着在两周之间改变价格

例如,将第1周的价格更改为1000美元,将第2周的价格更改为50美元 我认为优化算法返回的是在第2周购买更多相同的物品,而不是在第1周。但即使价格互换也没有区别,即第1周50美元,第2周1000美元。在这两种情况下,要购买的物品数量保持不变

n = 3
def f(params):
    # Initialisation
    x=np.zeros(n)   
    y=np.zeros(n)
    z=np.zeros(n)
    priceA = [100,50,50]
    priceB = [50,1000,50]
    priceC = [50,25,500]

    x[0],x[1],x[2],y[0],y[1],y[2],z[0],z[1],z[2] = params    

    return  sum([priceA[i]*x[i] + priceB[i]*y[i] + priceC[i]*z[i] for i in range (0,n)])

我期望x、y和z的值在最高价格时最低,在最低价格时最高

上面的代码只是为了简化而编写的


Tags: 项目数量npzeros价格编号商品x1w1