Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 平衡项目组成的方法_Performance_Math_Equation Solving - Fatal编程技术网

Performance 平衡项目组成的方法

Performance 平衡项目组成的方法,performance,math,equation-solving,Performance,Math,Equation Solving,这是一个复杂的问题,请耐心听我说 我有很多成分可以组成化合物 在最终化合物中,需要尽可能多地平衡成分的3个相关部分 例如,起点可能是 ITEM A B C ONE 25kg 50kg 40kg TWO 45kg 20kg 65kg THREE 12kg

这是一个复杂的问题,请耐心听我说

我有很多成分可以组成化合物

在最终化合物中,需要尽可能多地平衡成分的3个相关部分

例如,起点可能是

ITEM              A             B              C

ONE               25kg          50kg           40kg
TWO               45kg          20kg           65kg
THREE             12kg          50kg           4kg
etc. - there can be 3-50 components but only parts A, B and C are relevant.
最终目的是调整项目1、2和3等的数量,以便最终化合物(将这些项目加在一起制成)符合比例

                  A             B              C

                  24%           46%            30%
还有一个限制,我可以将一个组件的数量向上或向下调整40%以上

显然,我理解,有时由于上述限制,不可能获得所需的比率,但我需要尽可能接近

我目前的方法是:-

  • 获取组件构成的当前总比率(百分比),例如
  • 
    A=26.37%
    B=38.59%
    C=35.05%

  • 将它们与最终期望结果(
    A=24%,B=46%等)进行比较,并得出差异
  • 
    A=-2.37%
    B=7.41%
    C=-4.05%

  • 这就是我开始有点卡住的地方(但有些半工作)-目前我基本上是首先调整a->B比率-所以从这个例子中,我需要找到高B和低a比例的项目(项目3)

    然后我将第3项增加1%,将第1项和第2项减少1%。然后,我重新评估,直到达到我想要的比率或达到最大增加/减少40%

    如果我达到40%的最大增加/减少,那么我会找到下一个最佳的B->a比率(第一项刚好比该比率好),并重复该比率

  • 一旦我用尽了所有的可能性或者达到了我的目标,我就在C项和B项之间做同样的事情

  • 然后,我一遍又一遍地重新运行整个过程,直到耗尽循环(目前项目3-5的20个循环(循环30次)效果良好)

  • 这项工作相对来说比较好——我可以得到预期结果的2-3%以内

    然而,为了实现这一点,我必须在总共400-900个环路的范围内进行操作

    为了更清楚地了解预期结果,示例结果可能是:-

    ITEM             MULTIPLIER      A             B              C             
    
    ONE               1.38            34.5kg        69kg           55.2kg
    TWO               0.62            27.9kg        12.4kg         40.3kg
    THREE             1.4             16.8kg        70kg           5.6kg
    
    PERCENTAGE                        23.88%        45.64%         30.48%
    
    TARGET DIFFERENCE                 -0.12%        -0.36%         0.48%     NET 0%                     
    
    我知道我的方法很愚蠢,但我不知道如何用另一种方法去做,所以我需要帮助

    总之

    我如何写/我应该使用什么方法来平衡多个项目以达到我想要的比率-需要考虑到最多可以有50个组成部分和40%的变化上限

    我不希望有人为我写这篇文章——只是一些指点、建议和类似问题的例子,看看我如何更好地解决这个问题


    提前感谢,我希望这是清楚的。

    因为您只是在寻找提示,这看起来像线性优化问题。因为你不能填满所有的方程,所以你可以尝试不等式,并使用众所周知的技巧。作为一个起点,本pdf可能会有所帮助:感谢链接-将查看它-我知道这是一个可怕的方法,但这是我能想到的最好的方法-它基本上是一个多重平衡方程-这远远超出了我目前的知识领域想到其他任何东西都会很棒!我觉得这与生产计划下的线性优化类似-但是反过来-也许我会开始寻找一个起点,至少是某种算法-我仍然认为我必须循环-主要目的是获得早期的“最佳喷射”,以减少负载。我可能误解了问题,但看起来你可以把它当作一个最小二乘问题来处理:你有一个项目/ABC组成部分的矩阵(称之为
    a
    )(你在顶部显示的表格),你想把它乘以乘数
    x
    ,以便尽可能接近指定的比例
    b
    。通常没有精确解,因此您尝试最小化差的平方范数:
    |A x-b | | ^2
    。如果我没有弄错的话,这些问题通常是通过奇异值分解(SVD)来解决的。搜索SVD和/或最小二乘法问题应该会找到很多答案。谢谢你-再次出现在正确的轨道上,但我必须重新学习一些数学才能确认!到目前为止建议的两种资源似乎都很有用,将在未来几天发挥作用-我认为最大的问题是40%的变化限制-大多数数学解决方案倾向于“解决”。感谢您提供的信息,欢迎您提出任何其他想法。