我有一个特殊的函数,它可以计算发电厂整个寿命期内的平均电力成本($/MWh)。你知道吗
示例函数如下所示
def calc(a,b,c):
res = 65*a+74*b+12*c
return res
其中a
b
和c
是成本参数,如运营支出、建设成本和保险。你知道吗
我可以用无数种方法来改变a
b
和c
,但我希望保持比率与我拥有的示例数据点相同,平均电力成本的结果更低。你知道吗
例如
当a=1
、b=2
和c=3
、res = 249
时。你知道吗
但是,我想找出保持相同原始比率的最佳值,对于a
b
和c
当res=600
我试着想办法用科学优化,但有些困难。你知道吗
我不知道我将如何在约束的比率编程。你知道吗
非常感谢。你知道吗
从this答案中,可以指定如下约束:
使用最小化函数如下:
我设法找到了一个解决方案来帮助我的特定用例,尽管有人指出对于这个特定的例子有一个更简单的解决方案。你知道吗
约束保持相同的比率,并将“计算”的结果设置为等于600。你知道吗
假设有两组值,(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。你知道吗
在您的示例中,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”相同。你知道吗
你希望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倍。你知道吗
下面是一个返回缩放参数值集的函数:
注:我用的是“600.0”,而不是“600”。这迫使Python使用float,而不是使用截断的整数。你知道吗
相关问题 更多 >
编程相关推荐