World Solar Challenge: Just One More

Here, updating an image I tweeted earlier, is a comparison of World Solar Challenge control stop arrival times. Elapsed time runs vertically upwards. Twente, Michigan, and Punch are notable for running considerably faster this year.

Direct comparison was somewhat difficult due to lack of data and various changes – for 2013 (leftmost bar of each pair) I used what data I still had, and for 2015 (rightmost bar of each pair) I used tweeted photographs of timing boards.


Mathematics in action: “Skin groups”

There are three main (though closely related) branches of mathematics – the study of number, the study of shape, and the study of relationships. An interesting ethnomathematical example of the latter is the “skin group” system of the Lardil people of Mornington Island in Australia.


Lardil children

Similar systems (often with two groups, called moieties) can be found around the world (I first discovered the concept as a child, in the classic young adult science fiction novel Citizen of the Galaxy). Among the Lardil, there are eight groups, each associated with particular totemic creatures or objects:

Skin Group Name Totem
1 Burulungi Lightning
2 Ngariboolungi Shooting star
3 Bungaringi Turtle
4 Yugumari Seagull
5 Gungulla Grey shark
6 Bulunyi Crane
7 Bulyarini Sea turtle
8 Gumerungi Rock

Membership of a “skin group” implies a complex set of tribal obligations and taboos, but the most significant is that only certain kinds of marriages are permitted. Members of group 1 must marry people from group 2 (and vice versa), and similarly for the pairs 3/4, 5/6, and 7/8. All other marriages are considered to be incestuous.

We can define a mathematical function, the spouse function σ, that maps each person’s “skin group” to the “skin group” that their spouse must have: σ(1) = 2, σ(2) = 1, σ(3) = 4, σ(4) = 3, etc. For each of the eight kinds of valid marriage, there is also a rule for determining the “skin group” of the children:

Father Mother Children
1 2 8
2 1 3
3 4 2
4 3 5
5 6 4
6 5 7
7 8 6
8 7 1

We can define two mathematical functions, the father-of function φ and the mother-of function μ, that map the “skin group” of a father or mother to the “skin group” that their children must have: φ(1) = 8, μ(1) = 3, φ(2) = 3, μ(2) = 8, etc.

This is all much clearer when displayed visually. In the diagram, two-part black arrows →→ indicate valid marriages. The arrows run from the “skin group” of the wife to the “skin group” of the husband. Red arrows run from each marriage arrow to the “skin group” of the children. Together, the arrows form an octagonal prism:

Following a single black arrow and then a red arrow () gives the mother-of function μ, with μ(1) = 3, etc. It can be seen that this function has a four-generation cycle: μ(μ(μ(μ(x)))) = x or, as it is often expressed, μ4(x) = x. In other words, each person’s “skin group” is the same as that of their great-great-grandmother in the female line (the maternal grandmother of their maternal grandmother).

Following a single black arrow backwards (from the head end) and then a red arrow () gives the father-of function φ, with φ(1) = 8, etc. It can be seen that this function has a two-generation cycle: φ(φ(x)) = x or, as it is often expressed, φ2(x) = x. In other words, each person’s “skin group” is the same as that of their grandfather in the male line (their paternal grandfather).

The combination of the two cycles makes the Lardil “skin group” system a very effective way of shuffling genes within a small population, thus avoiding inbreeding. It also highlights the fact that mathematics can be found in some surprising places. And there are even more patterns to be found in this example. Among others, σ(x) = φ(μ(x)). Also, μ(φ(μ(x))) = φ(x), which some readers may recognise as indicating a dihedral group.


Blogging a race with R

I’ve been blogging extensively about this year’s World Solar Challenge. My main tool for doing so has been R. Having put together a database of teams and team data, a set of R scripts generated web pages (like this one and that one) from the database. Using R made it easy to incorporate graphs and analyses of team data within those pages. For example:

    

Also useful were R scripts to extract additional structured data from the World Solar Challenge web site using XML parsing (with the RCurl and XML libraries), R scripts to scan Twitter feeds of race teams (interfacing to a Python script which did the actual downloading, because of weaknesses in the R interface to Twitter), and R scripts to generate various maps (primarily using the raster package). Examples of such maps include this temperature map of Australia in October:

An R script for parsing data from www.accuweather.com was used to produce (and regularly update) this calendar:

Additional R scripts were used to generate a number of infographics, such as these:

    

During the race itself, serious data quality problems presented themselves. Official timing data contained multiple errors, while GPS tracking data suffered from time lags greater than the gaps between teams. This created a need for code to do data sanity-checking, to do data cleaning, and to do car position extrapolation. R was very useful for writing such tools on the fly. The map below shows raw GPS data for car positions (overlayed on a NASA raster image), and was produced using code written during the race:

The chart below summarises official timing data, and was produced using code modified from that used to report on the 2013 race:

This chart of official Cruiser class results was also produced using code modified from that used in 2013:

New code was used to produce this chart of Cruiser class cars that partially trailered:

Many other charts and web pages were produced during race coverage. In each case, R provided useful facilities for acquiring, visualising, and organising data. Generating HTML from R scripts and a database also proved very successful. In hindsight, virtually all blog posts should have been generated this way.

Finally, a few small touches of humour do not go astray. Putting together this image, for example, was quite popular:


WSC Results (3)

Following up on the World Solar Challenge official results, here are the six Cruisers that trailered, plotted by the two most meaningful numbers for such cars – person-kilometres and practicality. The lovely little car from Lodz is clearly the leader of this particular pack and thus, in my opinion, sixth Cruiser overall.

I should also point out this great WSC dataviz by Tiffany Hu, and the superb WSC summary and retrospective by MostDece.


WSC Results (2)

The World Solar Challenge has finally released official results of the race (for Challengers, Cruisers, and Adventure class), and the chart below shows the breakdown of scores for the top five Cruiser class cars. As in my 2013 version of this chart, each coloured left-hand-side bar is the sum of the other four bars with the same colour.

The times used for scoring by the WSC are based, as far as I can see, on the time from Darwin to Adelaide (rather than to the so-called “end of timing” point) minus the waiting time at control stops and at Alice Springs. I suspect that Kogakuin might have won had they chosen not to recharge at Alice Springs (which would have slowed them down a little, but would have cost everybody else 7.5 points). As it was, Kogakuin’s speed advantage of 2.7 points almost exactly counterbalanced Eindhoven’s passenger advantage of 2.5 points, leaving practicality to decide the winner.

For comparison, here is the 2013 version of this chart. This year, the external energy use component decreased from 18.9% to 15%, the speed component increased from 56.6% to 70%, the passenger-carrying component decreased slightly from 5.7% to 5%, and the practicality-judging component decreased from 18.9% to 10%


WSC Results (1)

The World Solar Challenge has finally released official results of the race. The chart below shows average speeds for the 20 Challenger class cars that finished (a much greater proportion of finishers than last year!). The speeds are calculated by WSC based on time taken to the confusingly named “end of timing” point outside Adelaide (which was not actually the end of timing at all). Unfortunately end-of-race procedures were not well documented this year and (in the Cruiser class especially) some teams would probably have planned their strategy slightly differently if they had understood them better.