Boxes in the most efficient way within boundaries of object and follow the following constraints.
The Goal: To fit 125 boxes in the most efficient way inside the total area. Starting Variables:
(1) 40% of the Boxes need to be between 60 and 85MSQ. (2) 40% of the boxes need to be between 86 and 110MSQ.
(3) 20% of the boxes need to be between 111 and 125mSQ. The breakdown doesn’t have to be exact to give the script some flexibility. Meaning you can have 41% +39% +20% = 100%.
Constraints:
1. A total MAXIMUM area of approximately 1600M per layer.
2. A maximum of 8 layers for a total of 12,800M per layer. Optimization can make as little or as many as 8 layers vertical to accommodate all boxes. So if script can achieve with 3 levels great. If needed all 8 levels, that's fine too. However, pay attention to next constraint (#3).
3. Approximately 15% of that space on each layer is off limits. (internal area) (blue area in example script) and the shape of the boundary cannot be modified to accommodate box design resulting in jagged lines for the internal area.
4. All generated squares/rectangles must have at least 3m touching an outside border (The Green lines).
5. All boxes must also be touching minimum 1M of border of the blue line.
6. If the boxes generated go outside the green boundary, they must be fillet to maintain the straight lines of the green boundaries.
7. Get as many of the boxes as possible a view towards the dots.
Could any one provide me a method or a way to start, if there are any useful links, please share with me. Thank you!
…
re is my problem... I need to arrange Boxes in the most efficient way within boundaries of object and follow the following constraints.
The Goal: To fit 125 boxes in the most efficient way inside the total area. Starting Variables:
(1) 40% of the Boxes need to be between 60 and 85MSQ. (2) 40% of the boxes need to be between 86 and 110MSQ.
(3) 20% of the boxes need to be between 111 and 125mSQ. The breakdown doesn’t have to be exact to give the script some flexibility. Meaning you can have 41% +39% +20% = 100%.
Constraints:
1. A total MAXIMUM area of approximately 1600M per layer.
2. A maximum of 8 layers for a total of 12,800M per layer. Optimization can make as little or as many as 8 layers vertical to accommodate all boxes. So if script can achieve with 3 levels great. If needed all 8 levels, that's fine too. However, pay attention to next constraint (#3).
3. Approximately 15% of that space on each layer is off limits. (internal area) (blue area in example script) and the shape of the boundary cannot be modified to accommodate box design resulting in jagged lines for the internal area.
4. All generated squares/rectangles must have at least 3m touching an outside border (The Green lines).
5. All boxes must also be touching minimum 1M of border of the blue line.
6. If the boxes generated go outside the green boundary, they must be fillet to maintain the straight lines of the green boundaries.
7. Get as many of the boxes as possible a view towards the dots.
Could any one provide me a method or a way to start, if there are any useful links, please share with me. Thank you!
…
ce issue with Rhino and shouldn't make an issue with EnergyPlus but just to have cleaner geometries, I untrimmed base surfaces so zones are closed brep now.
I also noticed that when you are adding multiple openings to a surface, the surface doesn't show-up in the output of createHBZoneFromHBSurfaces. The surfaces are there though and show up once you explode the zone! Again should be a tolerance issue for join. I need to take a closer look to both of these.
Also, in a number of the zones you had wall surfaces connected to createZoneFromHBSurfaces both before and after adding glazing. I removed parent surfaces so you don't end up having duplicate surfaces.
Back to adjacency which was your question, the issue happens since you have couple of zones with the same name so component was assuming them to be the same zone so it wouldn't solve the adjacency (Yes! it shouldn't. That was a bug which is fixed now). I changed the names and now it should find the surfaces that you are looking for.
Moreover, once you solve the adjacency, next solveAdjacency won't overwrite the BC unless you set remCurrentAdj to True.
Mostapha…
hino Mc Neel, autore di "Architettura Parametrica - Introduzione a Grasshopper", il primo manuale su Grasshopper. I corsi PLUG IT nascono dalla volontà di promuovere le nuove tecnologie digitali di supporto alla progettazione e condividere il know-how maturato attraverso ricerca, collaborazione con i più importanti studi di architettura e pubblicazioni internazionali. Verranno introdotte le nozioni base di Grasshopper approfondendo le metodologie della progettazione parametrica e le tecniche di modellazione algoritmica per la generazione di forme complesse. Il corso è rivolto a studenti e professionisti con esperienza minima nella modellazione 3D e si articolerà in lezioni teoriche ed esercitazioni. Argomenti trattati: - Introduzione alla progettazione parametrica: teoria, esempi, casi studio - Grasshopper: concetti base, logica algoritmica, interfaccia grafica - Nozioni fondamentali: componenti, connessioni, data flow - Funzioni matematiche e logiche, serie, gestione dei dati - Analisi e definizione di curve e superfici - Definizione di griglie e pattern complessi - Trasformazioni geometriche, paneling - Attrattori, image sampler - Data tree: gestione di dati complessi - Digital fabrication: teoria ed esempi - Nesting: scomposizione di oggetti tridimensionali in sezioni piane per macchine CNC Verrà rilasciato un attestato finale. INFO E PRENOTAZIONI: http://www.arturotedeschi.com/wordpress/?p=2914…
akes the linear regression of the Schroeder integral over 30 dB worth of decay. Whether it is T-15 or T-30, they all seek to estimate the RT, which is always always the time it takes for sound to decay 60 decibels.
The website has benchmarks, for your reference. You can find them under the 'Pachyderm' drop down menu, under 'Benchmarks'.
Your model may well require millions of rays to be accurate. It sounds like a very large space. I'm sorry if that is an unpleasant answer. Sometimes it does help to have a computer with more cores to help with this. I have gotten up to 90% processor usage on a 12 core machine before.
Arthur…
hat differ in shapes, sizes and height the facade would be a mess. Some spaces need some light while other can't have any. I would like to have full freedom of creation inside the building, to make it as functional as possible. Thats why i decided the parametric "skin" solution would be best. Since the location has industrial past (factories made of brick) i decided that brick would give interesting result.
I tried creating the definition on my own but since i lack skill in GH i got some problems (especially multiplication of bricks and the diffrence between each "level" (half a brick on y axis) caused problems for me.
I post my simple sketch explaining the idea of definition i would like to create (sorry about quality):
1 - Brep - I would like to use 25x12x6cm (classic brick) but as well experiment with diffrent shapes - like the one on the right with hole inside - that would give more light. Thats why i think the best solution would be using brep for this definition.
2- Multiplication - biggest problem for me - I don't know how tall the wall would be, what will be the final shape of Brep (brick) and that's why i would like to manipulate this with sliders as well. All the walls are flat (maybe it would be easier to use surface?). As i managed to multiply the bricks easy way i don't know how to gain control over height of the wall - for example that it is 30 bricks high, but has each second row moved on x axis by the distance of 1/2 brick. I tried using Series but with no success. Could you help me with that please?
3 - Rotation - i would like to use image sampler for that so i can "paint" where i want more sun and where i dont need it at all (black and white). The rotation has to be limited to 180 degrees as well. Obviously i didn't get here yet, but i never used image sampler so if you could give me some advice how to use component and how to create such images i would be really grateful.
4 - More of a concept thing - since the connection angles differ from 90 degrees i will have to figure out how to connect the parts of the wall at sides ;).
I would like to ask you for help with the defintion, since i am totally stuck at step 2. I post what i came up with so far. Thank you for your time and help!
PS. I post an image that is pretty similar to one of options i would like to check for my building.
…
nputs to run (please refer to the image)
Currently, here is how I set the data:
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { //Create default size
double defaultBaySize = 0; pManager.AddTextParameter("LotLib", "Llib", "Lot Library", GH_ParamAccess.tree); pManager.AddCurveParameter("BoundaryCrv", "BC", "Boundary Input", GH_ParamAccess.list); pManager.AddIntegerParameter("Direction", "D", "Direction of gridLines", GH_ParamAccess.item, 0); pManager.AddNumberParameter("CCsize", "S", "Distance from column to column", GH_ParamAccess.item, defaultBaySize); pManager.AddCurveParameter("GridCrv", "GC", "Take in curves input for gridlines", GH_ParamAccess.list);
}
protected override void SolveInstance(IGH_DataAccess DA) {/* Setup */ GH_Structure<GH_String> LotLib = new GH_Structure<GH_String>(); DA.GetDataTree(0, out LotLib); List<Curve> BoundaryCrv = new List<Curve>(); if(!DA.GetDataList(1, BoundaryCrv)) { return; } int Direction = 0; DA.GetData(2, ref Direction); double CCsize = 0; DA.GetData(3, ref CCsize);
List<Curve> GridCrvs = new List<Curve>(); DA.GetDataList(4, GridCrvs); if (!DA.GetDataList(4, GridCrvs)) { return; }}
Is there a way can set data in the way if the component does not receive inputs for BoundaryCrv but only GridCrvs, the BoundaryCrv List will empty.
Thank you very much …
mplex the models are. If we are running multi-room E+ studies, that will take far longer to calculate.
Rhino/Grasshopper = <1%
Generating Radiance .ill files = 88%
Processing .ill files into DA, etc. = ~2%
E+ = 10%
Parallelizing Grasshopper:
My first instinct is to avoid this problem by running GH on one computer only. Creating the batch files is very fast. The trick will be sending the radiance and E+ batch files to multiple computers. Perhaps a “round-robin” approach could send each iteration to another node on the network until all iterations are assigned. I have no idea how to do that but hope that it is something that can be executed within grasshopper, perhaps a custom code module. I think GH can set a directory for Radiance and E+ to save all final files to. We can set this to a local server location so all runs output to the same location. It will likely run slower than it would on the C:drive, but those losses are acceptable if we can get parallelization to work.
I’m concerned about post-processing of the Radiance/E+ runs. For starters, Honeybee calculates DA after it runs the .ill files. This doesn’t take very long, but it is a separate process that is not included in the original Radiance batch file. Any other data manipulation we intend to automatically run in GH will be left out of the batch file as well. Consolidating the results into a format that Design Explorer or Pollination can read also takes a bit of post-processing. So, it seems to me that we may want to split up the GH automation as follows:
Initiate
Parametrically generate geometry
Assign input values, material, etc.
Generate radiance/ E+ batch files for all iterations
Calculate
Calc separate runs of Radiance/E+ in parallel via network clusters. Each run will be a unique iteration.
Save all temp files to single server location on server
Post Processing
Run a GH script from a single computer. Translate .ill files or .idf files into custom metrics or graphics (DA, ASE, %shade down, net solar gain, etc.)
Collect final data in single location (excel document) to be read by Design Explorer or Pollination.
The above workflow avoids having to parallelize GH. The consequence is that we can’t parallelize any post-processing routines. This may be easier to implement in the short term, but long term we should try to parallelize everything.
Parallelizing EnergyPlus/Radiance:
I agree that the best way to enable large numbers of iterations is to set up multiple unique runs of radiance and E+ on separate computers. I don’t see the incentive to split individual runs between multiple processors because the modular nature of the iterative parametric models does this for us. Multiple unique runs will simplify the post-processing as well.
It seems that the advantages of optimizing matrix based calculations (3-5 phase methods) are most beneficial when iterations are run in series. Is it possible for multiple iterations running on different CPUs to reference the same matrices stored in a common location? Will that enable parallel computation to also benefit from reusing pre-calculated information?
Clustering computers and GPU based calculations:
Clustering unused computers seems like a natural next step for us. Our IT guru told me that we need come kind of software to make this happen, but that he didn’t know what that would be. Do you know what Penn State uses? You mentioned it is a text-only Linux based system. Can you please elaborate so I can explain to our IT department?
Accelerad is a very exciting development, especially for rpict and annual glare analysis. I’m concerned that the high quality GPU’s required might limit our ability to implement it on a large scale within our office. Does it still work well on standard GPU’s? The computer cluster method can tap into resources we already have, which is a big advantage. Our current workflow uses image-based calcs sparingly, because grid-based simulations gather the critical information much faster. The major exception is glare. Accelerad would enable luminance-based glare metrics, especially annual glare metrics, to be more feasible within fast-paced projects. All of that is a good thing.
So, both clusters and GPU-based calcs are great steps forward. Combining both methods would be amazing, especially if it is further optimized by the computational methods you are working on.
Moving forward, I think I need to explore if/how GH can send iterations across a cluster network of some kind and see what it will take to implement Accelerad. I assume some custom scripting will be necessary.…