Life simulation ideas...
Just watched the Nature episode “Born Wild: The First Days of Life”, and got a dangerously large number of ideas for an artificial life simulation.
Here are (some of) the forces that seem to be in play:
- Food and energy affect all aspects of birthing strategies. All these make it more likely at least some young will survive, but take energy in return:
- Producing more than one fetus.
- Long gestation periods.
- Making yolk inside eggs.
- Producing milk.
- If you're not top of the food chain, your babies need to be born ready to run. A longer gestational period is in order.
- A baby can be left to fend for itself, if it's born smart enough to find food. This means no milk production or babysitting, but probably also means longer gestation.
- Birds let the strongest infant feed first - it's most likely to survive. The others get the scraps and if they live too, great. Sometimes the strongest sibling kills the weaker ones. Sometimes the parents themselves do.
- If the father stays to help, it brings extra food energy into the equation - he feeds the kids or sometimes the mother. Sometimes this means bigger litters, or in the case of emperor penguins, it simply means survival.
- Sometimes the mother herself is the food energy - one species of spider willingly lets the babies eat her alive.
- For males, killing the cubs of your rivals is a good way to get their harems ready to mate with you. Of course, you have to prove your genetic superiority by fighting off the father first.
- Social animals help defend each others' young, IF they're from the same father. Children from other groups get attacked, though.
Ruby on Acid: YAML says it all...
--- !ruby/object:RubyOnAcid::MetaFactory
assigned_factories:
:x2: &id001 !ruby/object:RubyOnAcid::LoopFactory
counters:
:x2: 0.0809003150016822
:x: 0.0809003150016822
interval: 0.0431080448196972
:y: &id005 !ruby/object:RubyOnAcid::SineFactory
counters:
:y: -47.6973132292325
interval: -0.0661543872804878
:blue: &id004 !ruby/object:RubyOnAcid::SineFactory
counters:
:blue: -49.6672530194527
interval: -0.0688866199992418
:y2: &id006 !ruby/object:RubyOnAcid::SineFactory
counters:
:y2: -48.3512112649079
interval: -0.067061319368805
:alpha: &id002 !ruby/object:RubyOnAcid::LoopFactory
counters:
:alpha: 0.026577401239561
interval: 0.0735458771168371
:width: &id008 !ruby/object:RubyOnAcid::RepeatFactory
repeat_count: 73.7486871161379
repeat_counts:
:width: 55
source_factory: !ruby/object:RubyOnAcid::SineFactory
counters:
:width: -0.763070310680217
interval: -0.0763070310680217
values:
:width: 0.154428166901605
:red: &id003 !ruby/object:RubyOnAcid::FlashFactory
counters:
:red: 35
interval: 48.2819400095083
values:
:red: 1.0
:x: *id001
:green: &id007 !ruby/object:RubyOnAcid::RepeatFactory
repeat_count: 92.57504008154
repeat_counts:
:green: 70
source_factory: !ruby/object:RubyOnAcid::LoopFactory
counters:
:green: 0.389712742634083
interval: -0.0762859071707396
values:
:green: 0.389712742634083
factory_pool:
- !ruby/object:RubyOnAcid::LoopFactory
counters: {}
interval: 0.00689322163990813
- *id002
- !ruby/object:RubyOnAcid::LoopFactory
counters: {}
interval: -0.0330245624043419
- *id001
- !ruby/object:RubyOnAcid::ConstantFactory
value: 0.799727962512452
- *id003
- *id004
- *id005
- !ruby/object:RubyOnAcid::SineFactory
counters: {}
interval: -0.04853454869413
- *id006
- *id007
- !ruby/object:RubyOnAcid::RepeatFactory
repeat_count: 385.71501513496
repeat_counts: {}
source_factory: !ruby/object:RubyOnAcid::RandomFactory {}
values: {}
- *id008
- !ruby/object:RubyOnAcid::ModuloFactory
prior_values: {}
source_factory: !ruby/object:RubyOnAcid::LoopFactory
counters: {}
interval: 1.0e-05
Hi-res Ruby On Acid wallpapers...
Went back and re-rendered some of my favorites at 1080p resolution (should scale down to widescreen monitors nicely).
Ruby on Acid: ConstantGenerator...
It seems obvious, in retrospect, that a little stability was needed with all this randomness…
@f.factory_pool << RubyOnAcid::ConstantFactory.new(rand)
In the image below, one of the Y coordinates is hooked up to a ConstantGenerator whose get_unit() always returns 0.5, hence, always halfway down the screen.
Similarly:
Read more...This is an XSD example from a normally stodgy tutorial site; were they trying for innuendo?
<xs:complexType name="jeans"> <xs:simpleContent> <xs:extension base="size"> <xs:attribute name="sex">Read more...