Professional Documents
Culture Documents
# tap limits
param TAP_min;
param TAP_max;
# variables
# auxiliar variables
var p_g {BUS}; # final active power generation, used to output data
var q_g {BUS}; # final reactive power generation, used to output data
var p_d {BRANCH}; # final active direct flow, used to output data
var q_d {BRANCH}; # final reactive direct flow, used to output data
var p_r {BRANCH}; # final active reverse flow, used to output data
var q_r {BRANCH}; # final reactive reverse flow, used to output data
# matrix YBUS
# important information
for{(l,k,m) in BRANCH} {
let branch_def[l,k,m] := -branch_def[l,k,m]*3.14159/180;
let branch_def_min[l,k,m] := branch_def_min[l,k,m]*3.14159/180;
let branch_def_max[l,k,m] := branch_def_max[l,k,m]*3.14159/180;
let branch_tap[l,k,m] := 1;
};
# VARIVEIS FIXAS
#
fix {i in BUS : bus_type[i] == 3} bus_angle[i]; # slack angle fixed
fix {i in BUS : bus_b_dispatch[i] == 0} bus_b_shunt[i]; # no dispatchable shunts
fixed
fix {(l,k,m) in BRANCH : branch_type[l,k,m] == 0 || branch_type[l,k,m] == 3 ||
branch_type[l,k,m] == 4} branch_tap[l,k,m]; # branch taps fixed
#
#*************************** CHAMANDO O SOLVER DE OTIMIZAO **********
printf "\nChamando o solver de otimizacao:\n\n";
#
# SOLVER SELECIONADO
option solver knitroampl;
option knitro_options "outlev=6 alg=0 ";
#
# OBJETIVO SELECIONADO
solve voltage_profile;
#solve losses;
#
# FLUXO REVERSO
let p_r[l,k,m] := branch_g[l,k,m]*bus_voltage[m]^2
-branch_g[l,k,m]*bus_voltage[k]*bus_voltage[m]*branch_tap[l,k,m]*cos(bus_angle[k]-
bus_angle[m]+branch_def[l,k,m])
+branch_b[l,k,m]*bus_voltage[k]*bus_voltage[m]*branch_tap[l,k,m]*sin(bus_angle[k]-
bus_angle[m]+branch_def[l,k,m]);
#
let q_r[l,k,m] :=-(branch_b[l,k,m]+branch_c[l,k,m]/2)*bus_voltage[m]^2
+branch_g[l,k,m]*bus_voltage[k]*bus_voltage[m]*branch_tap[l,k,m]*sin(bus_angle[k]-
bus_angle[m]+branch_def[l,k,m])
+branch_b[l,k,m]*bus_voltage[k]*bus_voltage[m]*branch_tap[l,k,m]*cos(bus_angle[k]-
bus_angle[m]+branch_def[l,k,m]);
}
#