Git Product home page Git Product logo

cassim's People

Contributors

jkomoros avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cassim's Issues

Changed parameters should be included after the URL

diff the original config with the currently modified one, and then stuff the diff into a hash encoding, so that someone sharing the URL would get the same exact config.

Kind of a poor man's #32

Also add a button to clear all userland modifications

Support on demand simulation

E.g. for expensive simulations

A run all button? And maybe the overall sim config option configures if its runs should be automatic or not

Automatically set shortNames

Originally captured in #33

Mechanism to automatically set shortNames for configs that don't have a shortName set (it is undefined).

Configs should put more important properties first.

The shortName config helper looks at each object at each level. First, it looks at all existing long names. Then for each it tries to do the naive shortening (first letter, then each Capital Letter aftwerwards), and see if any will collide. If some will collide , then it looks at the ones that collide. If they collide by being the same words except for some segment, then produce their shortNames by following hte normal rules, but for the one word that is different between them, doing the drop-out-vowels shortening trick.

Make sure that an explicit shortName of '' is interpreted as "do not shorten ever"

These configs should be looked at and their 3-digit hash should be included in the diff URL. (The hash should also concatenate the simulatorVersion before the message, so if the version changes OR the config changes then diffs will be invalidated).

Allow a way to screenshot charts

Originally captured in #22.

If the user opts in in screenshot, we render the run-charts. It will also need a clipFuture style boolean (like run-statuses) to render backwards.

A luck surface area model

Every tick, have the nodes randomly be littered with values.

The person picks the best opportunity they can see. They have a larger view if they have credibility (successful opportunities; moderate opportunities are net zeo, disassters are negative), and have recently talked to those nodes or people.

A standing ovation simulator

Would need a fieldofview calculatiion with angle, dropoff, which returns a list of nodeIDs with a float of how strong they are 0.0 to 1.0)

Originally captured in #30

  • Emit a proportionAgentsStanding score
  • Viewing people in front
  • Change to it being a clap or a meh face emoji, and have stage be at top (which makes more sense and doens't weirdly reverse meaning of row/col)
  • Add to default.json (with good description, and also update description of the other demos)
  • Distributions based on normal distributions
  • Figure out some way to make the average/spread sub-object pattern easier to do in practice
  • Make it so if a nested object is optional: true and default: true, then in normalization it is set to its example value (then make it so the various spread parameters are optional and zero) (this will likely require tweaking tests)
  • A helper like distributionOptionConfig() that returns an optionConfig that can be passed to linearDistribution(value, rnd) and do the distribution. In the future it could allow a distribution type in there, too. (But e.g. min/max should never be settable by a user but still pass with it...)
  • The full defaults when you switch to it are now too chatty--too many default values show up, for everything you might want to tweak
  • A frontRegion property with rowCount, and then every other property (allows you to override, for example, how filled the front rows are, and how enthusiastic they are / how high of quality they view the performance to be
  • Allow a wider field of view (include vertical connections, and then filter based on FOV
  • Allow modifying falloff and stand threshold
  • Even people below the threshold should stand with some proability if nearly everyone else is standing.

optionsConfig should get a 'default' property

It's a boolean. If set, then if the value is optional and not provided, it will be set to its defaul tvalue. This will happen before normalizeSimOptions is called, removing a lot of need for normalizeSimOptions.

It only does something if optional is true, and it says 'fill in this example value if it's not set in normalized options'. If set, then the example value should be not an 'interesting' value, but the default one.

This is tracked in some other sub-issue. And now more things in schelling-org can be set as optional because they can be defaulted fine.

The defaulting machinery should be run BEFORE modifications are run

As of #37, sometimes simOptions aren't actually set until later. But modifications actually run BEFORE, because the defaulting isn't done until the Simulation is created, and by that time the modifications have already been merged in. That seems like it could lead to some weird behaviors...

Some kind of defaulting of values machinery

There's a lot of currently bespoke machinery to check the shape of simOptions.

This gets at the simOptionsNormalization passes, that should return a fully normalized simOptions so everything downstream can assume a fixed shape

autoGenerate: false doesn't work properly

Lots of finicky little bugs.

6cedcbc was an example of a fix... that also caused others

Each time you change the behavior, verify that screenshotting works as expected. (Shouldn't that be a test :-[ )

Used to be tracked in #10.

A way to have sim configs inherit from other configs

A lot of settings will be the same across configs in a config file, e.g. colors, animation delays, etc.

A named dict of base options objects in the json. Each normal item can refer to a base object by Id. Base objects in the dict can refer to other base objects (no cycles!)

In the UI, values set by base objects are shown italicized and with a little affordances saying where they come from. Changing one of those values always sets it on that object as an override, not the base object it inherits from. Clicking the affordance let's you switch to editing the base object directly.

Another way of doing it is not having a separate dict but instead allow options to build on others and also allow some to be hidden from UI (the base ones). This would require allowing arbitrary nesting overlays of deeply nested objects which is hard... But useful in general and maybe worth building

Bug: changing the sim, and then modifying values, upon reload the values are ignored or error

Noticed while working on #30.

I think it triggers if you change the sim at some point in the modifications; the machinery that unpacks shortNames is using a different (old) simulator to unpack it. If it asks for the default value, it's just dropped. But if it explicltly sets a value to the shortName, then the config will barf because it doesn't recognize that property.

Fix is likely to make it so the machinery that exapnds the shortNames also notes the change of sim and uses that.

Allow multiple configs

In URL, the filename should be /FILENAME/sim-name/round-number/frame-number/, where FILENAME is looked for at /config/FILENAME.json

Make it so pngs can have transparent backgrounds but gifs will have solid backgrounds

Originally captured in #4.

Go back to rendering with transparent backgrounds for pngs and make gifs have the default background color composited in the back after the fact (see comment below for some research notes) (this will require a default colors that are overriden by any provided colors). The benefit of this is that the pngs can have a transparent background while the gifs don't (because gif transparency is so ugly)

Statistics and normal distibutions

  • Use for other random number distribution in other simulators
  • Add normal distribution
  • A helper like distributionOptionConfig() that returns an optionConfig that can be passed to linearDistribution(value, rnd) and do the distribution. In the future it could allow a distribution type in there, too. (But e.g. min/max should never be settable by a user but still pass with it...)
  • Support normal distribution (description, test that it works with multiple types in the generated config, and sample()) (maybe https://github.com/errcw/gaussian (it's not documented in readMe but you can pass a second parameter to random that is the rnd)
  • Add a 'fixed' value that just returns 'average'
  • A power distribution *//Based on https://stats.stackexchange.com/a/406705
  • Simple mean, median, sum, of numbers for convenience
  • Support a randomItem distribution with options
  • Some way to have min, max, mean, median for all output metrics (instead of just enumerating them manually like we do now)
  • Support a round: 'ROUND', 'FLOOR', ''
  • Document how to use it
  • All other simulators use distribution
  • optionsConfig should get a hide(parentValues) -> bool function
  • It's annoying as an end user for a DistributionConfig, when you add it it's empty and you have to add a type AND the the proper types of arguments for that type. Ideally when you add it, it would have type=linear, average: average, already set (this would require a new state in the default/optional setup) (Now #51)
  • Add a min-max type
  • remove old linearDistributiuon

Make an evolutionary model

Pockets of innovation, e.g. language spreading

The evolution explosion milk drop

Can start in center or bottom center

There are ‘heads’ which are agents that expire. New ones get allocated to a known viable thing

Agents have different strengths which selects how far into the adjacent possible they can jump

Known viable things get to be brighter beacons as agents add value there. But the value fades at time step if not tended to or visit.

When sim is set, simOptions should be set to default

Currently it's set to default, but within Simulator, so option-control doesn't render it, which makes it a pain to have to go in an add the optional/default properties and tweak those.

Instead, setSimPropertyInConfig should set it to DEFAULT_SENTINEL

Easier-to-compose layouts

Instead of bespoke layout logic, allowing layout to use e.g. flexbox and pre-baked components (like diagram-emoji). And then have the lines rendered in an SVG that can... read back those positions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.