python - 如何为 scipy 最小化创建目标函数
问题描述
是的,为大量的问题道歉,但我是 Python 的新手,我一直在努力。
我相信我终于创建了一个有点功能的代码。但是,我似乎无法正确定义目标函数。其余的似乎计算正确(基于目标给我的值)。这是我现在的目标函数:
def objective (x):
global sumIp, sumIm
if (It[i-1] - d[i] + Qt[i-LT]) >= 0:
sumIp = sumIp + x[2]
sumIm = sumIm + 0
else:
sumIp = sumIp + 0
sumIm = sumIm - x[2]
return h*sumIp+b*sumIm
x[2] 是我的 It[i]。sumIp 和 sumIm 都应该 >= 0。
如果有人想看看,这里是完整的代码:https ://pastebin.com/AxC7fTVv - 我相信这是我实现我想要的唯一部分,但我不知道该怎么做这对我来说是一辈子的事,在这附近已经好几天了!任何帮助表示赞赏。
解决方案
概括
可以,然后呢。我将总结您的问题(对您而言,但主要是为了帮助我:p)。
您有一系列要计算的值,它们都围绕着计算Qt[i]
。那些是:
d[i]
- 在“真实世界”场景中外部提供的一些值列表,但出于您的目的,使用随机值进行模拟;最重要的是,这不是必须计算的东西。(另一个注意事项:我假设我们不能“预见未来”并使用d[i+1]
,或类似的东西。)It[i]
- 由It[i] = It[i-1] - d[i] + Qt[i-LT]
(Qt
省略部分i < LT
)给出;这是根据前周期值和d
值计算得出的,因此可以很容易地计算出Ip[i]
,Im[i]
- 这些都是直接从 计算出来的It[i]
,所以再一次,很容易计算NIt[i]
- 由 给出NIt[j] = NIt[j-1] - d[j] + Qt[j-1]
,并且可以很容易地计算为It[i]
Qt[i]
- ...?
简而言之:唯一需要弄清楚的是Qt[i]
. 因此,如果您决定使用类似的优化器scipy.minimize
,您需要的唯一变量是x[0]
. 但是如果你只有一个变量,你甚至不需要使用优化器。您更有可能想出一些直接为您提供优化结果的函数/表达式。
解决方案
...还不太确定 :\ 抱歉
推荐阅读
- php - 如何在 psysh 控制台中调用 php 函数?
- dygraphs - 不使用数据标签的 Dygraphs
- python - Matplotlib:避免注释和勾选 y_tick 标签重叠
- angular - 数据未发送到 FormGroup - Angular
- css - 为字体真棒图标设置固定尺寸
- javascript - 是否可以在不自动折叠/展开树的情况下替换具有数据树的表中的数据?
- javascript - 无法使用画布更改图像像素
- matlab - 如何修复“位置 1 中的索引超出数组范围”
- python - python中的海龟图形无法正常工作
- nestjs - NestJs 测试的性能问题