SuccessTest.m 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. %% ------------------------------ Note ------------------------------------
  2. % 这是原程序的并行计算版本
  3. % 不要出现任何的全局变量,以免出现内存访问错误,因为并行池之间的内存不是共享的
  4. %% ------------------------------ END--------------------------------------
  5. close all;clear all;clc
  6. [Mission_Param, Environment_Param, Normalized_Param] = paraSet(); % 全局变量
  7. % global Normalized_Param
  8. tscale = Normalized_Param.tscale;
  9. guesstf = 5; % 时间的初始猜想
  10. x0 = [0;0;0;1;1;1;guesstf]; % initial guesses
  11. %% ------------The pseudo-arclength continuation method-------------
  12. % tic
  13. % [X,~,param] = arclength('constain_InverseGauss',x0,1,Mission_Param, Environment_Param);
  14. % f = constain_InverseGauss(X,param,Mission_Param, Environment_Param); %
  15. % toc
  16. % figPlot;
  17. %% ---------------Test---------------
  18. N_iter = 100;
  19. RandMax = 0.2;
  20. Success_InverseGauss = 0.0;
  21. Success_Gauss = 0.0;
  22. Success_Flag = zeros(N_iter, 2);
  23. for iter = 1:N_iter
  24. % x0 = [1;1;1;0;0;0;guesstf]; % initial guesses
  25. % x0_Rand = 1 + RandMax*rand*2-RandMax;
  26. % x0 = x0 .* x0_Rand;
  27. x0 = [rand(6, 1); rand*3+3];
  28. fun_name_InverseGauss = 'constain_InverseGauss';
  29. fun_name_Gauss = 'constain_Gauss';
  30. Options_fsolve = optimset('TolX',1e-12','TolFun',1e-12,'MaxIter',300,...
  31. 'MaxFunEvals',10000,'FunValCheck ','on' ,'LargeScale','off',...
  32. 'Algorithm','trust-region-dogleg','Display','iter',...
  33. 'PrecondBandWidth',1,'UseParallel',true);
  34. [~,~,Flag_IG] = fsolve(fun_name_InverseGauss,x0,Options_fsolve,0.0,Mission_Param, Environment_Param);
  35. [~,~, Flag_G] = fsolve(fun_name_Gauss,x0,Options_fsolve,0.0,Mission_Param, Environment_Param);
  36. if Flag_IG
  37. Success_InverseGauss = Success_InverseGauss+1;
  38. Success_Flag(iter,1) = 1;
  39. end
  40. if Flag_G
  41. Success_Gauss = Success_Gauss+1;
  42. Success_Flag(iter, 2) = 1;
  43. end
  44. disp(['测试进度:', num2str(100*iter/N_iter), '% ============== InverseGauss成功率:', num2str(100 * Success_InverseGauss/iter), '% ============== Gauss成功率:', num2str(100 * Success_Gauss/iter)])
  45. end
  46. %%
  47. % save(['RandMax', num2str(RandMax),'.mat'])