Scipy优化报错ValueError: 数组形状(9,)(6,)(6,)无法广播问题求解
报错修复方案
根因定位
报错由优化参数维度不匹配导致:
- 待优化初始值
x0共包含9个参数 - 你定义的约束边界列表
boundsss仅设置了前6个参数的上下限,缺少「送港费率、单件包装成本、运输批次」3个参数的边界定义,触发SLSQP算法维度校验失败。
修复方法
替换原代码中的boundsss定义,补全所有参数的约束边界即可:
boundsss = [ bounds_price, bound_quantity, bounds_bronze_DS, bounds_silver_DS, bounds_Gold_DS, bounds_Platinum_DS, bounds_DelivaryToPor, bounds_PackingCostLowerBoundry, (1, 1000) # 运输批次上下限可根据业务实际需求调整数值 ]
额外业务逻辑校验提示
当前代码的折扣计算逻辑存在偏差:你设置的折扣参数为百分比数值(如20代表20%折扣),但计算时没有做百分比换算,会导致实际折扣远高于预期,可修改为如下计算方式:
bronzecost = BronzeCustomers * (price - price * bronze_Discount / 100) Silvercost = SilverCustomers * (price - price * silver_Discount / 100) Goldcost = GoldCustomers * (price - price * Gold_Discount / 100) Platinumcost = PlatinumCustomers * (price - price * Platinum_Discount / 100)
内容的提问来源于stack exchange,提问作者Lakruwan Pathirage
相关产品推荐
相关产品推荐

