擅长:python、mysql、java
<p>假设有两组值,(a\u old,b\u old,c\u old)和(a\u new,b\u new,c\u new)。如果您希望它们各自的比率相同(例如_旧的:cïold是一样的_新:c\新,和c_旧的:b\U旧的与c相同_新:b泷U新,依此类推),这就等于说存在一个常数k,使得a_new=k*a_old,b_new=k*b_old,c_new=k*c_old。你知道吗</p>
<p>在您的示例中,65*a\u old+74*b\u old+12*c\u old=249。如果你把这个方程的两边都乘以k,你就得到了
65(k*a\u old)+74(k*b\u old)+12(k*c\u old)=249*k。这与“65(a\u new)+74(b\u new)+12(c\u new)=249k”相同。你知道吗</p>
<p>你希望249*k等于600。因此,k=600/249=约2.4096。然后可以将这个k值与a\u old、b\u old、c\u old一起使用,以查找a\u new、b\u new、c\u new的值。记住,新值只是旧值的k倍。你知道吗</p>
<p>下面是一个返回缩放参数值集的函数:</p>
<pre><code>def optimize(a,b,c, opt_res):
res = 65 * a + 74 * b + 12 * c
k = opt_res/res
new_vals = [parameter * k for parameter in [a,b,c]]
return new_vals
print(optimize(1,2,3,600.0))
## output: [2.4096385542168677, 4.819277108433735, 7.2289156626506035]
</code></pre>
<p>注:我用的是“600.0”,而不是“600”。这迫使Python使用float,而不是使用截断的整数。你知道吗</p>