suboptimumg.compsim.models#

Pydantic models for competition simulation data structures.

pydantic model suboptimumg.compsim.models.CompetitionData[source]#

Bases: BaseModel

Config:
  • arbitrary_types_allowed: bool = True

Fields:
field vehicle_model: VehicleModel [Required]#

Vehicle configuration

field accel: ContinuousTrackData | DiscreteTrackData [Required]#

Acceleration track data

field skidpad: ContinuousTrackData | DiscreteTrackData [Required]#

Skidpad track data

field autoX: ContinuousTrackData | DiscreteTrackData [Required]#

Autocross track data

field endurance: ContinuousTrackData | DiscreteTrackData [Required]#

Endurance track data

field scoring: CompetitionScoring [Required]#

Competition scoring configuration

pydantic model suboptimumg.compsim.models.CompetitionResults[source]#

Bases: BaseModel

Config:
  • frozen: bool = True

  • extra: str = forbid

Fields:
field accel: EventResults [Required]#

Acceleration event results

field skidpad: EventResults [Required]#

Skidpad event results

field autoX: EventResults [Required]#

Autocross event results

field endurance: EventResults [Required]#

Endurance event results

field efficiency_points: float [Required]#

Efficiency points scored in the endurance event

property total_points: float#
pydantic model suboptimumg.compsim.models.CompetitionScoring[source]#

Bases: BaseModel

Fields:
field accel: EventScoring [Required]#
field skidpad: EventScoring [Required]#
field autoX: EventScoring [Required]#
field endurance: EventScoring [Required]#
field efficiency: EfficiencyScoring [Required]#
pydantic model suboptimumg.compsim.models.EfficiencyScoring[source]#

Bases: BaseModel

Fields:
field num_endurance_laps: int [Required]#

Number of laps around the track for endurance event

field max_eff_points: float [Required]#

Maximum amount of points awarded for efficiency

field co2_scaling: float [Required]#

(kg CO2 / kWh) ratio to convert EV to IC (from FSAE Rules)

field fastest_lap_time: float [Required]#

Average lap time for fastest endurance finisher

field co2_min: float [Required]#

Minimum co2 usage out of teams that were eligible for endurance score

field eff_max: float [Required]#

Best efficiency factor out of all teams

field max_time_scale: float [Required]#

Rules-defined baseline laptime (1.45 = 145% of fastest endurance finisher), used as constant in score calculations

field eff_min_co2_your: float [Required]#

Rules-defined baseline CO2 value ((20.02 kg CO2 / 100km) * 22km), used as constant in score calculations

pydantic model suboptimumg.compsim.models.EventResults[source]#

Bases: BaseModel

Config:
  • frozen: bool = True

  • extra: str = forbid

Fields:
field points: float [Required]#

Points scored in the event

field tyour: float [Required]#

Your time (s)

field lapsim_results: LapsimResults [Required]#

Results from the lapsim

pydantic model suboptimumg.compsim.models.EventScoring[source]#

Bases: BaseModel

Fields:
field event_best_time: float [Required]#

Best time recorded for this event

field worst_time_ratio: float [Required]#

The maximum race time for this event, expressed as a ratio of the track_best_time

field min_points: float [Required]#

The minimum amount of points awarded for this event

field max_point_gain: float [Required]#

The maximum amount of point a car can gain on this event, if they meet or exceed track_best_time

field scale_time_ratio: float [Required]#

Exponentiate event time ratios for point calculations (1 = no effect)

pydantic model suboptimumg.compsim.models.InternalData[source]#

Bases: BaseModel

Config:
  • arbitrary_types_allowed: bool = True

Fields:
field initial_velocity: float [Required]#

Initial velocity at start of track (m/s)

field v_max_profile: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

Initial maximum velocity profile for the track (m/s)

field seed_idx_list: ndarray[tuple[Any, ...], dtype[integer]] [Required]#

List of seed indices used in the simulation, sorted by increasing max velocity

field cumulative_dist: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

Cumulative distance along the track (m)

field per_seed: List[InternalDataSeedInfo] [Required]#

List of per-seed internal data, corresponding to seed_idx_list

pydantic model suboptimumg.compsim.models.InternalDataSeedInfo[source]#

Bases: BaseModel

Config:
  • arbitrary_types_allowed: bool = True

Fields:
field v_proposal: ndarray[tuple[Any, ...], dtype[float64]] = None#
field acc_proposal: ndarray[tuple[Any, ...], dtype[float64]] = None#
field grown_forward_mask: ndarray[tuple[Any, ...], dtype[bool]] = None#
field slower_mask: ndarray[tuple[Any, ...], dtype[bool]] = None#
field v_max_post: ndarray[tuple[Any, ...], dtype[float64]] = None#
field acc_max_post: ndarray[tuple[Any, ...], dtype[float64]] = None#
field p_proposal: ndarray[tuple[Any, ...], dtype[float64]] = None#
pydantic model suboptimumg.compsim.models.LapsimResults[source]#

Bases: BaseModel

Config:
  • arbitrary_types_allowed: bool = True

Fields:
field lap_t: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of lap time (s)

field lap_dxs: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of distances (m)

field lap_vels: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of velocities (m/s)

field lap_accs: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of accelerations (m/s^2)

field lap_powers: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of powers (W)

field lap_eff_motor_torques: ndarray[tuple[Any, ...], dtype[float64]] [Required]#

List of effective motor torques (N⋅m)

field internal_data: InternalData | None = None#

Optional internal data from the simulation