1. 写代码时要学会分区分块写,比如说参数、变量、约束和求解目标
2. 定义优化变量
sdpvar | |
sdpvar(n) | 定义一个对称n阶优化变量 |
sdpvar(n,m) | 定义一个n行m列的优化变量 |
sdpvar(n,m,'type') | 'full'完整的不对称变量矩阵 'symmetric'对称变量矩阵 'diagonal'对角阵 'skew'反对称矩阵 |
sdpvar n | 定义一个标量 |
intvar与sdpvar相似,只不过为整数优化变量。
对于三维,使用cell变量:(举例说明)
% M 是一个3*5*24
% 通过循环定义
M = cell(1,3); % 将第一个数组拎出
for k = 1:3
M{k} = sdpvar(5,24); % 后一对数组对前一个进行嵌套
end
或者使用
M = sdpvar(5*ones(3,1),24*ones(3,1));
学习
http://t.csdnimg.cn/36uOLhttp://t.csdnimg.cn/36uOL
3. 调用matpower的一些参数
举例:
mpc = loadcase('case33bw.m');
opt = mpoption; % 设置潮流计算选项
opt.out.all = 0; % 禁用潮流计算在命令窗口输出结果
results = runpf(mpc, opt);
baseMVA = results.baseMVA;
bus = results.bus;
P_load = bus(:,3);
或者
mpc = case33bw;
pload = mpc.Pload;%节点有功负荷
qload = mpc.Qload;%节点无功负荷
branch = mpc.branch;
branch(:,3) = branch(:,3)*100/(12.66^2);%求阻抗标幺值
r = real(branch(:,3));
x = imag(branch(:,3));
计算雅可比矩阵:
J = makeJac(mpc);
J_full = full(J);
J_Ptheta = J_full(1:n-1,1:n-1);
J_Pv = J_full(1:n-1,n:end);
J_Qtheta = J_full(n:end,1:n-1);
J_Qv = J_full(n:end,n:end);
Jr = J_Qv-J_Qtheta*inv(J_Ptheta)*J_Pv;
Jr(32,24) = -1.16684565200891e-15;
Jr = (Jr + Jr')/2; %压缩后的雅可比矩阵