(toiminnot)

hwechtla-tl: Automaattinen kotitöiden laskeminen

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


(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


kommentoi (viimeksi muutettu 04.02.2017 20:40)