⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bnbguicb.m

📁 大部分都是数学建模的资料,大家要多多支持啊!
💻 M
📖 第 1 页 / 共 2 页
字号:
   if ~isempty(data.nonlcon), eval(['edit ',data.nonlcon]); else edit; end;
case('numx')
   numx=strtonum(get(gcbo,'String'));
   if numx>=0 & numx==round(numx)
      data.numx=numx;
      if numx==0
         data.x0=[];
         data.xstatus=[];
         data.xlb=[];
         data.xub=[];
         onoffx('off');
      else
         lx=size(data.x0,1);
         if numx>lx
            data.x0=[data.x0;zeros(numx-lx,1)];
            data.xstatus=[data.xstatus;zeros(numx-lx,1)];
            data.xlb=[data.xlb;zeros(numx-lx,1)];
            data.xub=[data.xub;ones(numx-lx,1)];
         else
            data.x0=data.x0(1:numx);
            data.xstatus=data.xstatus(1:numx);
            data.xlb=data.xlb(1:numx);
            data.xub=data.xub(1:numx);
         end;
         data.selx=selectx;
         handle=findobj('Tag','xlist');
         if numx<data.selx, set(handle,'Value',numx); data.selx=selectx; end;
         set(handle,'String',num2str([1:numx]'));
         updatex(data);
         onoffx('on');
      end;
   end;
case('numpar')
   numpar=strtonum(get(gcbo,'String'));
   if numpar>=0 & numpar==round(numpar)
      data.numpar=numpar;
      if numpar==0
         data.par=[];
         onoffpar('off');
      else
         lpar=size(data.par,1);
         if numpar>lpar
            data.par=[data.par;zeros(numpar-lpar,1)];
         else
            data.par=data.par(1:numpar);
         end;
         data.selpar=selectpar;
         handle=findobj('Tag','parlist');
         if numpar<data.selpar, set(handle,'Value',numpar); data.selpar=selectpar; end;
         set(handle,'String',num2str([1:numpar]'));
         updatepar(data);
         onoffpar('on');
      end;
   end;
case('to workspace')
   assignin('base','fun',data.fun);
   assignin('base','A',data.A);
   assignin('base','B',data.B);
   assignin('base','Aeq',data.Aeq);
   assignin('base','Beq',data.Beq);
   assignin('base','nonlcon',data.nonlcon);
   disp('The variables fun, A, B, Aeq, Beq and nonlcon are loaded in the workspace for editing.');
case('from workspace')
   data.fun=evalin('base','fun','disp(''fun not found in workspace.'');');
   data.A=evalin('base','A','data.A');
   data.B=evalin('base','B','data.B');
   data.Aeq=evalin('base','Aeq','data.Aeq');
   data.Beq=evalin('base','Beq','data.Beq');
   data.nonlcon=evalin('base','nonlcon','data.nonlcon');
   disp('The variables fun, A, B, Aeq, Beq and nonlcon are loaded from the workspace.');   
   set(findobj('Tag','fun'),'String',data.fun);
   set(findobj('Tag','nonlcon'),'String',data.nonlcon);
case('set1')
   data.settings(1)=get(gcbo,'Value');
case('set2')
   data.settings(2)=get(gcbo,'Value');
case('set3')
   data.settings(3)=get(gcbo,'Value');
case('maxSQPiter')
   data.maxSQPiter=strtonum(get(gcbo,'String'));
case('opt1')
   set(findobj('Tag','opt2'),'Value',0);
   data.selopt=1;
   updateopt(data);
case('opt2')
   set(findobj('Tag','opt1'),'Value',0);
   data.selopt=2;
   updateopt(data);
case('optlist')
   [data.selopt data.seloptpar]=selectopt;
   updateopt(data);
case('optedit')
   optparval=get(gcbo,'String');
   number=strtonum(optparval);
   if number~=0 | optparval=='0', optparval=number; end;
   eval(['data.options',num2str(data.selopt),'.',data.optliststring{data.seloptpar},'=optparval;']);
case('errorslider')
   handle=findobj('Tag','error BNB GUI');
   errmsg=get(handle,'UserData');
   handle=findobj('Tag','errorslider');
   errorslider=get(handle,'Value');
   handle=findobj('Tag','errormessage');
   errmsg=textwrap(handle,errmsg);
   errmsg=scrolltext(errmsg,errorslider,4);
   set(handle,'String',errmsg);
end;

function selx=selectx;
handle=findobj('Tag','xlist');
selx=get(handle,'Value');

function updatex(data);
handle=findobj('Tag','xub');
set(handle,'String',num2str(data.xub(data.selx)));
handle=findobj('Tag','x0');
set(handle,'String',num2str(data.x0(data.selx)));
handle=findobj('Tag','xlb');
set(handle,'String',num2str(data.xlb(data.selx)));
handle=findobj('Tag','continuous');
set(handle,'Value',data.xstatus(data.selx)==0);
handle=findobj('Tag','integer');
set(handle,'Value',data.xstatus(data.selx)==1);
handle=findobj('Tag','fixed');
set(handle,'Value',data.xstatus(data.selx)==2);

function onoffx(onoff);
handle=findobj('Tag','xlist');
set(handle,'Enable',onoff);
handle=findobj('Tag','xub');
set(handle,'Enable',onoff);
handle=findobj('Tag','x0');
set(handle,'Enable',onoff);
handle=findobj('Tag','xlb');
set(handle,'Enable',onoff);
handle=findobj('Tag','continuous');
set(handle,'Enable',onoff);
handle=findobj('Tag','integer');
set(handle,'Enable',onoff);
handle=findobj('Tag','fixed');
set(handle,'Enable',onoff);

function selpar=selectpar;
handle=findobj('Tag','parlist');
selpar=get(handle,'Value');

function updatepar(data);
handle=findobj('Tag','par');
set(handle,'String',num2str(data.par(data.selpar)));

function onoffpar(onoff);
handle=findobj('Tag','parlist');
set(handle,'Enable',onoff);
handle=findobj('Tag','par');
set(handle,'Enable',onoff);

function [selopt,seloptpar]=selectopt;
handle=findobj('Tag','opt1');
tmp=get(handle,'Value');
if tmp==1, selopt=1; else selopt=2; end;
handle=findobj('Tag','optlist');
seloptpar=get(handle,'Value');

function updateopt(data);
handle=findobj('Tag','opt1');
set(handle,'Value',data.selopt==1);
handle=findobj('Tag','opt2');
set(handle,'Value',data.selopt==2);
eval(['optparval=optimget(data.options',num2str(data.selopt),',''',data.optliststring{data.seloptpar},''');']);
handle=findobj('Tag','optedit');
set(handle,'String',optparval);

function num=strtonum(string)
tmp=str2num(string);
if isempty(tmp), num=0; else num=tmp; end;
if any(size(num)>1), num=0; end;

function uierror(errmsg)
handle=guierr;
if ischar(errmsg), errmsg=cellstr(errmsg); end;
set(handle,'UserData',errmsg);
bnbguicb('errorslider');

function resultsmsg=updateresults(results)
if isempty(results.errmsg)
   line1='Results BNB18:';
   line2=sprintf('Z    is %12.4g',results.Z);
   line3='X    is ';
   line4=sprintf('%12.4g',results.X);
   line5=sprintf('t    is %12.1f seconds',results.t);
   line6=sprintf('c    is %12d cycles',results.c);
   line7=sprintf('fail is %12d cycles',results.fail);
   resultsmsg={line1 line2 line3 line4 line5 line6 line7};
else
   line1='Results BNB18:';
   line2='Error.';
   line3=results.errmsg;
   resultsmsg={line1 line2 line3};
end;

function showresults(resultsmsg);
if ischar(resultsmsg), resultsmsg=cellstr(resultsmsg); end;
handle=findobj('Tag','resultsslider');
resultsslider=get(handle,'Value');
handle=findobj('Tag','results');
resultsmsg=textwrap(handle,resultsmsg);
resultsmsg=scrolltext(resultsmsg,resultsslider,8);
set(handle,'String',resultsmsg);

function disptext=scrolltext(text,slidervalue,visiblelines);
if ischar(text), text=cellstr(text); end;
if visiblelines<1, disptext={''}; return; end;
textlines=size(text,1);
if textlines<1, disptext={''}; return; end;
hiddenlines=max(0,textlines-visiblelines);
hiddenlinesabove=round((1-slidervalue)*hiddenlines);
disptext=text(hiddenlinesabove+1:hiddenlinesabove+min(visiblelines,textlines));

function [succes,matrix]=loadmatrix(matrixname);
succes=0; matrix=[];
file=uigetfile('*.mat',['Select mat-file for matrix ',matrixname,'.']);
if file~=0 
   if all(file(size(file,2)-3:size(file,2))=='.mat')
      foundfile=1;
      eval(['load ',file,' ',matrixname,';'],'foundfile=0; uierror(''File not found.'');');
      if foundfile==1
         if exist(matrixname), matrix=matrixname; succes=1;
         else uierror([matrixname,' has not been updated']); end;
      end;
   else uierror({'No mat-file.' [matrixname,' has not been updated.']}); end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -