Andrew Simonson f786f3da79 derive cargo_capacity from the actual optimized build, not the declared-floor sum
cargo_capacity/cargo_capacity_kg were computed from the SUM of each
entity's own declared minimum mass (the same floor pass 1 checks for
legality) -- completely disconnected from the platform/actuator/storage
masses _decide_masses actually optimizes and every other metric
(power_density, speed, range_fuel, cost_efficiency) already uses. Two
builds of the same combo with wildly different actual masses scored
identically on cargo capacity, and the explore sliders had no effect on
it at all.

Moved the cargo_capacity/cargo_capacity_kg calculation into
_raw_physics_from_masses, deriving it from floor_total (the real
assembled mass) the same deadweight/lightship-ratio way as before, just
against the right mass. Removed the cargo_capacity_kg parameter that
threaded a precomputed constant through _decide_masses and
_raw_physics_from_masses -- it's now computed fresh at each point the
optimizer/explore sliders try, exactly like power_density/speed already
are. cost_efficiency's $/(kg·m) division now uses whichever cargo
convention the domain actually scores (cargo_capacity's 2.5x ratio or
cargo_capacity_kg's 0.3x ratio) instead of always assuming the former,
so the cost-per-cargo-kg number and the cargo capacity shown alongside
it always agree.

Confirmed on combo #876: cargo_capacity_kg moved from 5.7kg (declared
floor sum: 5+5+9=19kg * 0.3) to 18kg (actual 60kg build * 0.3), and now
responds to the explore sliders (9.4kg-35.2kg across actuator/storage
choices) the way every other metric already did.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 20:20:45 -05:00
2026-03-04 16:30:09 -06:00
2026-07-25 16:42:39 -05:00
2026-07-25 16:42:39 -05:00
2026-02-18 11:13:08 -06:00
2026-03-04 11:10:45 -06:00

Applied Combinatorics

Innovation via Attribute Mixing

This is an experimental repo which uses lists of physical attributes and recombines them to form new objects. These objects are then reviewed for comprehensibility and viability.

Example:

Let's identify some methods of getting from here to there:

  • Car
  • Airplane
  • Train
  • Bicycle
  • Walking with your legs
  • Wheelchair
  • Scooter
  • Spaceship
  • Teleportation or beaming technology

To build object 'car' you must select a power source. Power sources include:

  • Gas/Internal Combustion Engine
  • Lithium Ion Batteries
  • Hydrogen Combustion Engine
  • Human pedalling
  • Modular Nuclear Reactor
  • Coal/steam locomotion
  • the Sun via Solar Sail
  • Cannonfire Recoil
  • Pushed by a friend

Putting together lists 1 and 2 we can create 81 mostly novel forms of transportation, such as trains powered by solar sails or walking powered by tiny cannon recoil. Obviously some of these concepts are not as viable as others. While being pushed by a friend might work for those in a wheelchair, it is too slow for those in a car. Speed is therefore a target metric. Let's list some target metrics:

  • Speed
  • Cost efficiency
  • Availability
  • Safety
  • Range (by fuel)
  • Range (by platform degredation or maintenance)

Using these metrics this experiment intends to sift vaguely reasonable concepts from nonsense. Its shortlist may include concepts that sound bizarre but may be technically plausible. Bicycles, motorcycles, and e-bikes all had their turn. Why not hydrogen-bikes?

Setup

docker compose up web

Then open http://localhost:5000.

Seed the database with the transport example:

docker compose run cli seed transport

Local development

pip install -e ".[dev,web]"
python -m physcom init
python -m physcom seed transport
python -m physcom_web

Then open http://localhost:5000.

Run tests:

python -m pytest tests/ -q

LLM integration (optional)

By default the pipeline uses stub estimation. To enable Gemini:

pip install -e ".[gemini]"
export LLM_PROVIDER=gemini
export GEMINI_API_KEY=your_key_here
# export GEMINI_MODEL=gemini-2.0-flash  # optional, this is the default
physcom run urban_commuting --passes 1,2,3,4

Copy .env.example to .env and fill in your key for persistent configuration.


a few notes: the thin atmosphere and the sun are obvious dependencies to the solar sail power source. Dependencies would include things such as scale of force (nuclear reactor vs pedalling obviously has an important force differential) and geographic requirements (walking requires ground and gravity). The project should include on every entity a list of dependencies. The viability tester will need to pull in all of these dependencies to ensure they do not contradict.

Additionally, metrics are expected to be extremely close to full points or none at all. The speed of a person pushing a car is effectively zero in its domain whereas a rocket powered car would easily reach the limits of speed in the domain. The resulting multiplication between metrics to get the viability score will be heavily logarithmic. This is expected and is intended to be a filter to eliminate technically plausible but completely pointless in practice concepts. Metric weights are therefore dependent on domain, which will also need to be defined.

First pass viability is physics such as force output, possibly generalized by LLM, last passes can include LLM and human review of social factors.

Attributes themselves are real (quality proven) and are thusly not garbage in the 'garbage in garbage out' risk - that risk is measured in how much nonsense the dimensional explosion generates that makes it past heuristic filters.

Description
No description provided
Readme 966 KiB
Languages
Python 82%
HTML 12.7%
CSS 5.3%