Input paramater in Generative design


I have 2 questions about “Input” :

  1. tried to choose the “number” node as an input and I’m getting an error that an only slider is an option…why is that? I found a workaround that when I uncheck the field and choose a constant value.


  1. Trying to control the Max and Min value of the bar from the “Define Study” interface.

I don’t understand your second question, but I can shed some light on the first.

To start with you need to understand that computers are dumber than the bricks we build with. The can’t think in any practical terms - in fact they can’t think at all. Even the best AIs are just trying an input, evaluating an error, and repeating the process until the result is accepted.

Next it helps to know a bit about how Generative Design works. Effectively the application is solving complex equations via trial and error. In randomize the values are completely random, sampling N times and you hope that the solution is found. In optimize a population of N samples are taken and the highest performing solutions inform the next round of samples, this is repeated for M generations.

Say you needed to pick find the right value for X in the equation X + Y = Z. You have no idea what Y is until you do the math and it changes each time, and the goal is to minimize the value of Z.

In the first test you selected 0 to be the value of X, and Z wound up being 100. Is this good or bad? Well obviously we don’t know yet, so let’s try again with 10 and get 99.5. Then again with 20 and get 90.153. Going bigger is helping the score, so you’d want to test something huge - say 1,000,000,000,000,000,000,000,000, which returns a score of 1000. Now you know at some point between 20 and the absurdly large number is an optimum , but there are an absurdly large amount of values to test. The number of samples required to narrow in on a solution is absurd, and this doesn’t ensure the optimum, but just one optimum value. There could be another better fit above 1e24, and our four samples hardly scratch the surface of the scope. What number would you guess next? Do you think there would there be any chance of finding the optimum before your deadline?

This problem gets worse, as we haven’t considered -10, -20, or -1,000,000,000,000,000,000,000,000 yet. And while I have been sticking to integers so far, the computer doesn’t know to not test both 10 and 10.00000000000000000001. The amount of values to test is literally infinite.

Fortunately we as designers know what values make sense to use in our work. 1*10^24 isn’t a feasible panel size, room count, or other value, and so we can set the upper limit (and the lower limit and step value) according to what we know about the context of the problem, such as the size of bricks, the maximum dimension of panels, the most number of desks the customer could ever want, how many rooms are too many, etc… The minimum, maximum, and step values of a slider allow us as designers to shape the limits of the testing range in order to prevent the CPU from saying “The best way to build this tower will require a flying buttress based from Mars.”

1 Like

As for the second question:

The number slider node has no nodal inputs, so you can’t define the min and max that way. Instead, you have to think about what you’re actually attempting mathematically. You’re really just shifting the working range by constraining the minimum allowable value and the maximum allowable value. You can recreate this functionality with a simple equation to normalize your input range.

Your Input Control variable is really just a percentage (0-1) of your allowable controlled range. Your allowable controlled range is the difference in the max and the min allowable values. The min is obviously the minimum you could have so you start there and add on the additional input percentage.

Ah! The old parameterization of the domain issue. Have a GIF showing how this can apply in this thread:

thnaks @JacobSmall and @Nick_Boyts ,
I think I’m not clear enough soo ill try to explain and tell more detail about the graph.

The goal of this graph is to find the best way to tile a floor.
I mean where is the best way to start (dx,dy offset from the first tile to start - that is my first sliders).
the second issue is that I want to bring the user to define all kinds of tiles (6060 / 8080 etc) - that is the reason I want “integer input” and not a slider.

now, after the user defines the tile dimension I want to be able to change the max value of the slider to be for example 0-59 for 60X60 tile, and 0-79 for 80X80 tile.

hope I’m clear now :slight_smile:

As @JacobSmall mentioned, the way that GD works is by “randomizing” input values. That can only be done with sliders. The only way to have a static input is to uncheck the variable box to force the input to constant. You still have to define a maximum range of tile sizes to choose from, but then the user makes that selection with the slider (I believe an upcoming version will let you type in the value directly.)

It sounds like the range for the offset is dependent on the tile size. That means you can just define this value with a formula in your graph. It looks like it’s even as simple as dx,dy = size-1 which means the user selects the tile size, the maximum displacement gets calculated, and that value is used to set the working range of the modified constraints I explained in my first post.

1 Like

OK, I got you and I will live with that. i will limit the slider of the tile size for reasonable values and explain it to all users.
hope something will change on generative design next-generation :wink:

I think you are missing something.
as you say, the mechanism that creates the “new generation/solution” is the slider that picks each time a different value. each of those values creates a new solution by moving the first tile (dx,dy) see the picture below. as I understand there is no solution and I need to wait for the next generation of generative design either this issue :wink:

Maybe I don’t understand. From your own explanation and image it sounds like you’re getting what you’re after, but apparently not. It’s almost certainly possible to do what you’re asking, it just may take some out of the box thinking. More information would be helpful.

Are you wanting the user to pick a tile size and then randomize the starting location of the tile or do you want GD to randomize the tile size as well?

I think I understand what is not clear :slight_smile:
the “goal” is to find the maximize complete tiles and minimize the “broken tile” (yellow in picture).

how do I do that?

let say the input is 60*60 (constant - I chose this type of tile)
no, I want the GD will try to create a random option and show what “dx/dy” from the start position give me the perfect tiling.

now, let’s stay in example 60X60.
the question is “what distance from the corner to put the first tile?”
61 will be the same as “1”!

that is the reason that after choosing tile type (60X60) I want that the mechanism the creating the random option will be limited at 60.
and if ill chose 80X80 the distance dx/dy limit will be 80…etc

Right. So you specify a tile size (ie: 60) and then use that value as a scalar for how far you can offset the tile, using a percentage of 0-100% (ie: (0…1)*60). The only issue here is that your offset is unitless since it’s relative to your tile size. An offset of 0.3 would be smaller on a 60 than on an 80. You can of course convert this back into units with an output so you know the actual displacement. The other option is to round your unitless percentage to a specified tolerance (1mm, 10mm, etc) before applying the offset. It’s all up to you.

1 Like

Thanks, @Nick_Boyts, I guess this is the best the application can give at this moment.