- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
m.options.SOLVER = 1
m.options.IMODE = 3
Num_car = 1
TOU = [64.9,64.9,64.9,64.9,64.9,64.9,64.9,64.9,152.6,239.8,239.8,152.6,239.8,239.8,239.8,239.8,152.6,152.6,152.6,152.6,152.6,152.6,152.6,64.9]
n=len(TOU)
p_i = m.Array(m.Var,(n,Num_car))
input = m.Array(m.Var, (n), value = 0.0, lb = 0.0, ub = 7.0, integer = True)
SOC_t = m.Array(m.Var,(n, Num_car))
for tt in range(0,n):
for i in range(0,Num_car):
SOC_t[tt,i].lower = 30
SOC_t[tt,i].upper = 70
SOC_t[0,0] = 30
eq_car_bat = np.zeros((n))
eq_car_bat = list(eq_car_bat)
for tt in range(0,n):
eq_car_bat[tt] = SOC_t[tt] + input[tt] == p_i[tt]
m.Equation(eq_car_bat)
SOC_Max = 90
SOC_Min = 30
sum_soc = sum(SOC_t[tt])
eq_total = np.zeros((n))
eq_total = list(eq_total)
eq_total = sum_soc == SOC_Max
m.Equation(eq_total)
for i in range(n):
m.Minimize(TOU[i]*p_i[i])
m.options.IMODE = 3
m.options.SOLVER = 1
m.solve(disp=True)
我想在 EV 充电时找到最小的充电成本。我的代码如下所示,但我收到以下错误“x 必须是 GEKKO 参数、变量或表达式的 python 列表”,我不知道如何解决。
最佳答案
目的似乎是在给定特定使用时间 (TOU) 的情况下,决定何时在 24 小时内为电池充电。这是脚本的修改版本,它在 SOC 上从 30 到 70 收费(整数值 0-7)。它有能力添加额外的车辆,但目前只有一辆车。
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
m.options.SOLVER = 1
m.options.IMODE = 3
Num_car = 1
TOU = [64.9,64.9,64.9,64.9,64.9,64.9,64.9,64.9,152.6,239.8,
239.8,152.6,239.8,239.8,239.8,239.8,152.6,152.6,
152.6,152.6,152.6,152.6,152.6,64.9]
n=len(TOU)
inp = m.Array(m.Var, (n), value = 0.0,
lb = 0.0, ub = 7.0, integer = True)
SOC_Min = 30; SOC_Max = 90
# set bounds 30-90
SOC_t = m.Array(m.Var,(n, Num_car),lb=SOC_Min,ub=SOC_Max)
# set new bounds 30-70
for tt in range(0,n):
for j in range(Num_car):
SOC_t[tt,j].lower = 30
SOC_t[tt,j].upper = 70
for j in range(Num_car):
# initial SOC
m.Equation(SOC_t[0,j]==30) # initial charge at start
m.Equation(SOC_t[n-1,j]==70) # desired charge at end
for tt in range(1,n):
m.Equation(SOC_t[tt,j] == SOC_t[tt-1,j] + inp[tt])
for tt in range(n):
m.Minimize(TOU[tt]*inp[tt])
m.options.IMODE = 3
m.options.SOLVER = 1
m.solve(disp=True)
plt.figure(figsize=(8,5))
plt.subplot(3,1,1)
for j in range(Num_car):
p = np.empty(n)
for tt in range(n):
p[tt] = SOC_t[tt,j].value[0]
plt.plot(p,'r.-',label='vehicle '+str(j+1))
plt.legend(); plt.ylabel('SOC'); plt.grid()
plt.subplot(3,1,2)
p = np.empty(n)
for tt in range(n):
p[tt] = inp[tt].value[0]
plt.plot(p,'ko-',label='charge rate')
plt.legend(); plt.ylabel('charge'); plt.grid()
plt.subplot(3,1,3)
plt.plot(TOU,'bs-',label='electricity price')
plt.ylabel('price'); plt.grid()
plt.legend(); plt.xlabel('Time (hr)')
plt.tight_layout()
plt.savefig('soc_results.png',dpi=300)
plt.show()
此问题与 Energy Benchmarks 中的一些其他问题有关.当使用 IMODE=6
而不是显式索引时间时,Gekko 能够管理问题的时间方面。使用 IMODE=3
(默认)可以更好地控制问题结构。 IMODE=6
如果有微分方程则更好。
关于python - 如何使用 Gekko 优化电动汽车充电成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74234285/
代码 但是因为 $txt 位于 $txt='thankyou'; 的顶部,当对话框加载时什么也不显示。无论如何,无需更改 $txt 中设置的代码余额??? 最佳答案 您必须重新排序您的代
我正在我的网站上测试 Stripe,但无法通过下面看到的“尝试”。基本上,我从来没有在“尝试”之后看到“测试”。 我是不是做错了什么? try { $charge = Stripe_Charge
我正在用 CSFML 制作一个游戏,用于学校练习 为了满足所有要求,我必须设计一个遵循有限运行规则的游戏,例如几何冲刺。除了一个主要功能之外,它可以完成所有操作:从文件中获取 map ,如下所示: X
我已尝试进行尽可能多的研究,但找不到这个相当简单的问题的答案(我想在设置 SDK 和所有内容之前弄清楚这个问题)。我在想关于开发我的第一个应用程序,我想知道 BatteryManager 中的 BAT
我知道这不太可能,但是有没有办法(以编程方式)在手机连接到充电器时停止充电? 谢谢。 最佳答案 没有。您可以在 UIDevice 上使用多种方法来监控电池状态,但不太可能有 API 来阻止充电。 关于
我正在快速制作一个应用程序,我需要知道电池是否正在充电。我知道我可以使用 UIDevice.currentDevice().batteryState,但是当它处于 100% 时,它返回 .Full 而
我在通过 Stripe 向用户收费时遇到问题。我在以下委托(delegate)方法中收到的 paymentResult 对象 func paymentContext(_ paymentContext:
我目前正在尝试实现亚马逊 ec2,我读到一年后他们会向您收费。我之前使用过谷歌应用程序引擎(使用java),并且有一个可以启用/禁用充电的功能。我只是想尝试免费的 ec2 实例,所以这是我的问题: A
我想实现一个 Stripe 支付表单,但我收到一个 fatal error Class 'Stripe\Charge.类(class)在那里(见我的文件夹树),我试过了: $charge = \St
下面有一段代码,我想知道是否可以在结帐过程的“成功标记”中进行 Stripe 收费?下面的所有代码都有效,我只是想知道我将在哪里插入创建acctuall费用的代码。 Pay
我正在尝试在充电失败时检索 Stripe 充电 ID,因此当 charge.failed Hook 被触发时,我可以通过该 id 检索我的记录。我尝试检查触发的异常,但找不到任何方法来获取它。这是我的
我知道我们可以使用 UIDeviceBatteryState 确定电池状态,但我找不到如何检测是否只将电缆插入设备(仅添加 30 针或闪电)设备)。 当我检查 UIDeviceBatteryState
我尝试使用命令 setprop persist.usb.chgdisabled 1 连接到 USB 端口型号 HTC Nexus 一台已 root 的设备(android 版本 2.3.3)时禁用充电
我正在编写一个基于位置的应用程序,并希望获得一些关于合理使用 API 的智慧。 到目前为止,我所了解的是使用 int 更有效率。我将需要存储大量它们并进行大量距离计算。 我的应用程序使用实现 Loca
我目前正在编写一个 iOS 应用程序,并且正在接收电池状态更改通知。当然,当我调试我的应用程序时,如果我可以在不拔掉手机电源的情况下切换电池状态,那就太好了。有什么方法可以通过 OS X 或 XCod
所以这是我的问题,我一直在关注应用引擎用户的 github 自述文件,以便在我的应用程序中实现 strip 化,但问题是我无法让它工作,因为 http.DefaultTransport 和 http
我是一名优秀的程序员,十分优秀!