我从以下电路创建了一个 ML 模型
作为输入,我只使用了我正在更改范围的 R3 和 R5 的值:
R3:1 到 5 R5:10 到 150,步长为 10
我的目标值是用 R5 消耗的功率与 V1 提供的功率来衡量的电路效率
一旦我训练了模型,我就对更大范围的值进行了预测,并得到了在 Z 轴上具有效率的曲面:
我的问题是,给定一个集合,例如:
X1=1 X2=3
这导致输出预测效率为 50%
如何自动化推荐更好价值的过程,例如:
X1=1 X2=1
产生 57% 的效率
我想在一些限制条件下执行此操作:仅在 X1 上移动 2 个步骤,在 X2 上移动 3 个步骤
答案 0 :(得分:1)
这听起来像是梯度下降等优化器的工作(如果您可以在 PyTorch 或 TensorFlow 等具有自动微分功能的框架中实现您的 ML 模型,则建议这样做)。
如果基于梯度的优化器不适合您的特定功能,我建议使用 Evolutionary Algorithms。根据您问题中的描述,我建议以下选项:
所有这些算法都适用于离散搜索空间,如果它们没有提供方便的 API 来约束搜索空间,您可以通过包装模型来解决这个问题:
让你的机器学习模型成为一个函数:
f(x1: float, x2:float) -> float
你可以写一个包装函数 f_constrained
如下:
def f_constrained(x1: float, x1: float,
x1_min: float, x1_max: float,
x2_min: float, x2_max: float) -> float:
if x1_min <= x1 <= x1_max and x2_min <= x2 <= x2_max:
return f(x1, x2)
# this assumes the objective function is maximizing the values,
# when minimizing, return float("inf") instead
return float("-inf")