TiraLabra/TiraLabra — pull request #360 by ilcca (2014-08-17 21:43:23+00:00)
Title: Algoritmi kehittyy ja toimii, suorituskykytestien pystyttämistä

Onnistuin nyt luomaan pakettikombinaatioita läpikäyvästä algoritmista version, joka testaa jokaisen lehden kohdalla sisältääkö se ratkaisun eli pakettikokoonpanon jonka summa mahtuu tavoitetäyttöasteeseen. Jos lehti sisältää ratkaisun, tulos tallennetaan ja algoritmi lopettaa. Jokaisen lehden kohdalla tarkastetaan myös kyseisen pakettikombinaation käänteiskombinaatio esim. jos testissä ovat paketit 0-9 ja lehdessä vaikkapa kombinaatio 0,1,3, niin tämän lisäksi tarkistetaan kombinaatio 2,4,5,6,7,8,9. Eli hyödynnetään kombinatoriikan symmetriaa, jolloin voidaan noin puolittaa laskenta-aika.

Rakensin suorituskykytesteille luokan ja se pystyy jo muodostamaan tilastointeja testeistä. Tässä vaiheessa se testaa saman pakettisetillä laskentaa, kun pakettien järjestys arvotaan jokaiseen testiin.

Nykyinen algoritmi on valmis ja sen toimintaidea on "intuitiivisen järkevä" eli se ei käy samoja kokoonpanoja läpi useaan kertaan ja hyödyntää kombinatoriikan symmetriaa sekä osaa lopettaa, kun ensimmäinen käypä ratkaisu löytyy.
Nyt olisi tarkoitus kehittää älykkäämpi versio algoritmista, joka osaa matkan varrella päätellä mitä reittejä kannattaa käydä läpi (osaa karsia toivottomia haaroja itsenäisesti - branch and bound -periaatteella). Suorituskykyvertailussa nähdään sitten, kuinka paljon pystyy parantamaan nykyisestä.

Junit-testit ja javadoc jäi tässä palautuksessa vajaaksi...