I’m working on a simulation software that involves a somewhat tricky user input setup, and I could use some advice on structuring it in a way that’s both flexible and intuitive for the user.
In my application, users can define a “Condition” — essentially a set of input parameters — which they can specify in various combinations. For example, they might input parameters A, B, and C, so the software would solve for D, E and F, or input B, E and F and solve for A, C, and D. In every Condition, there are about 50 such parameters, and any one of them might be either an input or an output depending on the setup.
Here’s where it gets complex: users also need to create multiple Conditions in batch mode. For example, they might set parameter A as a range (e.g., 0 to 20 in steps of 2), parameter B as specific values (e.g., 1, 5, 8), while the rest are single values. Given this complexity, I want to make it easy for users to control values that are common to all Conditions but also allow them to “break out” values for specific Conditions (e.g., D is 5 across all Conditions but 6 in the one where A is 8 and B is 5).
Alternatively, users might want to define these Conditions in a matrix-style table:
A: 1, B: 5, C: 8
A: 3, B: 4, C: 5
A: 4, B: 3, C: 2
...with a common value of D across these Conditions, and then solve for E and F.
My question is: What’s a good way to present this Condition setup to users for both flexibility and simplicity? Should I go for:
Allowing single, multiple, or range values for each parameter directly in the Condition creation UI, and then:
1.1 Create multiple conditions that have linked shared values;
1.2 Create multiple conditions without linked shared values, and have some additional feature to batch-change a certain value across all Conditions, or something like "copy value to all Conditions"?
1.3 Do not show these multiple Conditions to the user, but only indicate that there will be a certain number of them based on the inputs? (I think this would preclude matrix-style table definition)
Allowing only single values for each parameter in the Condition creation UI, and then have a separate function like “Vary Parameters” that allows the user to override the initial static values of parameters with ranges/multiples?
Separating creation of a single Condition, and have a dedicated "batch" mode for creating multiple conditions where every parameter has a link to the "parent" Condition, except for the varied parameters?
Having a multi-level tree-like inheritance structure where child Conditions inherit parameters from parent Conditions, except for varied parameters?
Something else..?
If you were the user, what would be the best for you? I’m hoping there’s a term for this type of problem that could help me find existing solutions, as every idea I’ve had so far feels limited in some way. Any guidance, or examples of solutions to such problem you’ve seen, would be hugely appreciated. Thanks!