📄 fm_opffig.m
字号:
function fig = fm_opffig(varargin)% FM_OPFFIG create GUI for Optimal Power Flow settings%% HDL = FM_OPFFIG%%see OPF structure for settings%%Author: Federico Milano%Date: 11-Nov-2002%Updte: 08-Feb-2003%Version: 1.0.2%%E-mail: Federico.Milano@uclm.es%Web-site: http://www.uclm.es/area/gsee/Web/Federico%% Copyright (C) 2002-2008 Federico Milanoglobal Settings Path OPF Theme Figif nargin switch varargin{1} case 'vlimits' a = fm_input({'Vmax','Vmin'},'Voltage Limits',1, ... {num2str(OPF.vmax),num2str(OPF.vmin)},'off'); if ~isempty(a) try OPF.vmax = str2num(a{1}); catch fm_disp('Maximum voltage limit couldn''t be changed') OPF.vmax = 1.2; end try OPF.vmin = str2num(a{2}); catch OPF.vmin = 0.8; fm_disp('Minimum voltage limit couldn''t be changed') end end if isempty(OPF.vmax) fm_disp('Maximum voltage limit couldn''t be changed') OPF.vmax = 1.2; end if isempty(OPF.vmin) fm_disp('Minimum voltage limit couldn''t be changed') OPF.vmax = 0.8; end case 'flows' OPF.enflow = ~OPF.enflow; hdl = findobj(Fig.opf,'Tag','PopupMenu2'); if OPF.enflow, set(gcbo,'Checked','on') set(hdl,'Enable','on'); else set(gcbo,'Checked','off') set(hdl,'Enable','off'); end case 'voltages' OPF.envolt = ~OPF.envolt; if OPF.envolt, set(gcbo,'Checked','on') else set(gcbo,'Checked','off') end case 'reactive' OPF.enreac = ~OPF.enreac; if OPF.enreac, set(gcbo,'Checked','on') else set(gcbo,'Checked','off') end case 'tiebreak' OPF.tiebreak = ~OPF.tiebreak; if OPF.tiebreak, set(gcbo,'Checked','on') else set(gcbo,'Checked','off') end case 'omega' lasterr(''); hdl_omeg = findobj(Fig.opf,'Tag','EditText1'); s_omega = get(hdl_omeg,'String'); try, eval(['OPFomega = ',s_omega,';']) catch, fm_disp(lasterr,2), set(hdl_omeg,'String',OPF.omega_s), return, end if max(OPFomega) > 1 | min(OPFomega) < 0 fm_disp('The weighting factor must be within the range [0,1].',2) set(hdl_omeg,'String',OPF.omega_s), return end [ao,bo] = size(OPFomega); if ao > 1 & bo > 1 fm_disp('The weighting factor must be a vector.',2) set(hdl_omeg,'String',OPF.omega_s), return end OPF.omega = OPFomega; OPF.omega_s = s_omega; fm_disp(['Parameter "OPF.omega" set to "',OPF.omega_s,'".'],1) case 'lmin' lasterr(''); hdl_lmin = findobj(Fig.opf,'Tag','EditText2'); s_lmin = get(hdl_lmin,'String'); try eval(['OPFlmin = ',s_lmin,';']) catch fm_disp(lasterr,2), set(hdl_lmin,'String',OPF.lmin_s) return end if max(OPFlmin) > OPF.lmax fm_disp('Lambda_min must be less than Lambda_max.',2) set(hdl_lmin,'String',OPF.lmin_s), return, end [al,bl] = size(OPFlmin); if al > 1 | bl > 1 fm_disp('The loading parameter must be a scalar.',2) set(hdl_lmin,'String',OPF.lmin_s) return end OPF.lmin = OPFlmin; OPF.lmin_s = s_lmin; fm_disp(['Parameter "OPF.lmin" set to "',OPF.lmin_s,'".'],1) end returnendif Fig.opf, figure(Fig.opf), return, endrs = 0.4344/0.5;dy = (0.5-0.4344)/0.5;df = 1+1.35*(0.5-0.4344);flussi = {'Currents'; 'Active Powers'; 'Apparent Powers'};metodi = {'Newton Direction'; 'Mehrotra Predictor/Corrector'};tipi = {'Single OPF'; 'Pareto Set'; 'Dayly Forecast'; 'ATC (by CPF)'; 'ATC (by sensitivity analysis)'};guess = {'Flat Start', 'Actual Power Flow Solution'};if strcmp(Settings.platform,'MAC') aligntxt = 'center'; dm = 0.0075;else aligntxt = 'left'; dm = 0;endh0 = figure('Units','normalized', ... 'Color',Theme.color02, ... 'Colormap',[], ... 'CreateFcn', 'Fig.opf = gcf;', ... 'DeleteFcn', 'Fig.opf = 0;', ... 'MenuBar','none', ... 'Name','PSAT-OPF', ... 'NumberTitle','off', ... 'PaperPosition',[18 180 576 432], ... 'PaperUnits','points', ... 'Position',sizefig(0.5686,0.5), ... 'Resize','on', ... 'ToolBar','none', ... 'FileName','fm_opffig');fm_set colormap% Menu Fileh1 = uimenu('Parent',h0, ... 'Label','File', ... 'Tag','MenuFile');h2 = uimenu('Parent',h1, ... 'Callback','close(gcf)', ... 'Label','Exit', ... 'Tag','NetSett', ... 'Accelerator','x');% Menu Edith1 = uimenu('Parent',h0, ... 'Label','Edit', ... 'Tag','MenuEdit');h2 = uimenu('Parent',h1, ... 'Callback','fm_setting', ... 'Label','General Settings', ... 'Tag','ToolSett', ... 'Accelerator','s');% Menu Runh1 = uimenu('Parent',h0, ... 'Label','Run', ... 'Tag','MenuRun');h2 = uimenu('Parent',h1, ... 'Callback','fm_set opf', ... 'Label','Run OPF', ... 'Tag','ToolOPFSett', ... 'Accelerator','z');% Menu Optionsh1 = uimenu('Parent',h0, ... 'Label','Options', ... 'Tag','MenuOpt');h2 = uimenu('Parent',h1, ... 'Callback','fm_opffig flows', ... 'Label','Enable Flow limits', ... 'Tag','Opt1');if OPF.enflow, set(h2,'Checked','on'),else, set(h2,'Checked','off'),endh2 = uimenu('Parent',h1, ... 'Callback','fm_opffig voltages', ... 'Label','Enable Voltage Limits', ... 'Tag','Opt2');if OPF.envolt, set(h2,'Checked','on'),else, set(h2,'Checked','off'),endh2 = uimenu('Parent',h1, ... 'Callback','fm_opffig reactive', ... 'Label','Enable Reactive Limits', ... 'Tag','Opt3');if OPF.enreac, set(h2,'Checked','on'),else, set(h2,'Checked','off'),endh2 = uimenu('Parent',h1, ... 'Callback','fm_opffig tiebreak', ... 'Label','Enforce Tiebreaking', ... 'Tag','Opt3');if OPF.tiebreak, set(h2,'Checked','on'),else, set(h2,'Checked','off'),endh2 = uimenu('Parent',h1, ... 'Callback','fm_opffig vlimits', ... 'Label','Set Voltage Limits', ... 'Tag','Opt4');%a = fm_input({'Vmax','Vmin'},'OPF settings',1,{num2str(OPF.vmax),num2str(OPF.vmin)},'off')h1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color02, ... 'ForegroundColor',Theme.color03, ... 'Position',[0.025 0.275*rs 0.95 0.675*df], ... 'Style','frame', ... 'Tag','Frame1');% Popup Menush1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color04, ... 'Callback', 'OPF.method = get(gcbo,''Value'');', ... 'FontName', Theme.font01, ... 'ForegroundColor',Theme.color05, ... 'Position',[0.608 0.79*rs+dy 0.342 0.06*rs], ... 'String',metodi, ... 'Style','popupmenu', ... 'Tag','PopupMenu1', ... 'Value',OPF.method);h1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color04, ... 'Callback', 'OPF.flow = get(gcbo,''Value'');', ... 'ForegroundColor',Theme.color05, ... 'FontName', Theme.font01, ... 'Position',[0.608 0.64*rs+dy 0.342 0.06*rs], ... 'String',flussi, ... 'Style','popupmenu', ... 'Tag','PopupMenu2', ... 'Value',OPF.flow);if OPF.enflow set(h1,'Enable','on')else set(h1,'Enable','off')endh1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color02, ... 'HorizontalAlignment','left', ... 'Position',[0.608 0.71*rs+dy 0.3 0.05*rs], ... 'String','Flow Limits', ... 'Style','text', ... 'Tag','StaticText11');h1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color02, ... 'HorizontalAlignment','left', ... 'Position',[0.608 0.86*rs+dy 0.3 0.05*rs], ... 'String','Solving Method', ... 'Style','text', ... 'Tag','StaticText12');h1 = uicontrol('Parent',h0, ... 'Units', 'normalized', ... 'BackgroundColor',Theme.color04, ...
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -