我有一个基于表格输入的相当复杂的函数。某些列的最大值是最终结果(总共 2 个)。这些列相互依赖并依赖于其他列。
我需要将多个列的最大值迭代优化为特定值,以便这些列最大值都不会超过特定值。
输入表格片段(多行)
Column A, Column B
542.64, 8.5
540.00, 8.5
541.00, 8.6
654.23, 4.7
计算
Column C = c1*((c2+(x*column A)^2) / (c1 + c2))^c3
Column D = Column D[n-1]*(1-c4) + (Column B + Column C)*c4 #Startvalue is given
column E = c5*(x*column A)^c6
Column F = Column F[n-1]*(1-c7) + Column E*c7
Column G = Column D + Column F
其中 c1 到 c7 是常数
求解 X 直到满足所有条件,并且至少有一个 =< 接近于 =:
condition 1 = max(Column D) =< value1
condition 2 = max(Column F) =< value2
condition 3 = max(x*Column A) =< value3
我不想使用这样的 if-else 语句:
solve x for max(column D) == value1
if condition 2 == True and condition 2 == True:
return x
else solve x for max(column F) == value2
if condition 3 == True
return x
else solve x for max(column G) == value3
return x
*注意:我将几列的最终结果计算为列表,而不是完整的列计算
*注 2:我使用 for 循环,因为计算使用自身和/或其他列的 n-1 值(前一行)