meta data for this page
Matlab code example for writing Sobol sample to joblist.txt
By Navid Delgarm
Notes:
- This MATLAB script file will be run in MATLAB version 2014 and above. No using 2013, 2012… please.
- The generated joblist.txt file will be saved in Matlab's current working directory. To change the location, please edit line 47.
%%% General code for producing joblist.txt in MATLAB environment%% % By: Navid Delgarm% clc; clear ; close all; format short tic % to Know the run time %%% UpperBand and lowerBand of each parameter%%%% %%%This MATLAB script file includes 6 arbitrary parameters%%% LB1=0; UB1=359; LB2=2; UB2=6; LB3=0; UB3=1; LB4=10; UB4=50; LB5=0; UB5=180; LB6=0; UB6=0.5; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=2000; % number of sample points nVar=6; % number of decision variables %%%Implementation of different sampling methods. You can program any arbitrary sampling method in this part%%%%% %%% Here is Sobol sequences method in MATLAB %%% p = sobolset(nVar,'Skip',1e3,'Leap',1e2); p = scramble(p,'MatousekAffineOwen'); A=net(p,N); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% The generated numbers are transferred to their correct range of parameters and rounded to two decimal places %%% x1=round((LB1+(UB1-LB1).*A(:,1))*100)/100; x2=round((LB2+(UB2-LB2).*A(:,2))*100)/100; x3=round((LB3+(UB3-LB3).*A(:,3))*100)/100; x4=round((LB4+(UB4-LB4).*A(:,4))*100)/100; x5=round((LB5+(UB5-LB5).*A(:,5))*100)/100; x6=round((LB6+(UB6-LB6).*A(:,6))*100)/100; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Here the joblist.txt is created automatically%%% y1=(1:N)'; % job IDs: 1,2,3,4,...,N y2=zeros(N,2); % Two zero columns for Weather file and IDF file index (0,0) T = table(y1,y2,x1,x2,x3,x4,x5,x6); writetable(T,'table.txt'); fid = fopen('table.txt', 'r') ; fgetl(fid) ; buffer = fread(fid, Inf) ; fclose(fid); fid = fopen('joblist.txt', 'w') ; fwrite(fid, buffer) ; fclose(fid) ; delete('table.txt'); t1=toc/3600; H=floor(t1); t2=(t1-H)*60; M=floor(t2); t3=(t2-M)*60; S=floor(t3); %Show the run time disp(sprintf('The run time of joblist.txt production is %g:%g:%g',H,M,S)) %%% the joblist.txt based on the Sobol sequences method is on the desktop%%% %END%