difference consists of.
An Evolutionary Solver/Genetic Algorithm is an implementation of Metaheuristics. Metaheuristics tend to be flexible solvers, applicable to a wide variety of problems, fairly easy to implement, but slow. Other examples of Metaheuristic algorithms would be Random Search, Scatter Search, Simulated Annealing and do on. These algorithms are often modelled on physical or biological processes.
Simulated Annealing for example simulates the physical process of annealing (who'd have thunk it), which is basically the slow cooling of a material which allows it to settle into a crystalline lattice, i.e. a low energy distribution of all the atoms. I'm currently adding an SA solver to Galapagos, and in fact just yesterday managed to get the first successful run: http://www.youtube.com/watch?v=VWtYLv-4oP0
Metaheuristics are especially useful for those cases where little is known about the problem ahead of time. If the problem search-space is mathematically well defined (differentiable, especially), then you can use more targeted algorithms such as the Newton-Raphson method, Pareto-search or Uphill search. You can still use these methods on non-differentiable search-spaces, but it involves sampling the local region to death to get an estimate of the differential. This can be a very costly enterprise, especially in high dimensional search-spaces. In a two-dimensional search-space you'll need 3 to get a lame estimate and 4 to get a halfway decent estimate and 8 to get a good estimate. In three-dimensional search space you already need 26 samples, and the number of samples grows exponentially with higher dimensions.
If you have a specific problem you're trying to solve, Metaheuristics are probably not the best solution, even though they may be easiest to program. Rhino uses something akin to Newton-Raphson for certain problems and that's fast enough to run in real-time.
Divide-and-Conquer algorithms are also quite popular. Sometimes they are called Binary-Search or Tree-Search algorithms as well. Their basic premise is to sample the search-space at a few intervals (but enough to capture the needed detail), then find two neighbours with promising values and sample again in between these two. Then repeat. Each new iteration typically doubles accuracy, which is great because then you only need ~30 ~40 iterations to get an answer as good as possible with double-precision floating point accuracy. However not all problems lend themselves well to this sort of search and in higher dimensions it starts getting slow with disconcerting alacrity.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 1:54am on August 15, 2011
er from moltiple curves the represent the area of floor plans,
but the problem is, I cant fine a way to intelligently divide the curves - responsively to the radiation analysis color (for example - that yelow area on of the building will have more division on each floor plan)
do you have any ideas on how to do that?
i tried to use attractors be failed miserably..
THANKS,
Limor.…
write a definition that represents the following surface that I have created out of paper.
This is essentially a squared surface subdivided into triangular segments. For that reason I was hoping I could use Zubin's example about triangles in chapter 3 of his book.
I'm sure, you guys know these kind of folding technique, but to clarify the pattern of the surface, here's a quick diagram:
My approach was to use the point cloud out of Zubani's example and select points with the Cull Nth component according to the pattern shown in the diagram. These points I would then offset with a z-vector component while keeping the distance between the points fixed.
However, after spending now several days trying to figure this out, I definitely ran into a wall..
As I see it, the example generates multiple points for the same coordinates, meaning there are occasions where there 6 points on top of each other.
Further, the Cull Nth component doesn't work exactly as I've hoped, the problem lies in the transition from one row to another..
I was also thinking instead of creating a series of points and then trying to filter specific points out to create (a) the surfaces and (b) the offset, maybe I should start creating these separate lists from the beginning?
Or, instead of point cloud series, using a surface and the sDivide component?
As you see, I am pretty confused/lost in the problem... any help would be greatly appreciated!
Thanks!
…
a competition this year where we will be constructing the complete house.
http://www.heliomet.org/
The house has always had the notion of large self shading screen on its south facade. However the self shading aspect of this had never really been developed and it was only ever really an extruded pretty dia-grid pattern.
Ultimately we imagine the perforations to be milled out of foam which could then be laminated in a surf board kind of fashion.
I have done some work with optimization through geco and galapagos before, so I imagined I could do something similar to optimise the openings for maximum radiation in winter/minimum in summer to the internal space.
Because of the nature of the pattern and large number of perforations though, each time galapagos will try a different iteration, it has to trim all the openings on both faces of the screen, or boolean difference for it to be meshed and exported. Whicever way i do it, it just seems too heavy a process for testing iterations.
I've also thought about maybe optimising a single opening, or set of openings, and then trying to combine them back into an overall.
I have attached the grasshopper file I was messing around with, where i was predominantly just looking at a dia-grid on front on back face of my 'screen' with a number variables to manipulate them. Lofting between the corresponding shapes gives some idea of a pattern with more '3 dimensionality' and interest. As I said, once i started trying to set this up ith geco/galapagos to look at shading optimisation it was way too heavy.
I would just be interested in anyones take/experience in how to approach this self shading project in grasshopper, to get me started on a good path as I'm sure there are better ways i dont know of.
Thanks
Arrash
…
ells on nurbs surfaces. It references GH_IO.dll, Grasshopper.dll and Rhinocommon.dll.
Custom Class : GS_Mesh
Custom Type : GHType_GSMesh : GH_Goo<GSMesh>
Custom Parameter : GHParam_GSMesh : GH_Param<GHType_GSMesh>
Now, i'm developing a set of structural analysis components to relax gridshells. Those components are grouped in a new project called "Marsupilami".
Naturally my components would eat GS_Mesh objects and relax them. My project references GH_IO.dll, Grasshopper.dll, Rhinocommon.dll and Gridshell.dll.
But I can't build my code because I get the following error, where I try to instantiate a GHType_GSMesh object :
Errorr 3 The type 'Grasshopper.Kernel.Types.GH_Goo`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'Grasshopper, Version=1.0.0.20, Culture=neutral, PublicKeyToken=null'. C:\Documents and Settings\l.dupeloux.TESS\Mes documents\Dropbox\Dev\Marsupilami\1 - visual studio\Marsupilami\GHComponents\GHComponent_GSMeshRelax.cs 97 13 Marsupilami
I've checked many times but the assembly seems to be referenced in both projects (local copy = false) in the required version (1.0.0.20).
Do you have any idea how to solve this problem ?
Many Thanks
Lionel
…
try to optimise the form maybe will use Rhino Phyton... I will try to continue this script to pass trough potential method, which will modify the hull shape, and get the optimum shape. For now there is a problem with that Open Foam works only on linux and I am looking for other free alternative for CFD.. Just to investigate the resistance fast, so to deform and modify the shape... Later with the deformed shape will do 3 passes with deform, compare, deform with fast potential solver. And the last two shapes which I liked could pass trough viscous solver so I can compare the difference, cost, performance, production. Does somebody know such free potential code for windows I could try? After getting free CFD code. IDEA: The question will be how to connect them (the outputs of CFD with deformations in Rhino) so taking PressureXYZ vector fields from CFD, in table with coordinates for each point and amount of deformation in each direction putting them in Rhino (in scalar form in table with position of the control point amount of deformation and direction. So using Rhino nudge comands to deform the body. Deforming the hull using the control points, or control curves with soft body deformation. Maybe there will be a high dense cage where is the higesht point in the table and soft deforming proportionally the rest points. There sould be two limiting lines (which user will specify in top view) up to where the deformation can be done, for the cylindrical part. So the curvature should smooth with g2-g3 curvature up to this meeting points of optimised stern, bow with the cylindrical left alone part. At the end there will be optimised hull form for lowest Pressure = Resistance in some constrains (limiting lines for the untouched cylindrical part for example) for current LBD and displacement. With possibility to get linesplan.. Later time begining shape can be connected with Tables with emperical or statistical formulas from the rules for specific ship. If somebody wants to join this quest is more than welcome
Here is an example picutre which will show me where do dig, and where to put material for the deformation of the body: …
uts an instance of a class type, which I refer to as Class Instance A for this discussion post.
Component B, has a for-loop, through which it does a few things, and makes "n" number of variations (in this case, just 3) of Class Instance A. Simplified/generalized structure of Component B is as follows:
a=[]
for i in range (n):
.....variation = DoSomething (StartShape)
.....a.append(variation)
.....for obj in ghenv.Component.OnPingDocument().Objects:
..........if obj.Name == "MakeAssembly": ...............obj.ExpireSolution(False)
I am not sure if I am using the ExpireSolution method correctly here. I also have found this (Grasshopper.Instances.ActiveCanvas.Document.NewSolution(False)) from some other discussions, but it doesn't seem to solve this problem. Or maybe I have the placement of ExpireSolution or NewSolution wrong. Upon pressing F6 then F5, Component B keeps updating Class Instance A, instead of "resetting" it to its original condition. For-loop in Component B must have the original Class Instance A every time, in order for it to spit out variations. I need to find a way to expire the solution for Component A only, at the end of each For-loop. Eventually, I need it to loop 100+ times, so manually pressing F5 is not really an option... Below is an image of what should happen:
What is the best way to tackle this problem (in either Grasshopper-Python or IronPython), so that the same original Class Instance A is fed in every time the loop is run in Component B?
Thank you! …
r ideal surface so they add up where lots of points or lines cluster and create rather unintuitive bulges form a 3D modeler's perspective, here done with Millipede's Geometry Wrapper:
I've learned to do marching tetrahedra or cubes in Python to create the surface as needed from a implicit ( f(x,y,z) = 0 ) mathematical equation based on raw trigonometry but am not yet sure how to define an equation for Rhino user created input items like this or find a way to make marching cubes accept such input let alone one that doesn't treat each geometry item as an electric charge with so little decay.
This would afford an old school "organic" modeling paradigm that T-Splines replaced, but the T-Spines pipe command can't do nearby lines right either, which just makes overlapping junk. Metaballs and lines are not as elegant in that there is a real "dumb clay" aspect to the result that affords little natural structure beyond just smoothing, but still, if it works at all that beats T-Splines, and then I can feed the crude mesh result into Kangaroo MeshMachine to afford surface tension relaxation that will add elegant form to it.
I need both quick hacks and some help on how to deeply approach the mathematics of the required isosurface, now that I can think in Python better than ever.
I got a hint the other day here, about using a different power of fall-off but am not sure how to do the overall task mathematically:
"and just as with point based potentials, one can use different power laws for the distance, function, resulting it different amounts of rounding at the junctions. Below is with a 1/d^3 law for comparision with the above 1/d" - Daniel Piker
http://www.grasshopper3d.com/forum/topics/meshes?commentId=2985220%3AComment%3A1324050
He also included this link about bulging:
http://paulbourke.net/geometry/implicitsurf/
Am I supposed to create an actual implicit equation for my assigned points and lines and use that with marching cubes to surface it? If so, how do I define that equation, at all, and then how to control bulging too?
…
aching my skill set here, but bare with me.
I want to create an animated facade of squares which rotate depending on a sequence of grey-scale images. I've got pretty far thanks to many discussions here, but have hit a blank with exporting my animated model to 3ds max.
Here's my GH script - it's a botch of 3 or 4 various things incorporating centipede at the start and end to get the animation.
All good and it works! It produces animations which I can sequence for presentations too thanks to it's bmp export, which is sort of a side-product.
What I have a problem is that the OBJs it produces error wildly when imported to max. eg in rhino it looks like
But when I've imported them to max it looks like
and as it animates it just gets longer and smaller.
NOW I reckon it might be because my model in grasshopper is 100 separate geometries and it'd like it to be a single one - but I've not achieved that.
Does anyone have any ideas how to solve this? My end result I would like to look like this rendered still from max, but animated.
Thankyou all! This also uses Firefly, so you might need that installed to see how my file works.
…
Added by chris parrott at 10:34am on September 11, 2015
ectly in grasshopper (drawing a curve on top of a line with different angles), i did the curve shape in rhino and import it into grasshopper.
i'm having a problem where some of the sine curve shape can orient or map onto the triangle surfaces nicely, but some of them do not. whenever i try to orient the shape onto the bottom portion of the icosahedron, the shape becomes 'negative', forcing me to flip the lines before offsetting and patch (i am using loft method) or else it will become a weird loft (image 3).
i have tried several different ways to orient the ones that worked (orient 3d in rhino, rotate 3d etc.) and still could not get them to work.
the reason that i want them to face in the same direction is so that i can use WB thicken and make sure they extrude in the same direction. i have tried to unify the normal faces in grasshopper and still it is not working.
does anyone have any idea why or how can i do this? your help will be greatly appreciated. i am fairly a beginner in GH so if there is any other easier method to do this will also be great :)
…