单击guimh.m文件打开系统主界面,如图1所示,界面友好、简单、易于操作。主界面上方有一个“开始”按钮,可以控制整个软件的执行。主界面右方有三个选项,分别为“配电网潮流计算模块”、“经济调度模糊满意度评价模块”和“退出”选项,可以方便用户进行软件操作。
图1
单击“开始”按钮,出现与主界面右方相同的三个选项,选择“配电网潮流计算模块”(或直接点击主界面右方的“配电网潮流计算模块”)进入下一个界面。如图2所示。
图2
该界面第一栏有两个选择按钮:“开始”、“绘图”。界面左边为原始数据导入区,右上部分为结果显示区,右下部分则为四个选择按钮,分别为:“执行潮流计算”、“功率分布图”、“电压分布图”和“返回”按钮,方便用户进行不同的功能操作。
单击“开始”按钮出现下拉菜单,选择“操作说明”选项,出现如图3所示的介绍。这对该模块进行了简洁明了的说明。
图3
在“原始数据导入区”输入原始数据,用户根据自己的电力网络进行数据输入,其中包括了:1、“电力系统基本参数”,如图4所示。
图4
2、B1矩阵数据。单击“导入B1矩阵数据”按钮,出现如图5所示的对话框:
图5
用户选择需要导入的数据,如选择cc.xls,单击打开后在B1矩阵数据区出现如图6所示的界面。
图6
B1矩阵解释如下:第一列数据代表支路首端的节点号,第二列代表支路末端的节点号,第三列代表支路电阻,第四列代表支路电抗,第五列代表支路对地电纳,第六列代表支路中变压器的变比,第七列的数据为0或1,若支路首端的节点位于变压器的高压侧则为1,若位于低压侧则为0。每一行则代表每一条支路。
3、B2矩阵数据。单击“导入B2矩阵数据”按钮,出现如图7所示的对话框:
图7
用户选择需要导入的数据,如选择dd.xls,单击打开后在B2矩阵数据区出现如图8所示的界面。
图8
B2矩阵解释如下:第一列数据代表该节点的发电机功率,第二列代表该节点的有功功率,第三列数据代表该节点的无功功率,第四列代表节点电压的初始值(标幺值形式),第五列代表PV节点的电压给定值(电压幅值且为标幺值形式),第六列代表节点所接无功补偿设备的容量,第七列代表节点的分类标号。每一行则代表每一个节点。
原始数据输入完毕后则可进行潮流计算。单击右下方“执行潮流计算”按钮如图,或者单击“开始”按钮选择“执行潮流计算”选项进行潮流计算。在结果显示区可以看到7项结果。如图9所示。
图9
单击“各节点电压标幺值”会在结果显示区出现如图10所示的结果:
图10
单击“节点电压幅值和相角”会在结果显示区出现如图11所示的结果:
图11
相应的单击其他5个选项会出现对应的结果,这里不再赘述。
另外可以观察到本次潮流计算的迭代次数,如图9所示,迭代次数为4.
该软件还可以以图形的形式直观的观察潮流计算的结果。单击主界面右下方的“功率分布图”按钮或者单击第一栏的“绘图”按钮选择“功率分布图”选项,出现如图12结果。
图12
功率为正代表从该节点或支路流进功率,功率为负则代表流出功率。
单击主界面右下方的“电压分布图”按钮或者单击第一栏的“绘图”按钮选择“电压分布图”选项,出现如图13结果。
图13
左图为各节点电压标幺值(幅值),右图则为电压相角。
单击右下方的“返回”按钮,如图,或单击“开始”按钮选择“返回”选项,则可返回系统主界面。
返回系统主界面后,单击“开始”按钮,选择“经济调度模糊满意度评价模块”(或直接点击主界面右方的“经济调度模糊满意度评价模块”)进入该模块。如图14所示。
图14
该界面第一栏有两个选择按钮:“开始”、“操作”。界面左边为经济调度满意度评价平台,右上部分为结果显示区,右下部分则为“返回主界面”按钮。
单击“开始”按钮出现下拉菜单,选择“操作说明”选项,出现如图15所示的介绍。这对该模块进行了简洁明了的说明。
图15
在“经济调度满意度评价平台”处导入原始数据。
其中包括了:1、评价集。评价集则是由各因素在不同等级下的限值组成的矩阵。单击“导入评价集”按钮或者单击“操作”按钮选择导入参数中的导入评价集选项,出现如图16所示的对话框
图16
用户选择需要导入的数据,如选择a.xls,单击打开后在评价集处出现如图17所示的界面。
图17
2、每级满意度等值分数。单击“导入每级满意度值”按钮或者单击“操作”按钮选择导入参数中的导入每级满意度分值选项,也出现如图16所示的对话框
用户选择需要导入的数据,如选择adf.xls,单击打开后在“每级满意度等值分数”处出现如图18所示的界面。
图18
3、因素集。因素集则是由评价对象所组成的矩阵(归一化后)。操作过程与1,2类似,这里不再赘述。选择ad.xls文件,导入数据后在因素集处出现如图19所示的界面。
图19
原始数据导入成功后,可以单击界面右侧结果显示区中的“满意度测评”按钮,如图或者单击“操作”按钮选择“执行”中的“满意度测评”选项,进行满意度测评。测评结果会显示在“结果显示区”内,如图20所示:
图20
结果中得分最高的一项则为经济调度满意度最高的一项。此外在“结果显示区”还有其他四个选项。单击“查看模糊矩阵”或者单击“操作”按钮选择“结果”中的“查看模糊矩阵”选项出现如图21所示的结果。
图21
同样可以查看满意度和满意度分布图,操作过程类似,不再赘述。结果分别如图22,图23所示
图23
单击右下侧的“返回主界面按钮”或者单击“开始”按钮选择“返回”选项则可以返回到主界面进行其他操作。
function varargout = guimh(varargin)
% GUIMH MATLAB code for guimh.fig
% GUIMH, by itself, creates a new GUIMH or raises the existing
% singleton*.
%
% H = GUIMH returns the handle to a new GUIMH or the handle to
% the existing singleton*.
%
% GUIMH(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in GUIMH.M with the given input arguments.
%
% GUIMH(‘Property’,‘Value’,…) creates a new GUIMH or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before guimh_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to guimh_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help guimh
% Last Modified by GUIDE v2.5 02-Jul-2022 16:23:55
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @guimh_OpeningFcn, …
‘gui_OutputFcn’, @guimh_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% — Executes just before guimh is made visible.
function guimh_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to guimh (see VARARGIN)
% Choose default command line output for guimh
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
set(gcf,‘NumberTitle’, ‘off’, ‘Name’, ‘经济调度模糊满意度评价模块’);
% UIWAIT makes guimh wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% — Outputs from this function are returned to the command line.
function varargout = guimh_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a = cell2mat(get(handles.pjjtable,‘data’));
d = cell2mat(get(handles.ysjtable,‘data’));
ci = cell2mat(get(handles.pjftable,‘data’));
% a=v;
% d=u;
[m,n]=size(a);
[x,y]=size(d);
TheResultMoHu=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for s=1:x
for p=1:n
b§=d(s,p);
end
for i=1:n %计算每一个列的平均值
ColAverage(i)=0;
for j=1:m
ColAverage(i)=ColAverage(i)+a(j,i);
end
ColAverage(i)=ColAverage(i)/m;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ETotal = 0; %超标加权法计算权重
for j = 1: n
ETotal = ETotal + (b(j) / ColAverage(j));
end
for i = 1: n
EResult(i) = (b(i) / ColAverage(i)) / ETotal; %EResult为计算结果
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%使用隶属函数,做预处理对每一列进行排序
SortedMatrix=a;
for j=1:n
for i=1:m
for k=i:m
if SortedMatrix(i,j)>SortedMatrix(k,j)
tmp=SortedMatrix(i,j);
SortedMatrix(i,j)=SortedMatrix(k,j);
SortedMatrix(k,j)=tmp;
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%计算单因素隶属度
c=SortedMatrix;
for j = 1 : n
for i = 1 : m
for k = 1 : m
if a(i, j) == c(k, j)
if k == 1
if b(j) < c(k, j)
LSDResult(j, i) = 1;
end
if b(j) >= c(k, j) & b(j) < c(k + 1, j)
LSDResult(j, i) = ((c(k + 1, j) - b(j)) / (c(k + 1, j) - c(k, j)));
end
if b(j) >= c(k + 1, j)
LSDResult(j, i) = 0;
end
end
if k > 1 & k < m
if b(j) < c(k - 1, j)
LSDResult(j, i) = 0;
end
if b(j) >= c(k - 1, j) & b(j) < c(k, j)
LSDResult(j, i) = ((b(j) - c(k - 1, j)) / (c(k, j) - c(k - 1, j)));
end
if b(j) >= c(k, j) & b(j) < c(k + 1, j)
LSDResult(j, i) = ((c(k + 1, j) - b(j)) / (c(k + 1, j) - c(k, j)));
end
if b(j) >= c(k + 1, j)
LSDResult(j, i) = 0;
end
end
if k == m
if b(j) < c(k - 1, j)
LSDResult(j, i) = 0;
end
if b(j) >= c(k - 1, j) & b(j) < c(k, j)
LSDResult(j, i) = ((b(j) - c(k - 1, j)) / (c(k, j) - c(k - 1, j)));
end
if b(j) >= c(k, j)
LSDResult(j, i) = 1;
end
end
end
end
end
end
1 matlab版本
2014a
2 参考文献
[1]李安乐,田晶京,赵峰,高锋阳.含光伏电源的配电网潮流计算[J].电测与仪表. 2020,57(10)