4.3.4 AOE动作定义
AOE动作定义(边声明)配置内容:AOE ID、首尾节点、动作名称、失败模式、动作类型、动作参数。
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数 |
---|---|---|---|---|---|
<u64> | <u64>;<u64> | <String> | Default Ignore StopFailed StopAll | None Set_Points SET_POINTS_WITH_CHECK Set_Points2 SET_POINTS_WITH_CHECK2 Solve NLSOLVE MILP SimpleMilp NLP | < \ > <String>:<Expr>;… <Expr> <Expr> <Expr> <Expr> <Expr> <Expr> <Expr> |
-
AOE ID:声明动作属于哪个AOE网络,用<u64>(64位无符号整数)表示。
-
首尾节点:边需要声明首尾节点,用一对正整数表示,格式为:<尾节点ID>;<首节点ID>。边的方向为:尾节点→首节点。节点ID与AOE事件定义中相对应。
-
动作名称:便于理解动作内容,是对动作的简要文字解释,用<String>(表示字符串类型)表示。
-
失败模型:指动作执行失败后需要采取的措施。执行失败后可以选择以下几种处理措施:Default(尝试重新执行失败的动作)、Ignore(忽略本次失败并不影响其它动作)、StopFailed(停止受到影响的动作)、StopAll(停止本次控制策略的执行)。
-
动作类型:分为None(无动作)、SET_POINTS(置点)、SET_POINTS_WITH_CHECK(带检查的置点)、SET_POINTS2(支持向量计算的置点)、SET_POINTS_WITH_CHECK2(支持向量计算的带检查置点)、Solve(线性方程组求解)、NLSOLVE(非线性方程组求解)、MILP与SimpleMilp(混合整数线性规划)、NLP(非线性规划)。其中,SetPoints除了对测点设值之外,还可以进行变量定义和计算,动作参数分为数字量和模拟量。动作的含义及其参数详见 AOE动作类型。
-
动作参数:根据动作类型不同而表示不同的含义:
- 动作类型为无动作时,动作参数缺省;
- 动作类型为置点时,动作参数为字符串和表达式,并按照变量类型分为数字量和模拟量两部分,置点动作既可以进行变量的定义,也可以把数字量或者模拟量设置给测点,其中字符串表示变量或测点名称,表达式表示变量定义式或者测点被设置的值;
- 动作类型为线性方程组求解、稀疏混合整数线性规划问题求解、稠密描述的混合整数线性规划问题求解和非线性规划问题求解时,动作参数为描述对应的数学模型的字符串及相应参数。
失败模型说明
对节点i的事件是否会进行判断,取决于指向它的“动作“执行结果及失败模式,有以下几种情况:
- 动作1,2,3全部成功,将进入节点i事件判断;
- 动作1,2,3有失败的情况。这里假设动作1失败,又分为以下几种情况:
- 动作1失败模式是Ignore,会进入节点i事件判断;
- 动作1失败模式是Stop_Failed,不会进入节点i事件判断;
- 动作1失败模式是Stop_All,不会进入节点i事件判断,而且会退出整个AOE;
- 动作1失败模式是Default,会进入节点i事件判断。
综上,会进入节点i判断必须同时满足两个条件:
- 没有失败模式为StopAll或StopFailed的动作执行失败;
- 至少有一个执行成功或失败模式为Ignore的动作。
举例如下:
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70000 | 1;2 | 动作1 | Default | None | ||
70000 | 1;3 | 动作2 | Default | None | ||
70000 | 2;6 | 动作3 | Ignore | MILP | max(x1+x2); x1>=0; x1:2,x2:2 | |
70000 | 3;4 | 动作4 | Default | None | ||
70000 | 3;5 | 动作5 | Default | None | ||
70000 | 4;6 | 动作6 | Stop_Failed | MILP | max(x1+x2); x1>=0; x1:2,x2:2 | |
70000 | 5;6 | 动作7 | Stop_All | MILP | max(x1+x2); x1>=0; x1:2,x2:2 | |
70000 | 6;7 | 动作8 | Default | Set_Points | a4:a4+1; |
该例子中,由于MILP优化不收敛,动作将会失败,动作3、6、7都将失败,但只有经过失败模式为“Ignore”的动作3才会进入节点6,然后进行动作8的赋值。
附件:失败模式.rar
动作类型示例说明
None(无动作)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70001 | 1;2 | 事件不动作 | Default | None |
动作含义:ID为70001的AOE网络,节点1至节点2无动作。
SetPoints(置点)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70002 | 2;3 | 变量赋值 | Default | SetPoints | a:1; | b:1.0; |
动作含义:ID为70002的AOE网络,节点2至节点3进行赋值动作,离散型测点a(或变量)赋值为1,连续型测点b(或变量)赋值为1.0。
具体例子:房屋温度控制——AOE边声明。
SET_POINTS_WITH_CHECK(带检查的置点)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70002 | 2;3 | 赋值并检查 | Default | SET_POINTS_WITH_CHECK | a:1; | b:1.0; |
动作含义:ID为70002的AOE网络,节点2至节点3进行赋值并检查动作,离散型测点a(或变量)赋值为1,连续型测点b(或变量)赋值为1.0,并且等待测点a、b置点完成后,节点3事件才算发生。
Set_Points2(支持向量计算的置点)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70002 | 2;3 | 赋值并检查 | Default | Set_Points2 | [a1,a2]:([1,2]+[15,10])*[10,100]+[1,2]; | [b1,b2]:([1.0,2.5]+[15.0,10.0])*[10.0,100.0]+[1.0,2.0]; |
动作含义:ID为70002的AOE网络,节点2至节点3进行向量计算并赋值。等式右边向量计算结果为[161,1202],并赋值给向量[a1,a2],即a1=161,a2=1202, b1=161.0, b2=1252.0。
SET_POINTS_WITH_CHECK2(支持向量计算的带检查置点)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70002 | 2;3 | 赋值并检查 | Default | SET_POINTS_WITH_CHECK2 | [a1,a2]:[t1,t2]*[10,10]*[10,10]+[1,1]; | [b1,b2]:[t1,t2]*[10.0,10.0]*[10.0,10.0]+[1.5,1.5]; |
动作含义:ID为70002的AOE网络,节点2至节点3进行向量计算后赋值并检查动作。等式1右边向量计算结果为[100*t1+1,100*t2+1],等式2右边向量计算结果为[100.0*t1+1.5,100.0*t2+1.5]。测点b1赋值为100.0*t1+1.5,测点b2赋值为100.0*t2+1.5,并且等待向量[b1,b2]置点完成后,节点3事件才算发生。
Solve(线性方程组求解)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70003 | 2;3 | 方程组求解 | Default | Solve | x1+5/3*x2+min(2,5)*x3 = 1; 3*x2 = 4*3; 3*x2+sin(8-2)*x3 = 7; x1,x2,x3 |
动作含义:ID为70003的AOE网络,节点2至节点3进行非线性方程组求解动作。
具体例子:直流法潮流计算——AOE边声明。
NLSOLVE(非线性方程组求解)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70003 | 2;3 | 非线性方程组求解 | Default | NLSOLVE | x1^2-10*x1+x2^2+8; x1*x2^2+x1-10*x2+8; x1,x2 | max_iter:50; tol:1e-6 |
动作含义:ID为70003的AOE网络,节点2至节点3进行非线性方程组求解动作。动作参数2为可选求解参数,默认值为最大迭代次数max_iter=50,收敛精度tol=1e-6。
具体例子:交流法潮流计算——AOE边声明。
MILP与SimpleMilp(混合整数线性规划)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70004 | 2;3 | 混合整数线性规划 | Default | MILP | max((5*2)*x1+3*x2+2*x3+(10-3)*x4+4*x5); 2*x1+(2*4)*x2+4*x3+2*x4+max(1,5)*x5 <= 5*2; x1:1,x2:1,x3:1,x4:1,x5:1 | maxIt:500; primalT:1e-6 |
动作含义:ID为70004的AOE网络,节点2至节点3进行混合整数线性规划动作。动作参数2为可选求解参数,默认值为最大迭代次数maxIt=500,收敛精度primalT=1e-6等。
具体例子:储能辅助调频——AOE边声明。
NLP(非线性规划)
AOE ID | 首尾节点 | 动作名称 | 失败模式 | 动作类型 | 动作参数1 | 动作参数2 |
---|---|---|---|---|---|---|
70005 | 2;3 | 非线性规划 | Default | NLP | x1*x4*(x1+x2+x3)+x3; x1*x2*x3*x4:[25/2e19]; x1^2+x2^2+x3^2+x4^2:[40/40]; x1:[1/5],x2:[1/5],x3:[1/5],x4:[1/5] | max_iter:500; tol:1e-6 |
动作含义:ID为70005的AOE网络,节点2至节点3进行非线性规划动作。动作参数2为可选求解参数,默认值为最大迭代次数max_iter=50,收敛精度tol=1e-6等,详见Ipopt设置文档
具体例子:最优潮流计算——AOE边声明。