(nettipäiväkirja 26.11.2015) Olen nyt niin monta kertaa laskenut lasten kotityöjaon (miten, katso kotitöiden jako) että tulin siihen tulokseen, että se kannattaa automatisoida. Varsinkin, kun sitä mieluusti kokeilisi erilaisia skenaarioita ja saisi nopeasti nähdä, mitä muutoksista seuraa. Joten toteutin tämän kotitöiden jakolaskurin Pythonilla. Sain samalla tilaisuuden opetella (lisää) NumPy:a, jossa on kivat matriisien ja taulukoiden aggregaattioperaatiot valmiina.
Koska alkuperäinen laskentatapa ei ole täysin algoritminen eikä täydelliseen tasa-arvoon kannata kaikissa tilanteissa pyrkiä, tein parhaan työnjaon etsimiseksi geneettisen algoritmin, joka muuttelee kotitöihin osallistujien allokaatioprosentteja eri hommiin ja etsii mahdollisimman vähän huonoa ratkaisua. Allokaatiojärjestelyn huonous lasketaan kahdesta asiasta: siitä, kuinka paljon kotitöiden yhteinen subjektiivinen vaiva on (menetetyn utiliteetin summa) ja siitä, kuinka epäoikeudenmukainen on subjektiivisen vaivan jakautuminen. Nämä kaksi tekijää voi painottaa haluamallaan tavalla muuntelemalla evaluaatiofunktion inequality_weight-parametria.
Laskentaskriptin lähdekoodi on täällä:
http://members.sange.fi/~atehwa/vc/r+d/satunnaista/kotityot/laske.py
Esimerkkisyöte on täällä:
http://members.sange.fi/~atehwa/vc/r+d/satunnaista/kotityot/painot.csv
Laskennan voi käynnistää vaikkapa tällaisella komennolla:
$ python laske.py painot.csv