一个规划求解算法

duguqiulang 2018-04-28 11:31:04
一个规划求解算法

有一组数据



品牌 | 销售量最大值 | 销售量最小值 | 成本 | 单价 | 实际销量

T1 2000 1000 100 120 X

T2 3010 1200 300 330 X

T3 4200 1050 410 430 X

T4 3020 1100 120 150 X

………………

需要求解数据中每个品牌的“实际销量”X

实际销量需要满足:

1:“实际销量”应在该品牌的“销售量最大值”和“销售量最大值”之间

2:最终所有品牌的“实际销量”合计等于一个人为指定的固定数字(总销售量)

3:计算每个品牌的利润,如

利润=(实际销量*单价)-(实际销量*成本)(实际情况比这个复杂很多,涉及到利税等计算,由多个公式最终得到利润,每个公式内都涉及到了“实际销量”)

最后每个品牌利润的合计等于一个人为指定的固定数字(总利润)



最终实现效果是,输入两个固定的数字(总销售量和总利润),最终预测每个品牌的实际销量。
...全文
1433 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHGUY 2018-05-02
  • 打赏
  • 举报
回复
我只能想到一个办法,但肯定还有更好的算法。 可以参照现实中的处理办法,一般现实中处理这个问题,基本上是先按最小的值设好,然后再这里加一点,那里减一点,东拼西凑的计算出来结果。 等凑的差不多了,只剩一个品牌不对的情况下再通过方程解出来。 现在只有两个条件,那方程应该是 x1 + x2 = zt x1p1 + x2p2 = zp zt是两个品牌的销售数量和,zp是两个品牌的利润和,p是品牌利润。 大致分为3步 1:根据总销售数量设置每个品牌的销售数量。最终达到效果:每个品牌的销售数量在最大值和最小值之间;各个品牌的销售数量总和等于总销售数量 这部可以使用递归解决,大概2到3次就差不多分配完了 2:根据前面设置的销售数量得到每个品牌的利润,再把品牌利润总和与总利润目标比较,得到正数或负数,再重新规划每个品牌的销售数量。最终达到效果:每个品牌的销售数量在最大值和最小值之间;各个品牌的销售数量总和等于总销售目标;每个品牌的总利润总和应该大致等于总利润目标。其中一个品牌不正确。 也可以使用递归解决,也就是这里加一点,那里减一点的过程了。 3、把最后不正确的品牌,随便和一个正确的品牌带入方程中,解得正确的销售数量。 至此完成
Linkmao 2018-04-29
  • 打赏
  • 举报
回复
第一时间想到了不定方程求解。 理论上的做法是不断进行约束 在没有给定实际销量之间的联系的时候可以自己约束。 在上述数据中T1和T3的单件利润为20和销量设置为a1 ,T2和T4的单件利润为30和销量设置为a1. 20*a1+30*a2=总利润 a1+a2=总销量 可以算出a1与a2的值。 至于怎么分,完全是不定方程求解,无数总答案。如果你硬要数字的话,可以平均也可以调用随机函数。
ZHGUY 2018-04-28
  • 打赏
  • 举报
回复
线性规划算法 其实说白了也就是几个约束条件 1:最小值<销量<最大值 2:∑销量=1000(固定数字) 3:复杂的公式可以简化,比如现在所写的公式也就相当于∑销量 * (单价-成本) = 20000(固定数字) 所以这种销量这组数字需要满足 ∑ 销量 = 1000 ∑ 销量 * 利润 = 20000
maradona1984 2018-04-28
  • 打赏
  • 举报
回复
你这个相当于多元一次方程组,但方程组只有两个方程在加对未知数的区间限定,很容易无解,而且连判定是否无解都是个相当耗费资源的工作 如果放弃两个参数中的其中一个值的准确性(可以一定范围内波动),比如总销售量相等,总利润在一定范围内,可以采用一定策略寻求一个解 当然我说的不一定对,这个需要一定数学基础的人来回答

50,336

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧