home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 4.ddi / OPTIM.DI$ / TOPTIM.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  6.2 KB  |  229 lines

  1. % Test suite for optimization toolbox
  2.  
  3. errcmd = ['err, disp(''Error evaluating: '');', ...
  4.     'disp(routines(item,:)); ',...
  5.     'error(''Error in optimization routine'')']; 
  6. %errcmd = 'err, disp(''Error in optimization routine''), pause';
  7. opts=foptions; 
  8.  
  9. if ~exist('item'), item = 1; end
  10. item = max(item, 1);
  11. if ~exist('verbosity'), verbosity=0, disp('verbosity variable is off'),  end
  12. if ~exist('test_long'), 
  13.     test_long=0, 
  14.     disp('test_long = 0 - so testing short version'), 
  15.     disp('test_long = 2 - test everything')            
  16. end
  17. f='toptimf';
  18. g='toptimg';
  19. gol=[-5,-3,-1];
  20. w=abs(gol); 
  21. vlb=-4*ones(2); 
  22. vub=-vlb;
  23. z2=zeros(2,1); 
  24. z22=zeros(2);
  25.  
  26. routines = [...
  27.     '[x, opts] = fminu(f, x0, o, [], 1);                       %1'
  28.     '[x, opts] = fminu(f, x0, o, g, 1);                          '
  29.     'o(7)=1;[x, opts] = fminu(f, x0, o, [], 1);                  '
  30.     'o(7)=1;[x, opts] = fminu(f, x0, o, g, 1);                   '
  31.     '[x, opts] = constr(f, x0, o,[],[],[],2);                  %5'
  32.     '[x, opts] = constr(f, x0, o,[],[],g ,2);                    '
  33.     'o(9)=1;[x, opts] = constr(f, x0, o,[],[],g ,2);             '
  34.     '[x, opts] = attgoal(f,x0, gol,w,o,vlb,vub,[],3);            '
  35.     'o(15)=3;[x,opts]=attgoal(f,x0,gol,w,o,-2*ones(2),vub,[],3); '
  36.     '[x, opts] = minimax(f,x0,o,[],[],[],4);                  %10'
  37.     '[x, opts] = minimax(f,x0,o,[],[],g, 4);                     '
  38.     'o(15)=5;[x, opts] = minimax(f,x0,o,[],[],g, 4);             '
  39.     '[x,opts] = leastsq(f,x0,o,[],5);                            '
  40.     '[x,opts] = leastsq(f,x0,o,g,5);                             '
  41.     'o(7)=1; [x,opts] = leastsq(f,x0,o,g,5);                  %15'
  42.     '[x,opts] = fsolve(''(x*x*x-[1,2;3,4])'',x0,o);                '
  43.     'o(5)=1;[x,opts] = fsolve(''(x*x*x-[1,2;3,4])'',x0,o);         '
  44.     'o(7)=1;[x,opts]=fsolve(''(x*x*x-[1,2;3,4])'',x0,o);           '
  45.     '[x,opts] = fsolve(f,x0,o,[],6);                             '
  46.     '[x,l]=lp(-[5 4 6],[1 -1 1;3 2 4;3 2 0],[20;42;30],x0);   %20'
  47.     '[x,l]=qp([1 -1;-1 2]/2,-[2;6],[1 1;-1 2;2 1],[2;2;3],x0);   '
  48.     '[x,l]=lp(f1,A,-b,x0,[],[],1);                               '
  49.     '[x, opts] = fmins(f, x0, o, [], 1);                         '
  50.     '[x, opts] = constr(f, x0, o, [], [],[],1);                  '
  51.     '[x, opts] = seminf(f, 2, x0, o, [], [],7);               %25'
  52.     '[x, opts] = seminf(f, 1, x0, o, [], [],8);                  '
  53.     '[x, opts] = fmin(f, x0, 3*pi-x0, o, 9);                     '
  54.     'o(9)=1; [x,opts] = leastsq(f,x0,o,g,5);                     '
  55.     'o(9)=1; [x, opts] = fminu(f, x0, o, g, 1);                  '
  56. ];
  57.  
  58.  
  59. % Variables for lp solution Pg 86 Schittkowski
  60. A = -[1 1 1 -2 
  61.     -1 -1 -1 -1 
  62.     -0.2 -0.5 -1 -2
  63.     -2 -1 -0.5 -0.2]; 
  64. b=[6,-10,-10,-10]';
  65. f1=[-0.5,-1,-0.5,-1]';
  66.  
  67. % Solutions
  68. X1=ones(1,2); 
  69. X01= [-1.2, 1];
  70.  
  71. X2=ones(1,2); 
  72. X02 = [-1.2, 1];
  73.  
  74. X3=ones(1,2);  
  75. X03 = [-1.2, 1];
  76.  
  77. X4=ones(1,2);  
  78. X04 = [-1.2, 1];
  79.  
  80. X5=[24, 12, 12];
  81. X05 = [10, 10, 10];
  82.  
  83. X6=[24, 12, 12];
  84. X06 = [10, 10, 10];
  85.  
  86. X7=[24, 12, 12];
  87. X07 = [10, 10, 10];
  88.  
  89. X8=[-4, -0.2564; -4, -4];
  90. X08 = zeros(2);
  91.  
  92. X9=[ -2 0.9179; -1.8290, -2];
  93. X09 = zeros(2);
  94.  
  95. X10=[4, 4];
  96. X010 = [0.1,0.1];
  97.  
  98. X11=[4, 4];
  99. X011 = [0.1,0.1];
  100.  
  101. X12=[8.7769, 0.6613];
  102. X012 = [0.1,0.1];
  103.  
  104. X13=[0.25783 0.25783];
  105. X013 = [0.3,0.4];
  106.  
  107. X14=[0.25783 0.25783];
  108. X014 = [0.3,0.4];
  109.  
  110. X15=[0.25783 0.25783];
  111. X015 = [0.3,0.4];
  112.  
  113. X16=[-0.12915 0.86022; 1.2903 1.1612];
  114. X016 = ones(2);
  115.  
  116. X17=[-0.12915 0.86022; 1.2903 1.1612]; 
  117. X017 = ones(2);
  118.  
  119. X18=[-0.12915 0.86022; 1.2903 1.1612]; 
  120. X018 = ones(2);
  121.  
  122. X19=[-0.12915 0.86022; 1.2903 1.1612]; 
  123. X019 = ones(2);
  124.  
  125. X20=[0; 15; 3];
  126. X020 = zeros(3,1);
  127.  
  128. X21=[2/3; 1+1/3];
  129. X021 = [0; 0];
  130.  
  131. X22=[0;26/3;0;4/3];
  132. X022 =  zeros(4,1);
  133.  
  134. X23=ones(1,2); 
  135. X023 = [-1.2, 1];
  136.  
  137. X24=ones(1,2); 
  138. X024 = [-1.2, 1];
  139.  
  140. % Semi-infinite:
  141. X25=[6.9559e-01   3.0521e-01   4.2615e-01];
  142. X025 =  [0.5,0.2,0.3];
  143.  
  144. X26=[ 0.2011   0.2011   0.1978];  
  145. X026 =  [0.2,0.2,0.2];
  146.  
  147. X27=asin(-1) + 2*pi;  
  148. X027 =  [-0.1];
  149.  
  150. X28=X14;
  151. X028 = X014;
  152.  
  153. X29=X1;
  154. X029 = X01;
  155.  
  156. FBEST = [ 1.0617e-11  7.6506e-11 3.9279e-09  6.4309e-15  -3.4560e+03  -3.4560e+03 -3.4560e+03  -3.8626e-01  5.5556e-02 -5.0657e-12 -1.5151e-12 1.0761e+01 1.2436e+02];
  157. FBEST = [ FBEST, 1.2436e+02 1.2436e+02  1.3011e-12  9.4929e-14  7.2413e-10 1.3011e-12  1.3011e-12  1.3011e-12  1.3011e-12 0 2.4745e-09 8.1719e-02 7.24e-6 -1 1.2436e+2 7.6506e-11];
  158. bestiters=[149    86   160    52    54    18    21   118    80    25     7     9 41    25    12    45    51    40    45     0     0     0   175   156 37 37 6 27  88];
  159. iters = bestiters; 
  160.  
  161. OLDTIME = [4.7224  3.6716 4.3786 2.8475 2.2460 1.2616 1.4257  9.7611 7.3355 2.2928 1.7030 2.1639 2.1210 3.5076 1.9999 1.6874 1.6444 1.6093 1.2460 0.0977 0.0976 0.2461 2.8318 4.8942 47.9852 35.1345 0 0 0];
  162.  
  163.  
  164.  
  165.  
  166. format compact
  167. if verbosity, routines, end 
  168.  
  169. sumiters =  0; 
  170. for item = item:min(size(routines))
  171.     o=(verbosity>0); o(9)=0; 
  172.     if test_long
  173.         eval(['x0 = X0',int2str(item),';'])
  174.     else
  175.         eval(['x0 = X',int2str(item),'-1e-9;'])
  176.     end
  177.     disp(routines(item,:))
  178.     t0 = clock;
  179.     eval(routines(item, :))
  180.     TIME(item) = etime(clock, t0);
  181.     TIME(item) - OLDTIME(item);
  182.     iters(item) = opts(10);
  183.     FV(item) = opts(8);
  184.     if (FV(item) > FBEST(item)+1e-4*(1e-3+abs(FBEST(item)))) disp('Worse function value');  eval(errcmd), end
  185.     if (FV(item) < FBEST(item)-1e-3) disp('Better function value!');  end
  186.     eval(['err = x - X', int2str(item), ';'])    
  187.     disp(routines(item,:))
  188.     if norm(err)>1e-3, eval(errcmd), end 
  189.     if (verbosity)
  190.         item
  191.         iteration_count = opts(10)
  192.     end
  193.     opts(10) = 0; 
  194.     sumiters = iters(item)+sumiters;
  195. end
  196.  
  197. if test_long  % Iteration check 
  198. findworse = find(bestiters<iters);
  199. if length(findworse)
  200.     difference = bestiters(findworse) - iters(findworse)
  201.     disp('------------Slower routines---------------')
  202.     disp(routines(findworse,:))
  203. end
  204. findbetter = find(bestiters>iters);
  205. if length(findbetter)
  206.     difference = bestiters(findbetter) - iters(findbetter)
  207.     disp('-----------------Faster routines---------------')
  208.     disp(routines(findbetter,:))
  209. end
  210. end
  211.  
  212. % sumiters = 1426 DecStation 8/9 /90
  213. if verbosity
  214.     sumiters
  215.     best_previous = 1426
  216. end
  217. if test_long == 2
  218.     pause(-2)
  219.     tutdemo
  220.     clear method
  221.     datdemo
  222.     clear method
  223.     bandemo
  224.     clear method
  225.     dfildemo
  226.     pause(-2)
  227. end
  228. disp('Optimization Toolbox Passed !')
  229.