A composite type is the right data structure, given that you have large arrays you need to store in your type.
-viral On Saturday, October 11, 2014 4:43:50 AM UTC+5:30, mfjo...@hotmail.com wrote: > > Dear Julia users, > > For a computationally challenging problem I'm trying to port an existing > design-optimization from MATLAB to Julia. Currently, the designs are > organized in a MATLAB struct and I am looking for some advice on how to > efficiently store and distribute the data for a parallel evaluation in > Julia. The idea of the MATLAB algorithm is to make some random changes in > each design, re-calculate their effiency (using everything in the MATLAB > struct) within a parallel loop, and sorting the designs based on their > updated efficiency. Below is how the data is organized in Matlab. I figured > a composite type ( http://julia.readthedocs.org/en/latest/manual/types/ ) > would be the relevant Julia structure, but I am not sure how to create a > vector of composite types and whether to use "type" or "immutable". Hence, > a specific suggestion about how to do this in Julia would be much > appreciated! > > Thank you and best regards, > Marcel > > > % setup structure to save designs (only once) > for d = 1:100 > design(d).efficiency = 99; > design(d).ind_eff = zeros(8,10000); > design(d).design = zeros(14,12,8); > design(d).X = zeros(196,22,8); > design(d).dX = zeros(144,22,8); > > for subNr=1:8 > for drawNr = 1:10000 > design(d).draws(subNr,drawNr).V = zeros(144,1); > design(d).draws(subNr,drawNr).expV = zeros(144,1); > design(d).draws(subNr,drawNr).sumExpV = zeros(144,1); > design(d).draws(subNr,drawNr).P = zeros(144,1); > design(d).draws(subNr,drawNr).PdX = zeros(144, 22); > design(d).draws(subNr,drawNr).sumPdX = zeros(144, 22); > design(d).draws(subNr,drawNr).ZZ = zeros(22,22); > end > end > end > > > % update efficiency > parfor d = 1:100 > updateEff( design(d) ); > end > > % sort designs based on updated efficiencies > [~,v]=sort( [design.efficiency] ); > design=design(v); > > > > > >