Comments (8)
This is expected behavior, the probs must add up to 100 and need to be balanced. Its not very intuitive, but how else could it work? In truth I am planning on removing this from the sim controls, it adds little and takes up valuable ui space.
Hey! This is a super cool project! I am wondering why you think it adds little value?
I think it's really cool to play around with those values. I have a proposal:
- Save space by having a button that says "set probabilities" or something better
- when clicked, it opens up a popup (not a popup but i dont know the right word for this. like one of those windows) that has all 3 values
- allow the user to put in any combo of values. Then press ok.
- if it doesnt add to 100, dont quit and have an error that tells the user to make sure it adds up to 100
This way I can set values like 20,45,35. If i try to do that right now, it doesnt work since the other two automatically update
from lifeengine.
I also think it's pretty valuable to be able to adjust the probabilities of mutations, and was initially confused by the "whack a mole" nature of the UI. Not sure I'm sold on the "free entry and validate the sum" UI, either, I envision a 3 axis selector similar to RGB/HSV color selectors.
Though, I'm not sure why the probabilities of each need to add to 100%. Like, why does this have to be an elif switch of mutually exclusive events? Can't we just roll for each event independently, and then add/change/delete independently?
LifeEngine/src/Organism/Organism.js
Line 128 in 2ef7216
LifeEngine/src/Organism/Organism.js
Line 142 in 2ef7216
LifeEngine/src/Organism/Organism.js
Line 150 in 2ef7216
Ahhh ok I think I see, you need to know if it's mutated to determine if it should be added to the fossil record:
LifeEngine/src/Organism/Organism.js
Lines 114 to 116 in 2ef7216
Still, I don't quite follow why this interface mandates that the add/change/delete events must be indepenent. I guess that's just a design choice?
Side note, I think you might actually have a "bug" in the way species are determined. If you have convergent evolution (a mutation that reverses), that counts as a different species in this system... I think. I'm still reading up on the codebase.
Personally I would do immutable genes and then hash the gene to determine species uniqueness. That way if two creatures convergently evolved to the same pattern, they would still be considered the same species.
from lifeengine.
UPDATE: I am no longer planning on removing the feature and will improve the ui.
@xkortex Excellent suggestion, not sure why I didn't think of this. I've been wracking my brain for an intuitive way to balance the probs, but the balance is unnecessary and they can be independent mutations. Will implement.
And your point about species is a separate issue, my solution is a "good enough for now" implementation since species aren't actually used for anything other than statistics. If you'd like to continue the conversation about this, open a discussion in the the discussion tab.
Thanks all
from lifeengine.
@xkortex Thanks for the writeup! I am not familar with JS/UI/UX/webdesign so this was really helpful! Thank you!
And thanks @MaxRobinsonTheGreat for listening to the community feedback! It's super cool and encouraging to know that you are interested in what we have to say!
from lifeengine.
This is expected behavior, the probs must add up to 100 and need to be balanced. Its not very intuitive, but how else could it work?
In truth I am planning on removing this from the sim controls, it adds little and takes up valuable ui space.
from lifeengine.
You can adjust only the last/third used. For example:
- Start with 33% 33% 33%.
- Change one to 20%, adjust on the other two: 20% 33% 47%
- Change one of the two left to 10%, set the remainded in the third (
100-20-10
): 20% 10% 70% - if the third also changes (50%), put the rest into the last modified: 40% 10% 50%
I think you could implement it having a list of the inputs sorted by the last edited, so when the user change one you put it at the to the front of the list, and adjust the total with the third (if it isn't enough, for example when the edit set a 100%, use the second too).
from lifeengine.
I have implemented a possible solution in the pull request which has into consideration the last edited input.
You can also simplify the logic by just having a predefined order, for example, you always have to edit the add input first, then the change input (limited by the remainder of 100 - addProb
) and you can't change the remove input as it is calculated to the remainder of 100 - add - change
clipped to 0.
from lifeengine.
@MaxRobinsonTheGreat I think it actually dovetails with the discussion about state.
I really think a "static genes datastructure" based approach would really pay dividends, so I'm really curious what your thoughts are on that. Just pushed some code so you have something more concrete to look at.
from lifeengine.
Related Issues (17)
- Organisms that are disconnected HOT 1
- Move range mutate to one.
- Cannot find module 'jquery' HOT 1
- Global mutation rate not restored from world save HOT 1
- Hotkeys HOT 3
- Easier way to remove starter organism HOT 5
- Mutations add or remove cells even with zero propability for that. HOT 3
- Slow down/crash after several hours HOT 11
- Infinite FPS
- Static food source? HOT 2
- Improve reset/close warning HOT 3
- Walls can not be taught to organisms with brains, only evolved HOT 1
- Food decay [enhancement]
- Reproductive overflow [enhancement]
- Firefox Simulation Speed issues HOT 4
- Forgot to read the read me ignore
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lifeengine.