<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">

<title>hakank.blogg</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/" />

<modified>2008-05-05T19:37:13Z</modified>
<tagline>Anteckningar från en PopSci-junkie blandat med egna mundäna försök. Samt annat. </tagline>

<id>tag:www.hakank.org,2008:/webblogg/1</id>

<generator url="http://www.movabletype.org/" version="3.2">Movable Type</generator>
<copyright>Copyright (c) 2008, hakank</copyright>

<entry>
<title>Sammanfattning av Bloggareträff uti Malmö, söndagen 4 maj 2008</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001216.html" />

<modified>2008-05-05T19:37:13Z</modified>
<issued>2008-05-05T19:35:42Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1216</id>

<created>2008-05-05T19:35:42Z</created>
<summary type="text/plain">Sammanfattning av Bloggareträff uti Malmö, söndagen 4 maj (2008), klockan 13:00 på Kin Long. Det finns två versioner av denna sammanfattning. Välj ditt val och stå sedan ditt kast: Den korta varianten Vi [kom, hälsade, beställde, pratade, åt, hade trevligt,...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Bloggmiddagar</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Sammanfattning av <a href="http://www.hakank.org/webblogg/archives/001213.html">Bloggareträff uti Malmö, söndagen 4 maj (2008), klockan 13:00 på Kin Long</a>.</p>

<p><br />
Det finns två versioner av denna sammanfattning. Välj ditt val och stå sedan ditt kast:</p>

<p><b>Den korta varianten</b><br><br />
Vi [kom, hälsade, beställde, pratade, åt, hade trevligt, betalade, gick].</p>

<p><br />
<b>Den något längre varianten</b><br><br />
Det var inalles sju (7) stycken deltagande bloggare som träffades på <a href="http://gulasidorna.eniro.se/query?what=map&mop=l5&streetname=&streetnumber=&city=&zipcode=&mapstate=6%3B1323133%3B6166533%3B0%3B1322401%3B6167303%3B1323866%3B6165763%3B&mapcomp=21446359%3B%3BKin+Long+Restaurant%3BR%E5dmansg.+%3B1%3B%3B21146%3BMALM%D6%3B040%3B611+94+04%3B%3B%3B1323210.0%3B6166587.0%3B1%3B0&heading_exact=Restauranger&heading=&heading_group=&company_name=&dir_area=&geo_area=&district_code=&ns=&stq=0&symbols=">Kin Long</A>. <br />
<ul><br />
<li> <a href="http://www.moonhouse.se/">Månhus beta-David</a> (numera även kallad <a href="http://jaiku.com/">Jaiku</a>-David)<br />
<li> <a href="http://www.anvandbart.se/">Användbart-Tommy</a> samt son Tim ungefär halva tiden<br />
<li> <a href="http://zyrenna.webblogg.se/">Zyrenna-Åsa</a><br />
<li> <a href="http://henriksundstrom.se/">Henrik Sundström-Henrik</a><br />
<li> <a href="http://www.triloger.se/">Thebe</a><br />
<li> <a href="http://ctail.avadeaux.net/">ctail</a><br />
<li> <a href="http://www.hakank.org/webblogg">hakank</a> (undertecknad)<br />
</ul></p>

<p>Trevligt och mycket god mat var det som vanligt. Maten var som vanligt gudomlig. Tips: man bör inte deltaga i animerade diskussioner just när man äter så god mat.</p>

<p><br />
Denna gång var det rätt mycket blogg- eller webbrelaterat som dryftades. Det kan bero på att det var ett antal (>4) månader sedan många av oss träffades sist, och det har hänt en del relaterat. </p>

<p><br />
- Strax efter att vi blivit fulltaliga tog David upp sin mobiltelefon för att <a href="http://moonhouse.jaiku.com/presence/33760083#c-1047611">Jaikua</a> att vi börjat vår bloggträff. Det kom då en kommentar om att telefonen inte verkade vara helt optimerad till att skriva långa (eller korta för den delen) texter. Varpå en stor minoritet av deltagarna (samtliga av manligt kön) tog upp sina mobiltelefoner. Exakt vad de sade vet jag inte men det kändes på något sätt högtidligt.</p>

<p><br />
- Onceability <br />
[Stavas det verkligen så? Om det är nytt men vedertaget uttryck borde man få mer än 10 träffar på favoritsökmotorn.]  </p>

<p>Oavsett hur det stavas så betecknar "onceability" sådana funktioner på en pryl (tänk mobiltelefon eller datorprogram) som är så komplicerade att använda så att man använder funktionen endast en gång. Sedan glömmer man bort funktionen och/eller så hittar man inte manualen. Det är därför man endast använder de avancerade telefonerna till att ringa med och till essemessen.</p>

<p>En mot-gambit till detta är att ge apparaten till någon i den yngre generationen som garanterat kommer att hitta funktioner som du inte har någon aning om. Troligen kommer densamma ungdomen att ändra inställningarna så att du måste leta rätt på manualen för att kunna använda apparaten igen.</p>

<p><br />
- Mer telefoner, det långt efter ovanstående telefonmania inträffade: Någon i sällskapet klagade på sin nya mobiltelefon att den hade kamera som denne inte använde: "Det gör den alldeles för tung" (obs! ej ordagrant citat. Citattecknen innebär endast att någon sade något).</p>

<p>Flera höll med om problemet att prylar inom normalt prisområde (speciellt mobiltelefon) har funktionalitet som inte används (zerobilitet?).<br />
En kommentar var däremot följande: "Jag tycker det är bra med lite tyngre telelfoner som man känner av den i fickan. Är de för små så är det lätt att tro att man glömt den eller inte är medveten om den.". </p>

<p>Varpå ett förslag kom att telefonen borde bli tyngre beroende på hur många telefonsamtal/SMS man inte besvarat.</p>

<p>[Sammanställarens anmärkning: Av någon anledning kommer jag att tänka på Umberto Ecos underbara analys av jeans i hans "Vad kostar ett mästerverk". En poäng med jeans är att man - till skillnad från andra byxor - känner av dem, och blir ständigt medveten om sin kropp.]</p>

<p><br />
Ovanstående förslag ledde osökt till:</p>

<p>- USB minne som blir större ju mer data som finns lagrat. <br />
Se Tommys inlägg <a href="http://www.anvandbart.se/node/1436">Kort minne</a>. Diskussion fördes då naturligtvis hur man skulle kunna utnyttja denna typ av återkoppling. Några förslag:<br />
 - för att radera alla filer så "punkterar" man "ballongen"<br />
 - om man skakar den hör man på rasslet hur mycket data som finns (kanske även vilken typ av data det är). Det bör dock inte låta som något är löst eftersom då förfelar det sin avsedda verkan.</p>

<p><br />
- En utlovad länk: Här är en trevlig blogg som använder spelteori och andra ekonimiska metoder för att analysera föräldraskap: <a href="http://gametheorist.blogspot.com/">Game Theorist - Musings on economics and child rearing</a>.</p>

<p><br />
- Någon (jag hakank) hade läst <a href="http://va.se/nyheter/bildspel/2008/04/framtidens-bloggstjarnor/">Framtidens bloggstjärnor</a> (*, samt min fetning) :<br />
<blockquote><br />
Nästa hajp i bloggsvängen kommer inte vara en <b>ytlig trendblogg</b> utan en djup, <b>nördig</b> sajt med otroligt sakkunskap. Här är kandidaterna.<br />
</blockquote></p>

<p>De fem kandidaterna till framtidens bloggstjärnor finns att läsa i artikeln. De är repektive en kollektiv litteraturblogg, en kollektiv musikblogg, en gruppblogg om musik, en modeblogg (!) samt en anonym tv-blogg.</p>

<p>Det noterades att det inte fanns någon representant av teknikbloggarna (übernördbloggaren), vilket ansågs som synd. Det har naturligtvis att göra med storleken på målgruppen.</p>

<p>Diskussion fördes om vad en nördblogg egentligen är. Generellt ansågs en modeblogg inte vara en nördblogg, däremot kan en blogg om enbart Gucciprodukter vara det, liksom en blogg som endast handlar om vänsterskor, eller enbart om produkter för vänsterhänta.</p>

<p>(*) <br />
Jag <b>tror</b> att det var Veckans affärer som skrev originalartikeln. I dagens hypermedia är det svårt att veta vem som ursprungligen publicerat en artikel. Eftersom det med stor sannolikhet var på VA jag läste artikeln (möjligen via någon annan) så är det rätt att länka till dem. Tror jag...</p>

<p><br />
- Mikrobloggning/sociala nätverkssystem<br />
Eftersom David var med oss blev det en del prat om detta. Det noterades alltså att ett antal personer som varit aktiva inom den svenska bloggosfären numera i viss mån bytt fokus och skriver nu istället på sådana ställen som <a href="http://jaiku.com/">Jaiku</a>. </p>

<p>Poängen är mycket att det både är ett socialt nätverk och att det finns en snabbhet i publikationer som t.ex. vanliga bloggar saknar, samt är mycket mer renodlat till att texta än de stora Yet-Another-Social-Networks(YASN)-härkena såsom Facebook.</p>

<p>Bloggvärldsbloggen skrev om detta för ett tag sedan: <a href="http://blogg.aftonbladet.se/1/perma/749496/">Mikrobloggar är det nya svart</a>.</p>

<p>Den första diskussionen kring detta spårade snabbt ur eftersom någon undrade om det verkligen var "mikrobloggning": varför inte minibloggning, eller nanobloggning. Eller Ångströmsbloggning?</p>

<p>Det gjorde då också en undring hur stor (dvs liten) en bloggning måste vara för att vara mikro (och därmed svart). Ursäkta att det skojades till här. Men det är så det kan gå ibland.</p>

<p>Det relativt okända YASN-systemet <a href="http://www.plaxo.com/">Plaxo</a> nämndes också. Det var inte många som kände till det. Det verkar inte har fått upp något större momentum i Sverige ännu. Man kan se det som en blandning av Facebook (kan skriva t.ex. blogginlägg) och Linked In, där man lägger in sina riktiga kontakter.</p>

<p>Diskussionen kom naturligtvis även in på vilken egentlig nytta man har av sådana YASN. Ett skäl så gott som något var att helt enkelt studera hur det sociala nätverket evolverar över tiden, när det exploderar och sedan stelnar.</p>

<p>Det nämndes även ett YASN som förr heter Klassträffen eller något liknande, men numera har ett engelskspråkigt namn (David kom ihåg det svenska namnet). [...En sökmotorsökning senare...] Ah, det var ju <a href="http://www.stayfriends.se/">StayFriends</a>. Där hade någon fått kontakt med gamla skolkamrater och tyckte det var funktionellt för just detta ändamål.</p>

<p>Ett aktuellt mem som visar konstigheterna i slika sociala nätverkssystem: <a href="http://www.youtube.com/watch?v=nrlSkU0TFLs">Facebook in reality</a>.</p>

<p><br />
Till detta inte helt orelaterad:</p>

<p>- Videobloggning, youtubning.</p>

<p>Det sågs inte helt odelat positivt att fler och fler bloggar har inlägg med endast en inbäddad Youtube-film. Det ses (av vissa i alla fall) vara ungefär på samma nivå som ett inlägg med endast en länk till en artikel någon annanstans.</p>

<p>Sedan kom vi in på "riktig" videobloggning, dvs då bloggaren skapar en egen film. Här tyckte en hel del att det är mycket bättre med text eftersom det är svårt att skumma filmer för att se om det är intressant. Någon annan höll principiellt med men ansåg att videoföreläsningar var ett mycket bra påfund.</p>

<p>Ett trevlig exempel på videobloggning är den i svensk folkmun relativt okände trollkarlen <a href="http://johanstahl.blogspot.com/">Johan Ståhl</a> som videobloggat (med kompletterande text) om sin resa till USA för några mycket ansedda föreställningar samt tävling i Las Vegas. Speciellt roligt är <a href="http://johanstahl.blogspot.com/2008/05/tvling-i-las-vegas.html">Tävling i Las Vegas</a> där prisutdelningen videofieras.</p>

<p>(Efter detta kom vi in på trolleri och trolleriets psykologi, framförallt om man som gammal trollkarl kan bli lurad. Men det tillhör sådant som det inte skrivs om här. Not: inga hemligheter avslöjades.)</p>

<p><br />
- Vad gäller luras så kom vi sedan in på att utbildare är tvunga att "lura" sina elever för att kunna förklara hur saker och ting fungerar. Efter ett tag kan man tillföra mer och mer detaljer för att få en mer sann bild.</p>

<p>Någon kommenterade att det var på samma sätt när man förklarar saker för sina barn. (Det specifika exemplet här var differentialekvationer men jag tror inte att det måste vara så extremt).</p>

<p>Varpå det kommenterades att matematiken är troligen den enda disciplinen som inte gör denna omväg kring att förenkla för eleverna utan förklarar från börjar "hur det är" med att börja med grunderna i stället för att "pedagogisera" ämnet. Till förfång för mången elever. (Naturligtvis är denna beskrivning i sig en förenkling av hur det verkligen är. Det finns många bra matteböcker och mattelärare. Så var det sagt.)</p>

<p>Här bevingades även uttrycket "Nils Holgersson-perspektiv" som den skånska varianten av helikopterperspektiv.</p>

<p><br />
- Det torrprogrammerades inte i Excel, och i övrigt var det inte speciellt mycket matematiknörderier.</p>

<p>- Ett kärt ämne: hur mycket följer man statistiken på sin blogg. </p>

<p>Det verkar som om intresset överlag har minskat under åren, naturligtvis med några undantag. Någon hade inte kontrollerat sin besöksstatistik på flera månader. </p>

<p>Några var överens om att den mest intressanta var att man hade kontroll av länkar till sin blogg. Andra tyckte att det var mest intressant vilka ord som besökarna använde för att komma till bloggen.</p>

<p>I samband med detta utbrast en av deltagarna (hakank) sin starka irritation över den spam-farm som sedan några veckor försöker anropa mt-tb.cgi (som sedan länge är helt borttagen från systemet). Naturligtvis försöker de att få bättre rankning på sökmotorerna. Idioter! </p>

<p><br />
- "Blogga ett inlägg om dagen"</p>

<p>Eftersom de allra flesta av deltagarna numera är mindre aktiva än tidigare pratades det om orsaken.</p>

<p>I vissa fall är fokus på andra publikationssystem (se ovan), i andra fall att man inte anser sig har något nytt att komma med, där kraven vad som är nytt och relevant att skriva om har ökat med åren.</p>

<p>Någon: "en tanke är att helt enkelt radera sin gamla blogg och börja om från början, med en helt annan inriktning än den nuvarande".</p>

<p>Någon: "jag ska testa att skriva ett inlägg om dagen under en månad..."</p>

<p>Varpå det naturligtvis blev en diskussion hur stort/litet en sådant inlägg måste vara för att det ska räknas. Pendangen till föregående uttalande var iofs "... oavsett hur stort eller litet det är".</p>

<p>Någon annan hade löst det genom att ha ett flertal specialinriktade bloggar (mer eller mindre anonyma och/eller skilda från existerande blogg), men - och det tyckte vi var lite roligt - kom inte ihåg alla de bloggar som skrevs på.</p>

<p>- Att själv skriva sina kommentarer under ett annat namn ansågs vara fusk och om det kommer ut blir det stor skandal: "Länkskandal i bloggosfären" var förslag på rubrik (om det var någon mer känd blogg än våra). Inte helt catchy rubrik, dock.</p>

<p><br />
- Fusk i rekommendationssystem<br />
Länk angående fusk i sådana system utlovades:<br />
<a href="http://www-users.cs.umn.edu/~lam/papers/p333-lam.pdf">Shilling Recommender Systems for Fun and Profit</a>. </p>

<p>Se även: <a href="http://www.google.com/search?num=100&hl=sv&q=%28%22recommendation+system%22+%7C+%22recommender+systems%22+%7C++%22collaborative+filtering%22%29+%28attack+%7C+shilling%29&btnG=S%C3%B6k&lr=">("recommendation system" | "recommender systems" |  "collaborative filtering") (attack | shilling)</a>.</p>

<p><br />
Det diskuterades även allmän osäkerhet i vissa typer av betygssättarsystem:<br><br />
 - för få betygssättare ger skevt medelbetyg<br><br />
 - vet inte alltid vad det egentligen är som betygssätts<br><br />
 - vet inte alltid när betygssättningen gjordes. Är det ett gammalt betyg kan saker och ting har förändrats (till det bättre eller sämre).<br></p>

<p><br />
- Cocktails</p>

<p>I vissa sammanhang kring matbordet är det oundvikligt att whisky kommer upp på dagordningen. I detta sällskap är det istället <a href="http://ctail.blogspot.com/2008/05/det-dr-r-inte-en-martini.html">cocktails</a> som dryftas. </p>

<p>En sak som vi alla nu väntar på är en djup analys vilken typ av maträtt som passar bäst till vilken cocktail, såväl före som efter maten (endera eller bådadera).</p>

<p><br />
- Skulle du läsa din blogg om du inte skrev den själv?</p>

<p>(Här låter vi allt annat i världen vara ceteris paribus, dvs vi antar bara att det inte är du som skrev din blogg, men att ditt liv i övrigt var detsamma. En märklig förutsättning, men OK.)</p>

<p>Flera (an|in)såg att man nog inte skulle läsa eller bloggbevaka sin blogg. Exakt av vilka skäl anfördes inte, men man kan skönja en viss koppling till att samma personer inte läser så många bloggar. </p>

<p>En deltagare medgav dock att det berodde på att denne som skribent vill styra händelsens utveckling, vilket ju inte kan göras som läsare. Någon annan skulle dock läsa sin egen blogg.</p>

<p>- Det klagades på alldeles för långa bloggtexter.</p>

<p>Med viss rätt. </p>

<p><br />
- Typealyzer<br />
Naturligtvis nämndes <a href="http://www.prfekt.se/typealyzer/">Typealyzer</a> där man kan skriva in en URL varpå texten analyseras enligt en personlighetstyp. </p>

<p>(hakank: Jag blir alltid INTP eller INTJ på alla denna typ av texter. Ett av de få undantaget är det gamla litterära försöket <a href="http://www.hakank.org/alster/diary.html">Till min dagbok om jag hade någon</a>. Vilket inte är så konstigt.)</p>

<p>Vissa tekniska saker kring systemet diskuterades.</p>

<p><br />
- "Bloggar du för dina läsare eller för sökmotorerna?"</p>

<p>En förstulen kommentar kring Googles PageRank orsakade ovanstående fråga. Det är alltså inte bara frågan om vem som är målgruppen utan även "när" är målgruppen. Bloggar kommer traditionellt högt på sökmotorerna eftersom det dels länkas mellan varandra men även att det nu finns ett antal aggregatorer där text + länk kommer upp.</p>

<p>Exempel: mitt första inlägg om MiniZinc (<a href="http://www.hakank.org/webblogg/archives/001209.html">Constraint Programming: Minizinc, Gecode/flatzinc och ECLiPSe/minizinc</a>) efter någon timme fanns i en eller annan form på ett 10-tal svenska sajter - inklusive sökbart på google och yahoo - efter bara några timmar. ("minizinc" är tacksamt som att ha som test eftersom det fortfarande är relativt få som skriver om det. Tyvärr.)</p>

<p><br />
Utlovad länk till Firefox-extension (add on) för visning av Google PageRank:<br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/2007">Live PageRank</a>. PageRanken visas nere till höger i statusfältet. <br />
Se även <a href="http://livepr.raketforskning.com">LivePR</A>, som funkar inte så bra i skrivande stund.</p>

<p>Sedan är det en helt annan fråga hur mycket:<br><br />
 1) man kan lita på att detta är det korrekta PageRank-värdet som används av google själv<br><br />
 2) av PageRank som används av google vid en söksortering.<br><br />
</p>]]>


</content>
</entry>
<entry>
<title>Mitt OpenOffice Calc-/Excel-skov</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001215.html" />

<modified>2008-04-29T19:26:21Z</modified>
<issued>2008-04-27T18:45:11Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1215</id>

<created>2008-04-27T18:45:11Z</created>
<summary type="text/plain">Som tidigare antytts har jag tidigare kollat in OpenOffice Calc och Excel. IRL har detta till mina vänner beskrivits som mitt OpenOffice/Excel-skov och det har i vissa fall även utlovats en rapport om detta. Här är en reseskildring över förloppet,...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Operations research</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Som tidigare <a href="http://www.hakank.org/webblogg/archives/001209.html">antytts</a> har jag tidigare kollat in OpenOffice Calc och Excel. IRL har detta till mina vänner beskrivits som mitt OpenOffice/Excel-skov och det har i vissa fall även utlovats en rapport om detta.</p>

<p>Här är en reseskildring över förloppet, kompletterad med några exempel som gjordes då. Samtliga exempel utnyttjar Solver/Problemlösaren eftersom det är den finessen som jag uppskattade mest.</p>

<p><br />
<h3>Excel/OpenOffice Calc</h3><br />
Av lite olika anledningar började jag ordentligt kolla in Excel/OpenOffice Calc under hösten 2007 och blev riktigt överraskad hur kompetent det är. Jag hade kollat in det för många år sedan men blev då inte speciellt road, troligen för att själva spreadsheet-metaforen inte passade mig då. </p>

<p>Dataanalys har istället gjorts i främst <a href="http://www.r-project.org/">R</a> eller rena standardprogramspråk (C, C++, Java, Perl, Python, Ruby etc) med eller utan numeriska tillägg, eller med matematiska system såsom Maple/Matlab (eller dess kloner såsom MuPAD, Octave) etc etc.</p>

<p>I och för sig har (eller snarare hade eftersom Windowsmaskinen är trött numera) jag tillgång till Excel 2003, men eftersom jag främst är en Linux-människa kollade jag mest in <a href="http://www.openoffice.org/">OpenOffice</a> <a href="http://www.openoffice.org/product/calc.html">Calc</a> som är valdigt kompatibel med Excel 2003.</p>

<p>Som av en slump sträcklästes först Bill Jelens praktverk <a href="http://www.bokus.com/b/9780789736116.html">Special Edition Using Microsoft Office Excel 2007</a> (>1000 sidor). Trots att boken är för Excel 2007 är det väldigt mycket som är applicerbart för Calc, framförallt formler och sätt att tänka. (Jag läste dock kursivt de första 300-400 sidorna som pratar om det nya GUI-t för Excel 2007).</p>

<p>Sedan införskaffades <a href="http://www.bokus.com/b/9780735623965.html">Microsoft Office Excel 2007 - Data Analysis and Business Modeling</a> skriven av Wayne Winston. Denna bok innehåller många fler fullständiga och kommenterade exempel (än Jelens bok). De mest intressanta var avsnitten kring planering, simulering etc, framförallt modellerna med linjära-/heltals-modeller. </p>

<p>En asidekommentar i ett av dessa avsnitt hänvisade till Winstons egen bok <a href="http://www.bokus.com/b/9780534423629.html">Operations Research - Applications and Algorithms</a>, och den införskaffades därför (ibland är bokbeställningsbenägenhetströskeln väldigt låg). Det är en alldeles förträfflig introduktion inom området Operations Research (OR, operationsanalys på svenska). För böcker som därefter lästes inom OR, se litteraturlistan i <a href="http://www.hakank.org/webblogg/archives/001212.html">Applikationer med constraint programming, lite om operations research samt nya MiniZinc-modeller</a>.</p>

<p>Ungefär i samband med testningen av OR-exemplen började jag fundera på hur man implementerade problem såsom SEND + MORE = MONEY och liknande småpyssel i Excel/Calc. En del andra problem implementerades också, vara några presenteras nedan. </p>

<p>Det gemensamma med dessa problem är att de använder Solver/Problemlösaren, en av de mest avancerade funktionerna i systemen. Se vidare nedan under Solver/Problemlösaren.</p>

<p><br />
Ett tag var allting smör och solsken (eller vad det nu heter), men efter ett tag blev begränsningarna i systemet mer och mer tydliga: Excels Solver kan inte hantera fler an 200 beslutsvariabler; den Solver som användes i OpenOffice Calc kan vara långsam och hanterar inte icke-linjära problem (ibland kan man modellera runt denna begränsning men det är ofta rätt trixigt). Det var då jag gick över till att modellera i andra modellspråk, något som beskrivs i <a href="http://www.hakank.org/webblogg/archives/001212.html">Applikationer med constraint programming, lite om operations research samt nya MiniZinc-modeller</a>.</p>

<p><br />
<h3>Solver/Problemlösaren</h3><br />
Som ovan nämndes är OpenOffice Calc/Excel väldigt kompetenta och kan göra en massa saker. Det enda jag tänker att beröra här är en av de mest kraftfulla funktionerna: Solver (OpenOffice Calc, eller engelskspråkiga Excel)/Problemlösaren (svenskspråkig Excel).</p>

<p>Kortfattat kan säga att Solver möjliggör lösningar av vissa typ av problem genom att optimera vissa värden på ett smart sätt. Man kan säga att Solver testar en massa olika lösningar och väljer den (eller en av flera) som är bäst givet det kriterium man angivit.</p>

<p>OpenOffice har ingen inbyggd solver, men det ska komma en sådan i version 3. Tills vidare kan rekommenderas det Solver-paket (.oxt-paket) som Kohei Yoshida skapat: <a href="http://kohei.us/ooo/solver/">Calc Optimization Solver</a>. Tyvärr hanterar det endast linjära problem.</p>

<p>Istället för att förklara detaljerna hur man gör för att använda Solver, länkas här till några bra introduktioner. Jag rekommenderar även att någon av ovan nämnda Excel-böcker studeras (där står mycket annat matnyttigt om Excel). Samtliga beskriver Excels Solver, men det funkar i princip på samma sätt i OpenOffice Calc.</p>

<p>* <a href="http://www.economicsnetwork.ac.uk/cheer/ch9_3/ch9_3p07.htm">Teaching Linear Programming using Microsoft Excel Solver</a>. Introduktion i linjär programmering, med instruktion hur man använder Solver.</p>

<p>* Microsofts egen dokumentation: <a href="http://office.microsoft.com/en-us/excel/HA011245951033.aspx">Introduction to optimization with the Excel Solver tool</a></p>

<p>* <a href="http://www.solver.com/tutorial.htm">Learn to Use the Excel Solver to Make Money-Saving Decisions: Build Models to Allocate Scarce Resources</a></p>

<p>* (Bok) Paul Cornell: <a href="http://www.bokus.com/b/9781590595916.html">Beginning Excel What-if Data Analysis Tools - Getting Stated with Goal Seek, Data Tables, Scenarios, and Solver</a>.<br />
   </p>

<h3>Några exempel med Solver/Problemlösaren</h3>
Här är några exempel på hur man använder Solver/Problemlösaren. Samtliga är skrivna i OpenOffice Calc version 2.4, och de <b>borde</b> fungera även i Excel 2003 eller senare. Tyvärr är min Excel 2003 inte tillgänglig för tillfället så de kan inte testas där, men vid modelleringen i höstas funkade samtliga exempel i båda systemen.

<p>I dokumenten beskrivs vilka celler/områden som är relevanta för Solver.</p>

<p>För jämförelsens skull länkas även till motsvarande <a href="http://www.hakank.org/minizinc">MiniZinc</a>-modell. (Om någon skulle vara intresserad av motsvarande modeller i <a href="http://www.ampl.com/">AMPL</a> är det bara att hojta.)</p>

<p>Not: Inga macros har använts.</p>

<table>
 <tr> <td><b>Exempel</b></td> <td><b>Calc/Excel</b></td> <td><b>MiniZinc</b></td> </tr>
 <tr>
 <td>Schemaläggning (från Winstons OR-bok)</td> <td><a href="http://www.hakank.org/oocalc_excel/Scheduling_Winston.xls">Scheduling_Winston.xls</a></td> <td><a href="http://www.hakank.org/minizinc/post_office_problem.mzn">post_office_problem.mzn</a>, mer generell modell: <a href="http://www.hakank.org/minizinc/post_office_problem2.mzn">post_office_problem2.mzn</a> </td> </tr> <tr>
 <td>Produktplanering (chess set)</td>
 <td><a href="http://www.hakank.org/oocalc_excel/chess_sets.xls">chess_sets.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/chessset.mzn">chessset.mzn</a></td>
 </tr>
 <tr>
 <td>Diet-problemet</td>
 <td><a href="http://www.hakank.org/oocalc_excel/diet.xls">diet.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/diet1.mzn">diet1.mzn</a></td>
 </tr> <tr>
 <td>Knapsack</td>
 <td><a href="http://www.hakank.org/oocalc_excel/knapsack.xls">knapsack.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/knapsack2.mzn">knapsack2.mzn</a></td>
 </tr> <tr>
 <td>Set covering (Winstons brandstationsexempel)</td>
 <td><a href="http://www.hakank.org/oocalc_excel/set_covering_winston.xls">set_covering_winston.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/set_covering.mzn">set_covering.mzn</a></td>
 </tr> <tr>
 <td>SEND + MORE = MONEY</td>
 <td><a href="http://www.hakank.org/oocalc_excel/send_more_money.xls">send_more_money.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/send_more_money.mzn">send_more_money.mzn</a></td>
 </tr> <tr>
 <td>Växling av pengar (knapsack-variant)</td>
 <td><a href="http://www.hakank.org/oocalc_excel/money_changing.xls">money_changing.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/money_change.mzn">money_change.mzn</a></td>
 </tr><tr>
 <td><a href="http://www.hakank.org/webblogg/archives/001084.html">Seseman-problemet</a></td>
 <td><a href="http://www.hakank.org/oocalc_excel/seseman.xls">seseman.xls</a></td>
 <td><a href="http://www.hakank.org/minizinc/seseman.mzn">seseman.mzn</a>, mer generell modell: <a href="http://www.hakank.org/minizinc/seseman2.mzn">seseman2.mzn</a></td>
 </tr>
</table>

<h3>Slutord</h3>
Jag har även kollat in <a href="http://www.gnome.org/projects/gnumeric/">Gnumeric</a> som är en annan Excel-kompatibel öppenkod-produkt. Där finns en solver men den blev jag aldrig vän med.
]]>


</content>
</entry>
<entry>
<title>Ett litet april-pyssel</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001214.html" />

<modified>2008-04-26T09:42:32Z</modified>
<issued>2008-04-26T09:25:03Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1214</id>

<created>2008-04-26T09:25:03Z</created>
<summary type="text/plain">För tre år sedan (2005) publicerades ett Aprilpyssel. Det är dags att åter ta upp denna tradition. Naturligtvis är nedanstående pyssel - på något sätt - kopplat till det jag kollar in just nu, dvs constraint programming/integer programming/MiniZinc. Denna typ...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Pyssel</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>För tre år sedan (2005) publicerades ett <a href="http://www.hakank.org/webblogg/archives/000945.html">Aprilpyssel</a>. Det är dags att åter ta upp denna tradition.</p>

<p><i>Naturligtvis är nedanstående pyssel - på något sätt - kopplat till det jag kollar in just nu, dvs <a href="http://www.hakank.org/webblogg/archives/cat_constraint_programming.html">constraint programming/integer programming/MiniZinc</a>.</i></p>

<p><br />
Denna typ av pyssel har ett specifikt namn - som jag inte avslöjar just nu - och tillhör en grupp mer generella problem (som vad jag vet inte har något speciellt namn, dock med åtminstone ett undantag).</p>

<p><br />
<h3>Problem</h3><br />
<b>Inledning</b><br></p>

<p>Betänk följande binära matris (dvs endast 0 och 1 förekommer) där summorna för respektive rader och kolumner visas i fetstil.<br />
  <br />
<code><br />
<b>1</b>&nbsp;010<br />
<b>1</b>&nbsp;010<br />
<b>0</b>&nbsp;000<br />
&nbsp;&nbsp;<b>020</b><br />
</code>  </p>

<p>Vi sammanfattar respektive summor i två vektorer:<br><br />
  - radsummor: [1,1,0]<br><br />
  - kolumnsummor: [0,2,0].<br></p>

<p><br />
Dagens pyssel går nu ut på, att givet en radsummavektor och en kolumnsummavektor, lista ut vilken matris som ligger som grund för dessa summor.</p>

<p><br />
<b>Delproblem</b><br><br />
Det är två stycken delproblem som vardera på något vis kan ge ledtråd till lösningen av det andra delproblemet.</p>

<p><i>Delproblem a</i><br />
<code><br />
radsummor= [0,2,2,2,2,2,8,8,4,4,4,4,4,0]<br />
kolumnsummor = [0,0,0,12,12,2,2,2,2,7,7,0,0,0]<br />
</code></p>

<p><i>Delproblem b</i><br />
<code><br />
radsummor = [0,0,8,2,6,4,5,3,7,0,0]<br />
kolumnsummor = [0,0,7,1,6,3,4,5,2,7,0,0]<br />
</code></p>

<p><br />
Ett av dessa problem har jag snott ("kopierat" är en mer korrekt term för detta förfarande) från någonstans, det andra har jag hittat på själv. Ordningen mellan delproblemen, liksom presentationen av dess härlednad i föregående mening, är faktiskt slumpad med ett slumptalsprogram, nämligen <a href="http//www.r-project.org">R</a>.</p>

<p><br />
<b>Vinnerier etc</b><br><br />
<b>Vinnaren</b> i detta pyssel anses den vara som först till pysselledningen:<br><br />
 - p) ger korrekt svar på båda delproblem<br><br />
 - q) <b>samt</b> redogör för hur problemet löstes.</p>

<p>"Till pysselledningen" definieras här som antingen en kommentar i denna blogganteckning, eller ett mail till <a href="mailto:hakank@bonetmail.com">hakank@bonetmail.com</a>.</p>

<p>Vinnaren erhåller i kommentarerna till denna blogganteckning eller i en separat blogganteckning ett "Bra gjort, X!", där X ersätts av vinnarens namn/handle/smeknamn etc. Möjligen kommer "Bra gjort" att ersättas av synonymiserade uttryck och/eller kompletteras med kraftfullare attribut (såsom "Mycket") då i kombination med erforderliga ändringar av resten av uttrycket för att det ska bli så korrekt svenska som möjligt (byte av stor till liten bokstav etc).</p>

<p>Pysselledningen förbehåller sig att dela ut noll (0) eller flera <b>stilprogram</b> till förslag som ej är korrekt lösta, inkompletta men på något sätt (subjektivt bedömt) förtjänar ett stilpoäng, men även till korrekta lösningar som förtjänar sådan stilpoäng. Negativa stilpoäng kommer inte att delas inte, åtminstone inte officiellt. Eventuella felaktigheter som eventuellt påpekas för eventualla lösningsförslag definieras inte som negativa stilpoäng i detta sammanhang.</p>

<p>Till allt detta kommer vinnaren även att erhålla <b>en</b> av följande vid nästa <b>eller</b> någon (dock endast en) efterföljande IRL-träff (den virtuella glassen är än så länge alldeles för blaskig för att bjuda på):<br><br />
 - glass<br />
 - öl<br />
 - kaffe<br />
 - te<br />
 - eller annan motsvarande dryck</p>

<p>Not: Glass/öl/etc kan delas ut av den person som råkar utgöra pysselledningen i helt andra sammanhang och av helt andra skäl. Detta ska då ses som något som är hetl frikopplat från denna pysseltävling.</p>

<p><br />
<h3>Lösningens presenterande etc</h3><br />
Det är planerat att presentera den av pysselledningen ansedda korrekta lösningen (inklusive några kommentarer samt åtminstone en vidarelänk) efter en viss tid har s.a.s. runnit, inklusive en <a href="http://www.hakank.org/minizinc/">MiniZinc</a>-modell. Exakt när detta sker beror på.</p>

<h3>Slutord</h3>
En av de saker som intresserar mig är hur man går till väga för att lösa slika problem. Därför är punkt q) viktig i lösningen. Det behöver inte vara (men kan vara) speciellt långt svar, men ange gärna metod, systemstöd samt - vilket är lika intressant - eventuella felskär.

<p>Slutligen:  Förutom "Lycka till!" kan noteras (vilket säkert redan gjorts av den observante läsaren) att ovanstående pysselformulering kunde - om omständigheterna vore annorlunda -  göras mycket kortare.  Men det är de inte så det gjordes inte.</p>]]>


</content>
</entry>
<entry>
<title>Bloggareträff uti Malmö, söndagen 4 maj (2008), klockan 13:00 på Kin Long</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001213.html" />

<modified>2008-04-24T13:56:41Z</modified>
<issued>2008-04-23T20:51:27Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1213</id>

<created>2008-04-23T20:51:27Z</created>
<summary type="text/plain">Berätta helst om du tänker komma genom en kommentar här eller via epost till mig: hakank@bonetmail.com. Ja, det är väl inte så mycket mer att säga. Mer än länka till information om tidigare bloggareträffar där det står vad vi tenderat...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Bloggmiddagar</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Berätta helst om du tänker komma genom en kommentar här eller via epost till mig: <a href="mailto:hakank@bonetmail.com">hakank@bonetmail.com</a>.</p>

<p>Ja, det är väl inte så mycket mer att säga. </p>

<p>Mer än länka till information om <a href="http://www.hakank.org/webblogg/archives/cat_bloggmiddagar.html">tidigare bloggareträffar</a> där det står vad vi tenderat att prata om och inte prata om (indirekt genom avsaknad av beskrivning av sådana ämnen), vem som har tenderat att komma och vem som inte ha tenderat att komma (även det indirekt genom att dessa personer - och det är väldigt många bara i Sverige som inte kommer på dessa bloggmiddagar - som inte står upptagna i listan över deltagare). </p>

<p>Välkommna du/ni som har bloggartendenser och befinner dig/er i Malmö vid den rubriken angivna tid-/platspunkten!</p>

<p>OK, en sak till då. <a href="http://gulasidorna.eniro.se/query?what=map&mop=l5&streetname=&streetnumber=&city=&zipcode=&mapstate=6%3B1323133%3B6166533%3B0%3B1322401%3B6167303%3B1323866%3B6165763%3B&mapcomp=21446359%3B%3BKin+Long+Restaurant%3BR%E5dmansg.+%3B1%3B%3B21146%3BMALM%D6%3B040%3B611+94+04%3B%3B%3B1323210.0%3B6166587.0%3B1%3B0&heading_exact=Restauranger&heading=&heading_group=&company_name=&dir_area=&geo_area=&district_code=&ns=&stq=0&symbols=">Här</a> är en karta till restaurang Kin Long, det är precis till väster om stora hotellet vid Malmös mittpunkt: Triangeln.<br />
</p>]]>


</content>
</entry>
<entry>
<title>Applikationer med constraint programming, lite om operations research samt nya MiniZinc-modeller</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001212.html" />

<modified>2008-04-22T17:45:37Z</modified>
<issued>2008-04-21T19:43:10Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1212</id>

<created>2008-04-21T19:43:10Z</created>
<summary type="text/plain">CP nedan är förkortning för Constraint Programming. Andreas Larsson frågade följande i kommentaren till MiniZinc-sida samt fler MiniZinc-exempel: Har du några fina exempel på när sådan här typ av programmering används i näringslivet, dvs. utanför institutionerna och skolsalarna? Det tänktes...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Constraint Programming</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p><i>CP nedan är förkortning för Constraint Programming.</i></p>

<p><br />
Andreas Larsson frågade följande i kommentaren till <a href="http://www.hakank.org/webblogg/archives/001211.html#comments">MiniZinc-sida samt fler MiniZinc-exempel</a>:<br />
<blockquote><br />
Har du några fina exempel på när sådan här typ av programmering används i näringslivet, dvs. utanför institutionerna och skolsalarna?<br />
</blockquote></p>

<p>Det tänktes först skrivas en rätt kort kommentar som sedan växte till en alldeles egen blogganteckning. Hoppas att du fått svar på din fråga, Andreas.</p>

<p><br />
<h3>Kommersiella tillämpningar</h3><br />
Först: jag känner inte till några näringslivsimplementationer specifikt i MiniZinc.</p>

<p>Sedan: Jag tillåter mig att utöka svaret lite grand med länkar till saker inom både constraint programming och operations research.</p>

<p>Här är en lista på några kommersiella applikationer av CP:</p>

<p><a href="http://www.constraintsolving.com/AppCP.html">Applications Of Constraint Programming</a></p>

<p>Sedan kan man kika på kunderna till några av constraint programming-systemtillverkarna.</p>

<p>Koalog: <a href="http://www.koalog.com/php/clients.php">Clients</a>.</p>

<p>SICStus: <a href="http://www.sics.se/isl/sicstuswww/site/customers.html">Customers</a>. SICStus är en (svensk!) Prolog-implementation (en av de mest kraftfulla) med CP-stöd. Några kunder använder CP-teknologin.</p>

<p>ILOG: <a href="http://www.ilog.com/products/cp/">ILOG CP</a> med en lång lista på ILOGs <a href="http://ilog.com/success/">kunder</a>. ILOG har dock andra produkter, t.ex. CPLEX som är en av de mest kraftfulla solver för linjär/integer/mixed programmering. ILOGs modelleringsspråk OPL är för övrigt en av inspirationskällorna till MiniZinc. </p>

<p>Mer allmänt kan sägas att många av de problem som studeras inom constraint programming kan mycket väl tillämpas inom näringslivet och har även gjorts även om jag inte kan ge några bättre länkar just nu. </p>

<p>På <a href="http://www.hakank.org/minizinc/">My MiniZinc page</a> finns ett flertal exempel under rubriken "Operations Research" (se även nedan). Det är några enkla skolexempel på problem där constraint programming-metoden används: schemaläggning, rutt-planering, lagerhantering etc. Flera av dessa exempel har jag tagit från läroböcker i just operations research (länkar till dessa böcker finns nedan). På MiniZincs <a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc/minizinc_examples">exempelsida</a> finns flera sådana exempel, och benchmark-katalogen finns en hel del större problem.</p>

<p></p>

<p>(Ja visst ja - och detta har inget med näringslivsimplementationer att göra - jag har ju glömt bort att länka till den obligatoriska Sudoku-lösningen: <a href="http://www.g12.csse.unimelb.edu.au/minizinc/sudoku.mzn">modellen</a>, <a href="http://www.g12.csse.unimelb.edu.au/minizinc/sudoku.data">data</a>, <a href="http://www.g12.csse.unimelb.edu.au/minizinc/sudoku.soln">resultatet</a>. Notera att modellen är för arbiträr dimension, exemplet är för det vanliga 3 x 3-problemet.)</p>

<p></p>

<h3> Operations Research</h3>
För en introduktion i operations research se wikipedia <a href="http://en.wikipedia.org/wiki/Operations_research">operations research</a>.

<p>OR använder traditionellt (bl.a.) matematisk programmering, såsom linjär programmering, heltalsprogrammering (integer programming), och mixed integer programming (blandat flyttal och heltal). Det som numera komplicerar en strikt uppdelning av constraint programming å ena sidan och OR å andra är: </p>

<p> * Metoderna i CP och OR har sedan ett antal år börjat att närma sig/befrukta varandra.<br />
 * För t.ex. MiniZinc-systemet kan nämnas att en av de solvers som det redan nu finns stöd (ECLiPSe's eplex) använder just linear/integer programming. Det gör att det blir än mer flytande gränser. (Och i vissa av mina CP-modeller används standard-trick specifikt från integer programmering-modellering, se t.ex. <a href="http://www.hakank.org/minizinc/knapsack_investments.mzn">knapsack_investment.mzn</a>).</p>

<p><br />
Här är några system som använder sådan matematisk programmering:</p>

<p>* <a href="http://www.ampl.com/">AMPL</a>. Det finns en <a href="http://www.ampl.com/DOWNLOADS/index.html">demo</a> (finns för Linux/Unix, Windows) att ladda ner och leka med. Demoversionen har dock endast stöd för cirka 300 variabler. AMPL är mitt favoritsystem inom denna genre; de solvers som används är rasande snabba, speciellt CPLEX som även finns att ladda ner som demoversion. </p>

<p>Kan passa på att här nämna att flera av mina MiniZinc-modeller först skrevs i AMPL under mitt AMPL-skov i höstas/vintras (se nedan). Det har funderats på att skapa en motsvarande "My AMPL page".</p>

<p>* <a href="http://www.gnu.org/software/glpk/">GLPK</a> är ett open source-system som har ett modelleringsspråk som är mycket likt AMPL (bygger på en tidigare version av AMPL), men är inte lika snabbt eller kraftfullt som AMPL (+ dess olika solvers). Tyvärr klarar GLPK inte icke-linjär programmering speciellt bra.</p>

<p>* <a href="http://www.dashoptimization.com/">Dash Optimization</a> <a href="http://www.dashoptimization.com/home/products/products_mosel.html">XPress Mosel</a>. <a href="http://www.dashoptimization.com/home/cgi-bin/example.pl">Här</a> finns några exempel. <br />
Man kan notera att de allra flesta problemen i Martin Chlonds underbara samling <a href="http://www.chlond.demon.co.uk/academic/puzzles.html">Integer Programming in Recreational Mathematics</a> är skrivna i XPress-MP (och som antyddes i slutet av <a href="http://www.hakank.org/webblogg/archives/001209.html">Constraint Programming: Minizinc, Gecode/flatzinc och ECLiPSe/minizinc</a> finns de översatta till både AMPL och MiniZinc men inte tillräckligt hyfsade för att publicera.)</p>

<p>Några andra system nämns nedan.</p>

<p><br />
<h3>Några böcker om Constraint Programming</h3><br />
Böckerna listas i princip i läsordning.</p>

<p>Kim Marriott, Peter J. Stuckey <a href="http://www.bokus.com/b/9780262133418.html?pt=search_result">Programming with Constraints - An Introduction</a>. Min första CP-bok. Mycket trevlig med många exempel och detaljer. Exemplen är Prologvarianterna (Constraint Logic Programming). Både Marriott och Stuckey tillhör hjärnorna bakom MiniZinc.</p>

<p>Pascal van Hentenryck: Constraint Satisfaction in Logic Programming (finns inte just nu på Bokus). En av de första böckerna om Constraint Logic Programming. Flera av standardexemplen populariserades här.</p>

<p>Krzysztof Apt, Mark Wallace <a href="http://www.bokus.com/b/9780521866286.html">Constraint Logic Programming using Eclipse</a>. Beskriver det Prolog-inspirerade systemet <a href="http://eclipse.crosscoreop.com/">The ECLiPSe Constraint Programming System</a> både vad gäller Prolog-delen och constraint-delen.</p>

<p>Pascal van Hentenryck, Laurent Michel <a href="http://www.bokus.com/b/9780262220774.html">Constraint-Based Local Search</a>. Denna bok presenterar systemet <a href="http://www.comet-online.org/Welcome.html">COMET</a> som löser optimeringsproblem med s.k. <a href="http://en.wikipedia.org/wiki/Local_search_(optimization)">local search</a>, vilket är en annan metod än den som beskrivs i ovanstående böcker.</p>

<p>Boken är mycket intressant just eftersom den beskriver moderna och mycket snabba tekniker samt dokumenterar ett specifikt system. Tyvärr är den version som finns nedladdningsbar inte riktigt kompatibel med boken så man måste mixtra en hel del.</p>

<p>Krzysztof Apt <a href="http://www.bokus.com/b/9780521825832.html">Principles of Constraint Programming</a>. Detta är en ganska teoretisk bok som går igenom tekniken bakom constraint programming. Används vad jag förstår mycket på universiteten.</p>

<p>Thom Frühwirth, Slim Abdennadher <a href="http://www.bokus.com/b/9783540676232.html">Essentials Of Constraint Programming</a>. Systematisk översikt över constraint programming. Det speciella är att man nästan genomgående använder <a href="http://www.cs.kuleuven.be/~dtai/projects/CHR/">Constraint Handling Rules</a> (där Frühwirth är en av de stora).</p>

<p><br />
En bok som funderas på att införskaffas är samlingsvolymen <a href="http://www.bokus.com/b/9780444527264.html">Handbook of Constraint Programming</a>. Den innehåller många essäer om state-of-the art inom forskningsområdet. Den är tyvärr lite dyr.</p>

<p><br />
<h3>Några böcker om Operations Research</h3><br />
Samtliga dessa har lästs, och presenteras i strikt läsordning (med början hösten 2007).</p>

<p><a href="http://www.bokus.com/b/9780735623965.html">Microsoft Office Excel 2007 - Data Analysis and Business Modeling</a>. Det var faktiskt denna bok som fick mig börja med OR och sedan constraint programming. Några av kapitlen innehåller exempel från OR. En liten fotnot hänvisade till Winstons OR-bok (se nedan) och sedan var det kört.</p>

<p>(Jag har länge tänkt skriva om mitt Excel-skov som föregick OR- och CP-skoven. Det kommer förhoppningsvis någon gång framgent.)</p>

<p>Wayne Winston <a href="http://www.bokus.com/b/9780534423629.html">Operations Research - Applications and Algorithms</a>. Många exempel, modellerna skrivna i Excel eller <a href="http://www.lindo.com/">Lindo/Lingo</a>.</p>

<p>Hamdy A. Taha <a href="http://www.bokus.com/b/9780131889231.html">Operations Research - An introduction</a>. Också det en introduktionsbok.</p>

<p>Både Winston och Taha är alltså introduktionsböcker. Fastän Taha har exempel i AMPL (och Excel) så tycker jag nog att Winstons bok är något bättre, vilket kan beror på att det var den jag läste först. Båda har många exempel och mycket förklaringar. </p>

<p>En tanke: en annan förklaring till att jag tycker mer om Winstons bok kan vara att jag tyckte det var roligare och mer givande att översätta modeller från Lindo/Lingo än att se färdig kod som i Tahas bok.</p>

<p>Robert Fourer, David M. Gay, Brian W. Kernighan: <a href="http://www.bokus.com/b/9780534388096.html">AMPL: A Modeling Language for Mathematical Programming</a>. AMPL-bibeln. Går minutiöst igenom de olika AMPL-konstruktionerna. Tyvärr inte så mycket om principer för modellering som jag hade hoppats. (Jullklappsbok 2007.)</p>

<p>H. P. Williams <a href="http://www.bokus.com/b/9780471997887.html">Model Building In Mathematical Programming</a>, en översikt över tekniker inom matematisk modellering. En klassiker. Tyvärr gav den mig inte så väldigt mycket men jag är glad att ha läst den.</p>

<p>Lundgren, Rönnqvist, Värbrand: <a href="http://www.bokus.com/b/9789144031040.html?pt=search_result">Optimeringslära</a>. En mycket trevlig svensk bok om matematisk programmering.</p>

<p>Tony Hürlimann <a href="http://www.lulu.com/content/637552">Mathematical Modelling of Puzzles and Games</a>. En trevlig, ny och rätt okänd bok om matematisk modellering. Vad jag vet går den inte att få tag i på annat sätt än via Lulu.com, antingen att ladda ner som PDF eller beställa en träd-bok (ingendera är speciellt dyr). Exemplen är kodade i systemet <a href="http://www.virtual-optima.com/en/index.html">LPL</a>. En rolig feature är att koden finns som URL-ar, t.ex. <a href="http://diuflx71.unifr.ch/lpl/GetModel?name=/puzzles/chess4">chess4</a>. Många av problemen är från Martin Chlonds Integer Programming in Recreational Mathematics (se ovan).</p>

<p></p>

<p>Så kommer några fria-att-ladda-ner-böcker:</p>

<p><a href="http://www.dashoptimization.com/home/downloads/book/booka4.pdf">Applications of Optimization with XPress-MP</a>. Introduktion i modellering. Går igenom många modeller med:<br />
 - pratversion<br />
 - matematisk (generell) modell<br />
 - implementation i XPress-MP </p>

<p><a href="http://ioe.engin.umich.edu/people/fac/books/murty/opti_model/">Optimization Models For Decision Making: Volume 1</a>, speciellt kapitel 7 "Modeling Integer Programs" var intressant.</p>

<p>Linus Schrage <a href="http://www.lindo.com/products/lingo/lingo_textbook.html">Optimization Modeling with LINGO</a> som till viss del är som "Applications of Optimization with XPress-MP" men är inte riktigt lika systematisk vad gäller modellerna.</p>

<p></p>

<p>Det är alltså detta jag har hållt på med sedan höstas och som orsakade bloggtystnaden.</p>

<p></p>

<h3>Några nya MiniZinc-modeller</h3>
Sedan förra bloggningen har jag lagt till några nya MiniZinc-modeller på <a href="http://www.hakank.org/minizinc/">My MiniZinc page</a> (samt även klassifierat modellerna bättre än tidigare). T.ex.:

<p>* <a href="http://www.hakank.org/minizinc/knapsack_investments.mzn">knapsack_investment.mzn</a>, ett exempel på optimering av investeringar från ovan nämnda bok Optimeringslära.</p>

<p>* <a href="http://www.hakank.org/minizinc/perfect_shuffle.mzn">perfect_shuffle.mzn</a>, en modell som visar utvecklingen av en perfekt blandning (en riffelblandning där man blandar exakt varannat kort från de två korthalvorna, en inte helt lätt bedrift att utföra). Se vidare <a href="http://mathworld.wolfram.com/Out-Shuffle.html">out-shuffle</a>. Med modellen kan man bl.a. se att det endast behövs 8 perfekta blaningar för att återställa ordningen i kortleken (vilket man redan visste och det var därför som man intresserade sig för matematiska modeller av perfekta blandningar:-).</p>

<p>* några varianter på set covering-problemet, samtliga exempel från boken "Optimeringslära":<br />
  - <a href="http://www.hakank.org/minizinc/set_covering4.mzn">set_covering4.mzn</a><br />
  - en variant av samma problem men där mängder används istället: <a href="http://www.hakank.org/minizinc/set_covering4b.mzn">set_covering4b.mzn</a> <br />
 - samt <a href="http://www.hakank.org/minizinc/set_covering5.mzn">set_covering5.mzn</a> som är en form av schemaläggning med lite olika typer av begränsningar.</p>

<p>* två nya global constraints: <a href="http://www.hakank.org/minizinc/nvalue.mzn">nvalue.mzn</a> och den mer generella <a href="http://www.hakank.org/minizinc/nvalues.mzn">nvalues</a></p>

<p>* <a href="http://www.hakank.org/minizinc/partial_latin_square.mzn">partial_latin_square</a>, som är en variant av latin square.</p>

<p>* en ny variant av set partition, <a href="http://www.hakank.org/minizinc/set_partition.mzn">set_partition.mzn</a><br />
</p>]]>


</content>
</entry>
<entry>
<title>MiniZinc-sida samt fler MiniZinc-exempel</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001211.html" />

<modified>2008-04-14T17:59:21Z</modified>
<issued>2008-04-14T17:58:36Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1211</id>

<created>2008-04-14T17:58:36Z</created>
<summary type="text/plain">För en vecka sedan skrevs Constraint Programming: Minizinc, Gecode/flatzinc och ECLiPSe/minizinc, där bland annat några MiniZinc-exempel förevisades. Sedan dess har jag renskrivit några andra av mina MiniZinc-modeller, dvs översatt kommentarer till engelska, tagit bort fåniga utrop samt givit någon form...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Constraint Programming</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>För en vecka sedan skrevs <a href="http://www.hakank.org/webblogg/archives/001209.html">Constraint Programming: Minizinc, Gecode/flatzinc och ECLiPSe/minizinc</a>, där bland annat några MiniZinc-exempel förevisades. </p>

<p>Sedan dess har jag renskrivit några andra av mina MiniZinc-modeller, dvs översatt kommentarer till engelska, tagit bort fåniga utrop samt givit någon form av problemreferens. Dessa finns nu på en egen MiniZinc-sida: <a href="http://www.hakank.org/minizinc/">My MiniZinc page</a> tillsammans med andra relevanta länkar. Det finns för tillfället drygt 100 modeller (program) inom olika områden, där några listas nedan (det finns alltså fler på sidan). </p>

<p>Rubrikerna är (som alla indelningar) arbiträra och ofullständiga (men trots det bra att ha). Jag har inte - förutom i något enstaka fall - tagit  med problem/modeller som finns på <a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc/minizinc_examples">MiniZinc-exempelsidan</a> (vilken se).</p>

<h3>små och stora pyssel </h3>
     <a href="http://www.hakank.org/minizinc/drinking_game.mzn">Drinking game</a><br>
     <a href="http://www.hakank.org/minizinc/ett_ett_ett_ett_ett__fem.mzn">ETT + ETT+ ETT+ ETT+ ETT = FEM</a><br>
     <a href="http://www.hakank.org/minizinc/crossword.mzn">enkelt korsord</a> (standardexempel inom constraint programming)<br>
     <a href="http://www.hakank.org/minizinc/devils_word.mzn">Devil's  word</a> (en MiniZinciifiering av programmet <a href="http://www.hakank.org/data_snooping/666.cgi">Devil's Word</A>)<br>
     <a href="http://www.hakank.org/minizinc/defending_castle.mzn">Defending a castle</a><br>
     <a href="http://www.hakank.org/minizinc/cur_num.mzn">ett underligt tal</a><br>
     <a href="http://www.hakank.org/minizinc/col_sum_puzzle.mzn">"Column Sum Puzzle"</a><br>
     <a href="http://www.hakank.org/minizinc/3_jugs.mzn">3 jugs problem</a><br>
     <a href="http://www.hakank.org/minizinc/send_most_money.mzn">SEND MOST MONEY</a><br>

<h3>exempel från Operations Research / integer programming-litteraturen</h3>
    <a href="http://www.hakank.org/minizinc/crew.mzn">crew allocation</a><br>
    <a href="http://www.hakank.org/minizinc/giapetto.mzn">Giapetti</a> (exempel från artikeln <a href="http://www-128.ibm.com/developerworks/library/l-glpk1/index.html?ca=drs-">The GNU Linear Programming Kit</a>)<br>
    <a href="http://www.hakank.org/minizinc/cutting_stock_winston.mzn">cutting stock</a><br>
    <a href="http://www.hakank.org/minizinc/critical_path1.mzn">critical path</a><br>
    <a href="http://www.hakank.org/minizinc/max_flow_taha.mzn">maximum flow</a><br> 
    <a href="http://www.hakank.org/minizinc/organize_day.mzn">organize a day</a><br>
    <a href="http://www.hakank.org/minizinc/pert.mzn">PERT</a><br>
    <a href="http://www.hakank.org/minizinc/bin_packing.mzn">bin packing</a><br>
    <a href="http://www.hakank.org/minizinc/xkcd.mzn">xkcd's knapsack-problem</a> (se <a href="http://xkcd.com/287/">http://xkcd.com/287/</a>)<br>
   <a href="http://www.hakank.org/minizinc/diet1.mzn">diet</a><br>
    <a href="http://www.hakank.org/minizinc/subset_sum.mzn">subset sum</a><br>
    
<h3>icke-linjär programmering</h3>
    <a href="http://www.hakank.org/minizinc/cyclohexane.mzn">Cyclohexane</a><br>
    <a href="http://www.hakank.org/minizinc/dynamical_optimization1.mzn">dynamisk optimering</a><br> 
    <a href="http://www.hakank.org/minizinc/circle_intersection.mzn">circle intersection</a><br>

<h3>andra exempel på modellering i MiniZinc</h3>
     <a href="http://www.hakank.org/minizinc/hamming_distance.mzn">Hammingavstånd</a><br>
     <a href="http://www.hakank.org/minizinc/latin_square.mzn">Latin Squares</a><br>
     <a href="http://www.hakank.org/minizinc/map.mzn">Färglägga en karta</a><br>
     <a href="http://www.hakank.org/minizinc/fib_test2.mzn">Fibonacci numbers</a> (använder array eftersom MiniZinc inte stödjer rekursioner)<br> 
      global constraint <a href="http://www.hakank.org/minizinc/cycle_test2.mzn">cycle</a><br>
     <a href="http://www.hakank.org/minizinc/coins3.mzn">minsta antal mynt för att betala exakt 1..99 cent</a><br>
     <a href="http://www.hakank.org/minizinc/power_set.mzn">power set</a><br>
     <a href="http://www.hakank.org/minizinc/partitions.mzn">partitions</a><br>
     <a href="http://www.hakank.org/minizinc/prime.mzn">enkel talteori</a>, och <a href="http://www.hakank.org/minizinc/sieve.mzn">sieve</a><br>
    <a href="http://www.hakank.org/minizinc/rot13.mzn">rot13</a><br>
    <a href="http://www.hakank.org/minizinc/debruijn_binary.mzn">de Bruijn-sekvenser</a><br>

<p><br />
Som grädde på moset finns även en modell som uppstod i samband med läsandet av Ravens <a href="http://www.raven.nu/blog/2008/02/29/internationellt-pa-kontoret/">Internationell på kontoret</a>. Nämligen (den naturligtvis Vennska) funderingen: givet fördelning av språken, hur är då fördelningen per person. Det finns en massa lösningar. Problemet undersöks i <a href="http://www.hakank.org/minizinc/raven_puzzle.mzn">Raven puzzle</a>.</p>]]>


</content>
</entry>
<entry>
<title>Mailen strular förhoppningsvis inte längre</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001210.html" />

<modified>2008-04-13T18:30:18Z</modified>
<issued>2008-04-11T21:36:31Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1210</id>

<created>2008-04-11T21:36:31Z</created>
<summary type="text/plain">Till dem det berör: Mail till mitt vanliga mailkonto ( hakank@bonetmail.com ) funkar inte för tillfället. Möjligen beror detta på underhållsarbete hos mailprovajdern. Lika möjligen kan detta mailavbrott vara över helgen. Jag vet inte eftersom det inte kommit någon information...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Diverse vetenskap</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Till dem det berör: </p>

<p><s>Mail till mitt vanliga mailkonto ( hakank@bonetmail.com ) funkar inte för tillfället. Möjligen beror detta på underhållsarbete hos mailprovajdern. Lika möjligen kan detta mailavbrott vara över helgen. Jag vet inte eftersom det inte kommit någon information och sajten deras är stängd för underhåll.</p>

<p>Vill ni nå mig så använd hakank@gmail.com i stället.</s></p>

<p><s>Lördag klockan 17:37 började mailen funka igen.</s> </p>

<p><font color="red">Uppdatering Lördag 19:15</font> Nähä. Det slutade funka igen. Så ovanstående gäller fortfarande. (Ledsen alla ni med RSS-bevakare för denna fortlöpande uppdatering.)</p>

<p><font color="red">Uppdatering Söndag 19:28</font> Nu beslutar jag att mailen verkar vara OK. </p>

<p><br />
(Eftersom jag nu tydligen har börjat blogga så smått igen - två bloggningar i samma månad ! - kanske det berättigar till att inbjuda till en Malmö-bloggareträff igen? Eller krävs det mer bloggaktivitet för sådant? Någon gång i slutet av april/början av maj? På King Long blir det i så fall. En söndag eller torsdag?)<br />
</p>]]>


</content>
</entry>
<entry>
<title>Constraint Programming: Minizinc, Gecode/flatzinc och ECLiPSe/minizinc</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001209.html" />

<modified>2008-04-06T10:44:50Z</modified>
<issued>2008-04-05T20:33:38Z</issued>

<id>tag:www.hakank.org,2008:/webblogg/1.1209</id>

<created>2008-04-05T20:33:38Z</created>
<summary type="text/plain">Minizinc är ett relativt nytt constraint programming-system (startade 2005). Det tillhör G12-projektet som är menat att bli ett öppet (som i open source) state-of-the-art-system. Samtidigt som det mer kompletta systemet Zink håller på att utvecklas, utvecklas Minizinc en mindre variant...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Constraint Programming</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p><a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc">Minizinc</a> är ett relativt nytt <a href="http://en.wikipedia.org/wiki/Constraint_programming">constraint programming</a>-system (startade 2005). Det tillhör <a href="http://nicta.com.au/research/projects/constraint_programming_platform/">G12-projektet</a> som är menat att bli ett öppet (som i open source) state-of-the-art-system. </p>

<p>Samtidigt som det mer kompletta systemet Zink håller på att utvecklas, utvecklas Minizinc en mindre variant som även föreslås att användas som ett gemensamt språk för benchmarks av olika constraint solvers (dvs de system som faktiskt löser problemen, se nedan).</p>

<p>Zinc (storebrodern) finns inte tillgängligt för närvarande. Det finns däremot Minizinc, dels i en officiell version 0.7.1, dels en utvecklingsversion (jag använder utvecklingsversionen). Se vidare <a href="http://www.g12.csse.unimelb.edu.au/minizinc/download.html">Download</a> för nedladdningar.</p>

<p>Specifikationen för både Zinc och MiniZinc är <a href="http://www.g12.csse.unimelb.edu.au/minizinc/zinc-spec.pdf">Zinc spec</a> (PDF). Detta dokument och andra nyttigheter finns via <a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc">MiniZinc and FlatZinc</a>. Uppdaterade versioner av dokumenten finns i utvecklingsversionen.</p>

<p>Många Minizinc-exempel finns <a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc/minizinc_examples">här</a>. Fler exempel finns i distributionens kataloger <code>examples</code> respektive <code>benchmark</code> samt till viss del i katalogen <code>test/minizinc</code>.</p>

<p>Jag tycker att Minizinc är ett mycket trevligt och lättarbetat system. Språket har syntaktiskt socker på en bra nivå och är numera min favorit bland constraint programming-systemen.</p>

<p>Det kommer att bli mycket intressant när Zinc släpps eftersom det har en massa skoj finesser som jag saknar i Minizinc, men jag lämnar det för nu. Här nedan kommer jag alltså i stort sett endast att prata om Minizinc. </p>

<p><br />
<h3>Lite om Minizinc</h3><br />
En av de stora fördelarna med att använda constraint programming-språk liknande Minizinc är att de är <a href="http://en.wikipedia.org/wiki/Declarative_programming">deklarativa</a>, dvs man beskriver <b>vad</b> som ska göras och inte <b>hur</b> saker ska göras (så är i alla fall idealet). </p>

<p>Prolog är ett av de mest kända exemplen på denna typ av programspråk. [Några mindre kända sådana språk är inom stable models/<a href="http://en.wikipedia.org/wiki/Answer_set_programming">answer set programming</a>-paradigmet såsom  <a href="http://www.tcs.hut.fi/Software/smodels/">smodels/lparse</a>, som nog kan uppfattas som än mer magiska än Prolog.]</p>

<p>Minizinc är dock inget "komplett programspråk" såsom Prolog, t.ex. saknas stöd för rekursion (detta av design för att göra det enkelt att arbeta med för olika solvers), det finns ingen filläsning förutom inkluderande av andra Minizinc-modeller eller data, hantering av strängar är synnerligen begränsat etc.</p>

<p>Trots dessa begränsningar är kan väldigt många problem modelleras i Minizinc. Se den officiella <a href="http://nicta.com.au/research/projects/constraint_programming_platform/minizinc/minizinc_examples">exempelsamlingen</A> som innehåller olika typer av standardproblem från constraint programming, operations research och matematisk programmering. Nedan finns något av det som jag själv knåpat ihop.</p>

<p><br />
<b>Några speciellt trevliga saker i Minizinc</b></p>

<p>- definition av predicate<br><br />
Man kan definiera predikat som sedan kan återanvändas via include-direktivet. Det finns en samling sådana i <code>lib/zinc/globals.mzn</code> som är väl värt att studera. </p>

<p>(I Zinc kommer det att finnas möjlighet att definiera funktioner som returnerar värden, men i Minizinc använder man samma teknik som i Prolog för att "returnera" värden, dvs att ange returvärdet i parameterlistan.)</p>

<p><br />
- "bidirectional" predikat<br><br />
Liksom Prolog har Minizinc den trevliga egenskapen att predikat kan vara "bidirect", dvs att flödet mellan parametrarna kan verka åt båda hållen, kan vara ut- eller in-data. Ett enkelt exempel på detta är konvertering mellan tal och en vektor (givet en bas). Jag har definierat toNum på följande sätt.<br />
<code><br />
predicate toNum(array[int] of var int: vec, var int: n,  float: base) =<br />
          let { <br />
             int: len = length(vec) <br />
          }<br />
          in<br />
          % summera ihop elementen i vec för den givna basen<br />
          n = sum(i in 1..len) (<br />
            ceil(pow(base, int2float(len-i))) * vec[i] % se nedan för varför denna används<br />
          )<br />
          % samtliga element i vec måste vara 0<br />
          /\ forall(i in 1..len) (vec[i] >= 0)<br />
;<br />
</code></p>

<p>Poängen är att man kan använda detta predikat för att konvertera <b>från</b> ett decimaltal (<code>n</code>) <b>till</b> en vektor (<code>vec</code>) av heltal i den givna basen <code>base</code>, <b>eller</b> konvertera från vektorn av heltal <b>till</b> ett tal (givet en bas). toNum används t.ex. i <a href="/minizinc/debruijn_binary.mzn">debruijn_binary.mzn</a>, vilken se. (I teorin skulle man också kunna räkna ut vilken bas som används givet <code>vec</code>  och <code>n</code>, men det går inte i Minizinc eftersom pow() inte kan användas på en var-deklarerad variablen utan måste definieras som en fix parameter.)</p>

<p>Här blir n = 7<br />
<code><br />
 % ...<br />
 constraint<br />
 % ....<br />
 toNum([1,1,1], n, 2.0) <br />
;<br />
</code></p>

<p>och här blir vec = [1,1,1]:<br />
<code><br />
 % ...<br />
 constraint<br />
 % ... <br />
 toNum(vec, 7, 2.0)<br />
;<br />
</code></p>

<p><br />
Det är mycket denna bidirektionella egenskap gör att programmering i Minizinc (och liknande deklarativa språk) känns riktigt <b>magiskt</b>. Och det är synnerligen skoj.</p>

<p>Tyvärr är Minizinc hårt typat så man måste själv konvertera flyttal till heltal, vilket frustrerar mig. [I Zinc/Minizinc-specen står att sådan konvertering kommer att göras automatiskt i storebroderna Zinc, men inte i Minizinc. Jag hoppas att specifikatörerna besinnar sig.] Och eftersom pow()-funktionen för heltal inte funkar i den aktuella versionen  är man tvungen att använda float-varianten vilket innebär att man måste använda göra ceil(...)-hacket. Det är ju en hel del sådant i betaversioner som det tar tid att komma på och runt.</p>

<p>Ett något mer avancerad exempel på bidirection är <a href="/minizinc/mortgage.mzn">mortgage.mzn</a> (beräkning av lån), som är ett (annat) standardexempel i constraint logic programming (där ofta just Prolog användas som grund eller inspiration för implementationerna). På samma sätt som i toNum kan samma kodbas - med olika initialvärden - användas för att räkna ut de andra parametrarna. Se kommentarerna i programmet för vidare info. Not: för närvarande är det endast ECLiPSe-solvern som klarar detta problem.</p>

<p>Exempel på mer användande av toNum finns i programmen <a href="/minizinc/debruijn_binary.mzn">debruijn_binary</a> och <a href="/minizinc/gray_code.mzn">gray_code.mzn</a> som beskrivs mer nedan.</p>

<p><br />
* global constraints<br><br />
I filen lib/zinc/globals.mzn finns ett flertal "global constraints" implementerade (och det antyds att det kommer att fyllas på med fler). Global constraints kan ses som standardrutiner ("standardmönster") att lösa vissa typer av (del)problem, t.ex. <code>all_different(x)</code> som kräver att samtliga element i en vektor ska vara olika, <code>global_cardinality_constraint</code> som räknar hur antal förekomster av olika element det finns i en vektor (och med bidirect-principen kan man ställa krav på antalet förekomster), etc. </p>

<p>Det finns en stor samling definitioner/beskrivningar av sådana global constraints (men tyvärr inga implementationer) i <a href="http://www.emn.fr/x-info/sdemasse/gccat/index.html">Global Constraint Catalog</a>. </p>

<p>Min personliga fascination för sådana globala constraints är på modelleringsnivå eftersom de kan ses som byggstenar (tankehjälp) för modellering. Som övning har några av dessa implementerats såsom <a href="/minizinc/circuit_test.mzn">circuit.mzn</a> (som i min implementation bygger på några observationer kring s.k. orbits i permutationer), cycle etc.</p>

<p>En stora vinst med sådana global constraints är att underliggande solvers kan göra specialoptimimeringar, vilket naturligtvis snabbar upp systemen. Studiet av sådana global constraints är en viktig del i forskningen kring constraint programming.</p>

<p><br />
* stöd för flera olika solvers<br><br />
Språket Minizinc är egentligen bara en del av systemet och det löser inga problem. I stället konverteras till ett annat språk (Flatzinc) som olika solvers kan arbeta med för att faktiskt lösa problemet. (Man skulle kunna översätta "solver" med "problemlösare", men eftersom det ryser varje gång jag använder den svenska versionen av Excels Solver så gör jag inte det :-). I distributionen finns det en solver med: flatzinc. </p>

<p>Redan nu finns det redan tre solvers: flatzinc, Gecode/flatzinc samt ECLiPSe-modulen minizinc. De gås igenom nedan.</p>

<p></p>

<h3>Exempel</h3>
Som första lite längre kommenterade exempel visas här SEND + MORE = MONEY-problemet (saknas av någon anledning i Minizinc-exempelsamlingen). Problemet är helt enkelt: Byt ut bokstäverna mot unika siffror (0..9) i additionen <code>SEND + MORE = MONEY</code>. Det är ett paradigmatiskt exempel (dvs har "Hello, world"-status) i constraint programming-världen och finns i alla läroböcker.

<p>Så här ser min rättframma implementation ut:<br />
<code><br />
% globals.mzn innehåller den globala constrainten all_different<br />
include "globals.mzn";</p>

<p>% definierar varje bokstav som en variabel<br />
% de är samtliga heltal mellan 0 och 9<br />
var 0..9: S;<br />
var 0..9: E;<br />
var 0..9: N;<br />
var 0..9: D;<br />
var 0..9: M;<br />
var 0..9: O;<br />
var 0..9: R;<br />
var 0..9: Y;</p>

<p>% vektorrepresentationen av de 8 variablerna för att kunna<br />
% använda all_different<br />
array[1..8] of var int: fd =<br />
  [S,E,N,D,M,O,R,Y];</p>

<p><br />
%<br />
% De olika begränsningarna som ska göras, både för själva problemet och<br />
% eventuella hjälpstrukturer<br />
%<br />
constraint</p>

<p>  % all_different kräver att alla siffror ska vara olika<br />
  all_different(fd) /\<br />
  <br />
  % definiera själva problemet, dvs hur relationen mellan bokstäverna<br />
  % ser ut<br />
            1000*S + 100*E + 10*N + D  +  <br />
            1000*M + 100*O + 10*R + E  = <br />
  10000*M + 1000*O + 100*N + 10*E + Y <br />
  /\<br />
  % varken S eller M får vara 0<br />
  S > 0 /\<br />
  M > 0<br />
;  </p>

<p>%<br />
% solve satisfy ger en lösning, dvs inget att minimera eller maximera<br />
% <br />
solve satisfy;</p>

<p>%<br />
% utskriften<br />
%<br />
output [<br />
   %   show(fd), "\n",<br />
   "S:", show(S), " E:", show(E), " N:", show(N), " D:", show(D), <br />
   " M:", show(M), " O:", show(O), " R:", show(R), " Y:", show(Y),<br />
   "\n\n",</p>

<p>   "    ", show(S), show(E), show(N), show(D),"\n",<br />
   " +  ", show(M), show(O), show(R), show(E),"\n",<br />
   " = ",  show(M), show(O), show(N), show(E), show(Y), "\n"</p>

<p>];</p>

<p></code></p>

<p>Sedan kör man programmet lite olika beroende på vilken solver man använder. Jag brukar testa med samtliga tre för att se vilken som är snabbast etc.</p>

<p><b>Minizinc</b> (anropar flatzinc automatiskt)<br />
<code><br />
  minizinc send_more_money.mzn<br />
</code></p>

<p>eller programmet <b>flatzinc</b> direkt via konvertering till .fzn-format.</p>

<p><code><br />
  mzn2fzn send_more_money.mzn<br />
  flatzinc send_more_money.fzn<br />
</code></p>

<p>Gecode/flatzinc:<br />
<code><br />
mzn2fzn send_more_money.mzn<br />
fz send_more_money.fzn<br />
</code></p>

<p>ECLiPSe:<br />
<code><br />
eclipse -e "minizinc:mzn_run('send_more_money.mzn',zn_options{solver:fzn_ic})"<br />
</code></p>

<p>Resultatet blir samma för alla<br />
<code><br />
S:9 E:5 N:6 D:7 M:1 O:0 R:8 Y:2</p>

<p>    9567<br />
 +  1085<br />
 = 10652</p>

<p></code></p>

<p></p>

<h3>Fler exempel</h3>
Här är några andra exempel som inte finns på MiniZinc-sajten eller i distributionen. Flera av dem är sådana jag brukar ha som standardproblem för att  för att testa olika constraint-system vad gäller språk, performance och rent allmänt hur det är att arbeta med. T.ex. så kollade jag i höstas in <a href="http://www.ampl.com/">AMPL</a> (ett mycket trevligt system för "matematisk programming") men där var man i vissa fall tvungen att trixa ordentligt - i och för sig vedertagna och väl dokumenterade tricks - för att göra sådant såsom "all_different". Minizinc (och de flesta andra constraint system) har all_different implementerat som standard.

<p><br />
I <a href="http://www.hakank.org/webblogg/archives/001113.html">Choco: Constraint Programming i Java</a> gavs några exempel på problem som löstes i constraint programming-systemet <a href="http://choco.sourceforge.net/">Choco</a>. Dessa har nu skrivits om i Minizinc. Som jämförelse länkas även till Choco-varianten.</p>

<p>* Planering av möbelflyttande, använder "global constraint" cumulative <br><br />
<a href="/minizinc/furniture_moving.mzn">furniture_moving.mzn</a> (<a href="http://www.hakank.org/constraints/FurnitureMoving.java">FurnitureMoving.java</a>)</p>

<p>* Ett enkelt knapsack-problem (minimering)<br><br />
<a href="/minizinc/knapsack.mzn">knapsack.mzn</a> (<a href="http://www.hakank.org/constraints/Knapsack.java">Knapsack.java</a>)</p>

<p>* Least diff (minsta differensproblemet som beskrivs i ovanstående blogganteckning)<br><br />
<a href="/minizinc/least_diff.mzn">least_diff.mzn</a> (<a href="http://www.hakank.org/constraints/LeastDiff2.java">LeastDiff2.java</a>)</p>

<p>* Sesemans klosterproblem<br><br />
<a href="/minizinc/seseman.mzn">seseman.mzn</a> (<a href="http://www.hakank.org/constraints/Seseman.java">Seseman.java</a>). Se <a href="http://www.hakank.org/webblogg/archives/001084.html">Sesemans matematiska klosterproblem samt lite Constraint Logic Programming</a> för en förklaring av detta problem.</p>

<p><br />
* <a href="/minizinc/set_covering_deployment.mzn">set_covering_deployment.mzn</a><br><br />
Implementation av exemplet på <a href="http://mathworld.wolfram.com/SetCoveringDeployment.html">Set Covering Deployment</a> för att optimera antal arméer i gamla romarriket. Problemet beskrivs i detalj i R.R. Rubalcaba <a href="http://webpages.uah.edu/~rubalcr/RUBALCABA.pdf">Fractional Domination, Fractional Packings, and Fractional Isomorphisms of Graphs</a> (PDF).</p>

<p><br />
<h3> de Bruijn-sekvener och "arbiträra de Bruijn-sekvenser"</h3><br />
Jag har länge varit fascinerad att de Bruijn-sekvenserna och publicerat två (eller tre beroende på hur man räknar) webbaserade program: </p>

<p>  - <a href="http://www.hakank.org/comb/debruijn.cgi">de Bruijn sequence</a>, samma som <a href="http://www.hakank.org/comb/deBruijnApplet.html">Java Applet</a><br><br />
  - <a href="http://www.hakank.org/comb/debruijn_arb.cgi">de Bruijn arbitrary sequences</a>, där man använder "de Bruijn-egenskapen" men tillåter sekvenslängden bestäms av användaren.<br />
  <br />
Se respektive <a href="http://www.hakank.org/webblogg/archives/000809.html">de Bruijn-sekvenser (portkodsproblemet)</a> och  <a href="http://www.hakank.org/webblogg/archives/001114.html">de Bruijn-sekvenser av godtycklig längd</a> för förklaringar av programmen.</p>

<p>Naturligtvis var detta en sak som skulle kodas i Minizinc. Första versionen av programmet byggde liksom webbversionen av "de Bruijn arbitrary sequences" på en speciell typ av graf som traverserades på ett visst sätt. Denna implementation var dock lite trixig att genereralisera till andra baser än n=2. Därefter skrevs en variant där man programmerar de Bruijn-egenskapen direkt i stället för att gå via en graf, vilket gjorde det hela mycket mer generellt och (oftast) snabbare. </p>

<p>Denna senare variant finns att beskåda i <a href="/minizinc/debruijn_binary.mzn">debruijn_binary.mzn</a>. (Anledningen till att programmet heter "_binary" är bl.a. för att jag fick idén till implementationen några minuter efter jag kodat klart <a href="/minizinc/gray_code.mzn">Gray-koder</a>).</p>

<p><br />
<b>Exempelkörning</b><br />
Problemet som jag kallar för <b>2/4/16</b> är base = 2, n = 4 (antal bitar att använda), m = 16 (längden på sekvensen). Programmet spottar ur sig lite olika typer av information:</p>

<p>- bin_code / binary_code: själva de Bruijn-sekvensen<br />
- x är decimalrepresentationen av vektorerna som utgör sekvensen<br />
- gcc (förkorting av global cardinality constraint) kontrollerar hur många olika siffror (0..base-1) som används. Det finns en begränsning att det måste vara exakt lika många förekomster av de olika siffrorna om det är matematiskt möjligt. Och det är just denna begränsning som gör problemet både intressant och tungt. I exemplet ser vi alltså att det finns 8 stycken 0:or och 8 stycken 1:or.<br />
- sedan kommer listningen av "bit-representation" av vektorerna</p>

<p><code><br />
n: 4 m: 16 base: 2<br />
bin_code: [0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1]<br />
gcc: [8, 8]<br />
binary code: 0000100110101111<br />
x (decimal representation):<br />
[0, 1, 2, 4, 9, 3, 6, 13, 10, 5, 11, 7, 15, 14, 12, 8]<br />
0 0 0 0<br />
0 0 0 1<br />
0 0 1 0<br />
0 1 0 0<br />
1 0 0 1<br />
0 0 1 1<br />
0 1 1 0<br />
1 1 0 1<br />
1 0 1 0<br />
0 1 0 1<br />
1 0 1 1<br />
0 1 1 1<br />
1 1 1 1<br />
1 1 1 0<br />
1 1 0 0<br />
1 0 0 0<br />
</code></p>

<p><br />
Ett problem som är betydligt tyngre att lösa är <b>4/3/52</b>, dvs bas=4 (dvs siffrorna 0, 1, 2 och 3 används), 3 "bitar" i varje tals vektor, samt en sekvenslängd på 52. Detta är så tungt så man inte kan använde <code>solve satisfy</code> utan måste använda sökheuristiker för att inte vänta förgäves på en lösning.</p>

<p>Genom experiment (föregånget av luskande i källkod och <a href="http://eclipse.crosscoreop.com/doc/bips/lib/fd_search/search-6.html">dokumentation</a> hittades följande <br />
<code><br />
solve :: int_search(x, "first_fail", "indomain_split", "credit(5,bbs(1))") satisfy<br />
</code></p>

<p>(Zinc-specen förklarar ingående vara parametrarna innebär, men det är helt enkelt lite olika metoder att traversera problemträdet.)</p>

<p>Den praktiska innebörden är att Eclipse-solvern hittar 1 lösning mycket snabbt, 65 lösningar på 5 sekunder (jag vet inte hur många olika lösningar som det total finns men det är väldigt många i alla fall). Med credit(4,bbs(2)) blir det 108 lösningar på 8 sekunder, credit(4,bbs(4)) hittar 1104 lösningar på 1:07 minuter etc.</p>

<p>En av dessa lösningar är följande<br />
<code><br />
n: 3 m: 52 base: 4<br />
bin_code: [0,0,2,0,0,3,0,1,0,1,1,0,2,1,0,3,1,1,1,2,0,1,2,1,1,3,0,2,2,0,2,3,0,3,2,0,3,3,1,2,2,1,2,3,1,3,3,2,2,3,3,3]<br />
gcc: [13,13,13,13]<br />
binary code: 0020030101102103111201211302202303203312212313322333<br />
x (decimal representation):<br />
[2,8,32,3,12,49,4,17,5,20,18,9,36,19,13,53,21,22,24,33,6,25,37,23,28,50,10,40,34,11,44,51,14,56,35,15,61,54,26,41,38,27,45,55,31,62,58,43,47,63,60,48]Total time 0.320s cpu (0.040 setup + 0.280 search)<br />
</code></p>

<p>Tyvärr har varken Flatzinc eller fz givit någon lösning alls på detta problem (jag har låtit båda programmen stå minst en timme varderna men sedan tröttnade jag). Om man däremot tar bort kravet att det ska exakt samma antal förekomster av siffror i sekvensen löser även fz problemet snabbt (men minizinc gör det inte).</p>

<p><br />
<h3>Olika solvers</h3><br />
För närvarande finns tre olika solvers, med olika för- och nackdelar.</p>

<p><br />
* flatzinc<br />
Det är denna solver som följer med i Minizinc-distributionen.</p>

<p>  Fördelar:<br />
   - det största fördelen är att den finns med i distributionen och kan alltså användas direkt.</p>

<p>  Brister: <br />
  - ger endast <b>en</b> lösning oavsett hur många lösningar som problemet har. Detta är för mig en mycket stor brist. <br />
  - klen vad gäller beräkning av stora tal. T.ex. klarar den inte av <a href="/minizinc/grocery.mzn">grocery.mzn</a> eftersom det är för stora tal inblandade. <br />
  - verkar inte vara känslig för de olika heuristikerna</p>

<p>* Gecode/flatzinc (fz)<br />
<a href="http://www.gecode.org/flatzinc.html">Gecode/Flatzinc</a>. </p>

<p>Kräver att <a href="http://www.gecode.org/">Gecode</a> finns installerad. Gecode är ett snabbt open source constraint programming-system (skrivet i C++) och har flera intressanta exempel. Det finns även en Java-implementation ovanpå Gecode <a href="http://www.gecode.org/gecodej/index.html">Gecode/J</a>. Båda dessa är väl värda att bekanta sig med helt oavsett Minizinc.</p>

<p>  Fördelar:<br />
  - ofta mycket snabb, ibland snabbare än Eclipse-solvern (även fast man har heuristiker som hjälper Eclipse-solvern)<br />
  - ger flera lösningar (alla!) om det finns  (såvida man inte "heuristicerar" bort dem)<br />
  - summerande statistik som indikerar hur svårt problemet är att lösa</p>

<p>  Nackdelar:<br />
  - min uppfattning är att fz inte är lika känslig för sök-heuristikerna som Eclipse-solvern vilket gör att den kan vara långsammare än Eclipse-solvern för vissa problem<br />
  - klarar inte av vissa typer av flyttalsberäkningar, t.ex. mortgage exemplet ovan.<br />
  - kan reagera konstigt på sök-heuristikerna<br />
  - man måste installera gecode</p>

<p><br />
* ECLiPSe<br />
Kräver <a href="http://eclipse.crosscoreop.com/">ECLiPSe Constraint Programming System</a>. Det är en variant av Prolog (min favoritvariant och som användes i <a href="http://www.hakank.org/webblogg/archives/001084.html">Sesemans matematiska klosterproblem samt lite Constraint Logic Programming</a>).</p>

<p>För tillfället krävs en utvecklingsversion eftersom Minizinc-stödet ännu inte är officiellt släppt. Eftersom sajten crosscoreop.com kan bete sig konstigt vid hämtande av stora filer är att rekommendera att man hämta filerna från en av speglarna t.ex. <a href="http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/ECLiPSe-CLP/">http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/ECLiPSe-CLP/</a>.</p>

<p>Dokumentation hur man använder Minizinc-modulen finns i <a href="http://eclipse.crosscoreop.com/doc/bips/lib_public/minizinc/index.html">library(minizinc)</a>.</p>

<p>Ett tips är även att studera ECLiPSe-predikatet <a href="http://eclipse.crosscoreop.com/doc/bips/lib/fd_search/search-6.html">search/6</a> som är inspirationskällan för sök-heuristiken i Minizinc.</p>

<p><br />
  Fördelar: <br />
  - liksom fz mycket snabbt och ger alla lösningar<br />
  - klarar av flyttalsberäkningar (såsom mortgage)<br />
  <br />
  Nackdelar:<br />
  - vissa saker är inte implementerade, såsom vissa set_operationer.<br />
  - man måste installera ECLiPSe-systemet.</p>

<p></p>

<h3>Buggar eller brister</h3>
Här är några brister antingen i de aktuella implementationerna eller saker som stör mig i designen av språket.

<p>* Utskrifen är inte fullständigt i den existerande beta-versionen. Det är trixigt att skriva ut mer komplicerade strukturer (se exemplen). Det finns för närvarande inget sätt att villkora så att man bara ska skriva ut vissa element i en var-deklarerad array (såsom endast de element som är större än 0). Till viss del är det ett desginbeslut, möjligen kommer fix() att lösa några av dessa problem.</p>

<p>* Typningen. Personligen tycker jag inte om den strikta typningen av float och int (det är enligt design) som gör att man explicit måste sköta sådant. T.ex. görs '/' (division) endast på flyttal och det gör att vissa problem blir mycket svårare att lösa (såsom några av Integer Programming-pysslen). Det är inte alltid det går att använda div-operatorn (som f.ö. är buggig i fz) eller att (på ett enkelt sätt) skriva om problemet så det inte använder division.</p>

<p>* Det saknas en solver som använder metoder från linjär programmering/heltalsprogramming (såsom simplex-metoden). Det antyds att det finns sådana men de är ännu ej släppta. I och för sig har ECLiPSe-systemet någon form av stöd för <a href="http://eclipse.crosscoreop.com/reports/eclipse/node19.html">eplex</a> i sin Zincinterface-katalog, men det har jag inte fått att fungera ännu. <font color="red">Uppdatering ett halvt dygn senare:</font>: Jodå, eplex funkar för vissa typer av problem såsom några av exempeln i examples-kataloge; queens_ip.mzn, min_cost.mzn,  product_lp och multidimknapsack_simple. Får alltså kolla in det mer...</p>

<p></p>

<p><b>Länkar</b><br />
Annat som kan vara intressant.</p>

<p>* <a href="http://www.chlond.demon.co.uk/academic/puzzles.html">Integer Programming Puzzles</a> (programmering av lösningarna av <a href="http://www.chlond.demon.co.uk/">Martin Chlond</a>). Detta är en härlig samling "heltalspyssel" (dvs där lösningarna är heltal, eller kan ses som heltal). Send More Money, Least Diff är några andra exempel på sådana problem.</p>

<p>När jag satt med <a href=http://www.ampl.com/">AMPL</a> i höstas konverterade jag i stort sett samtliga dessa problem från XPress till AMPL, och har nu kodat om dessa till Minizinc. Tyvärr är det inte alla Minizinc-implementationer som ger resultat inom rimlig tid. Ett projekt i vardande är att hyfsa till dem och sedan lägga ut dem på sajten. </p>

<p>Jag tänkte här egentligen länka till en del annat som jag hållt på med sedan oktober förra året, såsom Excel, Open Office Calc, Linear Programming, AMPL, GLPK, matematisk programming, Operations Research, andra constraint programming-system etc, men det blir i så fall i separata postningar.</p>

<p><br />
</p>]]>


</content>
</entry>
<entry>
<title>Blogglunch i Malmö-söndagen den 16:e december</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001208.html" />

<modified>2007-12-10T07:22:03Z</modified>
<issued>2007-12-10T07:16:57Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1208</id>

<created>2007-12-10T07:16:57Z</created>
<summary type="text/plain">Zyrenna-Åsa har ordnat en blogglunch söndagen den 16:e december, klockan 13.00 på restaurang Kin Long vid Triangeln, Rådmansgatan 1 (i Malmö alltså). Meddela gärna Åsa om du kommer. En synnerligen summarisk summering av förra gångens diskussioner finns i kommentaren till...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Bloggmiddagar</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p><a href="http://zyrenna.webblogg.se/1196712370_blogglunch_i_malmsnda.html">Zyrenna-Åsa</a> har ordnat en blogglunch söndagen den 16:e december, klockan 13.00 på restaurang Kin Long vid Triangeln, Rådmansgatan 1 (i Malmö alltså). Meddela gärna Åsa om du kommer.</p>

<p><br />
En synnerligen summarisk summering av förra gångens diskussioner finns i kommentaren till <a href="http://www.hakank.org/webblogg/archives/001205.html">Bloggträff i Malmö torsdagen 22 november 2007, 18:30 på Kin Long</a>.<br />
</p>]]>


</content>
</entry>
<entry>
<title>Markus Arvidson: Den fabricerande människan - Om bedrägeri som vardaglig interaktionsform</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001207.html" />

<modified>2007-11-07T06:46:37Z</modified>
<issued>2007-11-06T18:11:19Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1207</id>

<created>2007-11-06T18:11:19Z</created>
<summary type="text/plain">När detta skrivs (tisdag 6 november 2007, lite över 19) intervjuas sociologen Markus Arvidson i Vetenskapsradion - Forum om bedragare. Det relevanta avsnittet presenteras på följande sätt: Är du socialt intelligent? Har du förmåga att tolka det sociala spelet, har...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Diverse</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>När detta skrivs (tisdag 6 november 2007, lite över 19) intervjuas sociologen Markus Arvidson i <a href="http://www.sr.se/cgi-bin/p1/program/index.asp?programid=1302">Vetenskapsradion - Forum</a> om bedragare. Det relevanta avsnittet presenteras på följande sätt:<br />
<blockquote><br />
Är du socialt intelligent? Har du förmåga att tolka det sociala spelet, har du lätt för att smälta in i olika sociala miljöer och har du kanske rent av lite skådespelartalang? Grattis, då passar du utmärkt som bedragare! I alla fall enligt sociologen Markus Arvidson vid Karlstad universitet, som nyligen disputerade på en avhandling om just bedragare och bedrägerier som socialt fenomen.<br />
</blockquote></p>

<p>Arvidson har skrivit doktorsavhandlingen <a href="http://www.kau.se/forskning/forskdb/index.lasso?to_do=show_result&id=5845">Den fabricerande människan - Om bedrägeri som vardaglig interaktionsform</a> (<a href="http://www.diva-portal.org/diva/getDocument?urn_nbn_se_kau_diva-911-1__fulltext.pdf">PDF</a>).<br />
Verkar mycket intressant.</p>

<p><b>Se även</b><br />
* avhandlingspresentationen <a href="http://www.kau.se/forskning/nyheter/artikel.lasso?artikel_id=5224&show=forskning&search_word=">Den fabricerande människan</a> (Karlstads Universitet)<br />
* Dalarnas Tidningar: <a href="http://www.dalarnastidningar.se/nyheter/falun/article208809.ece">Han är expert på bedrägeri</a>.<br />
* polisen.se: <a href="http://www.polisen.se/inter/util/nodeid=21434&pageversion=1.jsp?articleid=10038465">Hur lätt blir du lurad?</a></p>

<p>* En viss förklaring till min fascination kring detta ämne förklaras bl.a. i kommentarerna i <a href="http://www.hakank.org/webblogg/archives/000183.html">Om vardagligt beteende och rutiner</a></p>]]>


</content>
</entry>
<entry>
<title>Bloggträff i Malmö torsdagen 22 november 2007, 18:30 på Kin Long</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001205.html" />

<modified>2007-11-11T20:43:09Z</modified>
<issued>2007-11-04T17:44:36Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1205</id>

<created>2007-11-04T17:44:36Z</created>
<summary type="text/plain">Så var det dags igen med en bloggträff i Malmö. Vi fortsätter med torsdagar, nämligen torsdagen 22 november, klockan 18:30 (2007 alltså). Som vanligt (när jag får bestämma) på restaurang Kin Long. Ett sammandrag från förra träffen finns i den...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Bloggmiddagar</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Så var det dags igen med en bloggträff i Malmö. </p>

<p>Vi fortsätter med torsdagar, nämligen <b>torsdagen 22 november, klockan 18:30</b> (<b>2007</b> alltså). Som vanligt (när jag får bestämma)  på restaurang <b><a href="http://gulasidorna.eniro.se/query?what=map&mop=l5&streetname=&streetnumber=&city=&zipcode=&mapstate=6%3B1323133%3B6166533%3B0%3B1322401%3B6167303%3B1323866%3B6165763%3B&mapcomp=21446359%3B%3BKin+Long+Restaurant%3BR%E5dmansg.+%3B1%3B%3B21146%3BMALM%D6%3B040%3B611+94+04%3B%3B%3B1323210.0%3B6166587.0%3B1%3B0&heading_exact=Restauranger&heading=&heading_group=&company_name=&dir_area=&geo_area=&district_code=&ns=&stq=0&symbols=">Kin Long</a></b>.</p>

<p>Ett sammandrag från förra träffen finns i den blogganteckning med den hyftat bra beskrivande  titeln <a href="http://www.hakank.org/webblogg/archives/001203.html">Sammanfattning Bloggträff Malmö 20071004</a>. Men se även kategorin <a href="http://www.hakank.org/webblogg/archives/cat_bloggmiddagar.html">Bloggmiddagar</a> (också det en ganska bra titel) för en mer samlad bild över tidigare träffar.</p>

<p>Just det: Meddela helst - antingen i en kommentar eller till <a href="mailto:hakank@bonetmail.com">hakank@bonetmail.com</a> - att> du kommer (om du har för avsikt att komma vill säga) så att personalen på restaurangen kan anpassa bord etc till sällskapets sanna storlek.</p>

<p><br />
[Ovanstående skrevs ursprungligen under läsningen av slutkapitlet i Ian Hackings intressanta bok <a href="http://www.bokus.com/b/9789172350540.html">Social konstruktion av vad?</a> där han med filosofisk stringens analyserar (diskussioner om) sociala konstruktioner. Underbart!  Möjligen kommer någon bloggträffdeltagare därför att göra en socialkonstruktivistisk analys av begreppet <i>blogg</i>.</p>

<p>"Ursprungligen" i ovanstående stycke refererar till att det först bestämdes en rumstid-koordinat men sedan skedde diskussioner  avsedda att eventuellt förändra koordinaten. Efter intensitvt fejsbokande samt inte fullt så intentivt sony-ericssonande beslöts att hålla fast vid den ursprungliga planen. Under tiden denna diskussion fördes hanns det att läsa ut ännu en bok, nämligen den puttriga och inspirerande <a href="http://www.bokus.se/b/9780465090792.html">Quirkology</a> av den brittiske psykologen Richard Wiseman (av <a href="http://www.bokus.com/b/9780099443247.html">Luck Factor</a>-berömmelse). Se även bokens sajt <a href="http://www.quirkology.com/">quirkology.com</a>.<br />
]</p>

<p><font color="red">Uppdatering</font><br />
Och restaurangen heter <b>Kin</b> Long, och inget annat (t.ex. det som ursprungligen skrevs i rubriken).<br />
</p>]]>


</content>
</entry>
<entry>
<title>Svar på Hakkes frågor angående monovokala ord</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001206.html" />

<modified>2007-10-28T09:24:43Z</modified>
<issued>2007-10-28T08:50:41Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1206</id>

<created>2007-10-28T08:50:41Z</created>
<summary type="text/plain">Den alltid nyfikne hakke skickade följande mail till Jonas Söderström och mig häromdagen. (Mailet är trivialt redigerat.) Det går ju inte att kommentera den här gamla godingen :( Ooo, så långa ord Så jag får mejla kommentaren istället :) /Håkan...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Språk</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Den alltid nyfikne <a href="http://hakkesnack.blogsome.com/">hakke</a> skickade följande mail till <a href="http://kornet.nu/blindhona/">Jonas Söderström</a> och mig häromdagen. (Mailet är trivialt redigerat.)</p>

<blockquote>
   Det går ju inte att kommentera den här gamla godingen :(
   <a href="http://kornet.nu/blindhona/arkiv/000454.html">Ooo, så långa ord</a>

<p>   Så jag får mejla kommentaren istället :)</p>

<p>   /Håkan (hakke)</p>

<p>   Vissa  saker  man  läst  sitter liksom kvar i hjärnan som en lös liten<br />
   skruv,  som  ibland  vickar  till  och gör sig påmind. Dit hör det här<br />
   inlägget,  bland annat för att det var här jag upptäckte bloggarna men<br />
   också på grund av dess språkglädje.</p>

<p>   Nyss stötte jag på ordet "kulturutbud" i en text. Det är inte särskilt<br />
   lättläst,  en  egenskap  det troligen delar med många andra monovokala<br />
   ord.</p>

<p>   Håkan  Kjellerstrand  hade ju vänligheten att publicera följande lilla<br />
   lista  över  förekomsten av monovokala ord för var och en av svenskans<br />
   vokaler:<br />
<code><br />
   Vokal: antal ord<br />
   ----------------<br />
   a: 3137<br />
   e: 791<br />
   i: 1299<br />
   o: 960<br />
   u: 625<br />
   y: 192<br />
   ä: 590<br />
   å: 280<br />
   ö: 272<br />
</code><br />
   Några saker jag blir nyfiken på är:</p>

<p><br />
</blockquote></p>

<p>Efter kom sedan tre (3) frågor som av besvaras (eller åtminstone bekommenteras) var och en i det nedanstående. Notera att ordlistan som användes för att skapa ovanstående förekomstfördelning är äldre i relation till den ordlista som används i dessa svar.</p>

<p><br />
<blockquote>Hakkefråga 1. Vilka är de längsta fem monovokala orden för varje vokal?</blockquote></p>

<p><b>Svar fråga 1.</b><br />
Här är de inte bara de fem utan även de sex längsta ord för respektive monovokal . Ordlängden visas efter ordet. Not: Det kan finnas flera ord med samma ordlängd som den minst långa ordlängden för respektive vokal. Programmet visar då endast att det blir exakt sex stycken ord (och slumpmässighetens underbara men samtidigt starkt underskattade men starkt påverkande hand styrde exakt vilka som visas).</p>

<p><code><br />
Vokal a:<br />
brandalarmapparat: 17<br />
andrahandsmarknad: 17<br />
partssammansatt: 15<br />
branschanpassad: 15<br />
brandhandgranat: 15<br />
tandspacklarnas: 15</p>

<p>Vokal e:<br />
referensfrekvens: 16<br />
frekvensmeterns: 15<br />
telexreglemente: 15<br />
referenselement: 15<br />
meddelelsemedel: 15<br />
pendelfrekvens: 14</p>

<p>Vokal i:<br />
lindningsriktning: 17<br />
tillfriskningstid: 17<br />
lindningsstigning: 17<br />
drivningsriktning: 17<br />
visningsspridning: 17<br />
stigningsriktning: 17</p>

<p>Vokal o:<br />
motorfordonskontroll: 20<br />
kontrollprotokoll: 17<br />
domstolsprotokoll: 17<br />
torvjordskompost: 16<br />
fordonskontroll: 15<br />
kontrollmottolk: 15</p>

<p>Vokal u:<br />
ursprungspunkt: 14<br />
djupbrunnspump: 14<br />
sunhultsbrunns: 14<br />
grundstruktur: 13<br />
sunhultsbrunn: 13<br />
kugghjulspump: 13</p>

<p>Vokal y:<br />
skyddshytt: 10<br />
styckfryst: 10<br />
krymptryck: 10<br />
tryckstyrd: 10<br />
plymprydd: 9<br />
frysskydd: 9</p>

<p>Vokal å:<br />
stålspåntlås: 12<br />
språngstråk: 11<br />
tvångsvård: 10<br />
stånggång: 9<br />
nålsprång: 9<br />
ståltråds: 9</p>

<p>Vokal ä:<br />
rättshjälpsnämnd: 16<br />
kärrsnäppsägg: 13<br />
vändskärsfräs: 13<br />
rännhärdsjärn: 13<br />
skräntärnsägg: 13<br />
ändskärsfräs: 12</p>

<p>Vokal ö:<br />
mörkrödglöd: 11<br />
bröstsköld: 10<br />
förströtts: 10<br />
bröstmjölk: 10<br />
slöjdbjörk: 10<br />
bröstböld: 9<br />
</code></p>

<blockquote>Hakkefråga 2.  De  korta  orden  intresserar mig inte särskilt mycket. Det skulle
   vara  intressant  att se motsvarande sammanställning begränsad till de
   ord  där  det  finns  minst  3, 4 respektive 5 vokaler. Jag gissar att
   fördelningen  mellan  ordrikedomen  per  vokal  då också kan komma att
   förändras något. Kanske blir ledningen för a och i ännu tydligare?
</blockquote>

<p><b>Svar fråga 2</b></p>

<p>Först kommer den totala fördelningen av antal vokaler per ord som har<br />
minst 2 vokaler för att få en känsla för vad som kommer:</p>

<p><code><br />
Fördelning av antal vokaler per ord:<br />
2: 9868<br />
3: 3215<br />
4: 539<br />
5: 60<br />
6: 6<br />
</code></p>

<p>Sedan med hakkes föreslagna begränsningar om minst v vokaler.</p>

<p><code><br />
Vanligaste bokstaven (minst 2 monovokaler):<br />
a: 7377<br />
e: 2080<br />
i: 1612<br />
o: 1275<br />
u: 436<br />
ä: 410<br />
ö: 253<br />
å: 196<br />
y: 49</p>

<p>Vanligaste bokstaven (minst 3 monovokaler):<br />
a: 2447<br />
e: 717<br />
i: 350<br />
o: 229<br />
u: 64<br />
ä: 9<br />
å: 2<br />
ö: 2</p>

<p>Vanligaste bokstaven (minst 4 monovokaler):<br />
a: 354<br />
e: 179<br />
i: 38<br />
o: 33<br />
u: 1</p>

<p>Vanligaste bokstaven (minst 5 monovokaler):<br />
a: 42<br />
e: 16<br />
i: 4<br />
o: 4</p>

<p>Vanligaste bokstaven (minst 6 monovokaler):<br />
e: 4<br />
a: 1<br />
o: 1<br />
</code></p>

<p>Det finns inga ord i ordlistan med 7 eller fler monovokaler.</p>

<p><br />
För fullständighetens skulle visas här även fördelningen av <b>ordlängden</b> (för ord med minst 2 monovokaler):</p>

<p><code><br />
3: 22<br />
4: 300<br />
5: 1226<br />
6: 2486<br />
7: 2964<br />
8: 2744<br />
9: 1886<br />
10: 995<br />
11: 517<br />
12: 299<br />
13: 151<br />
14: 62<br />
15: 16<br />
16: 6<br />
17: 13<br />
20: 1<br />
</code></p>

<blockquote>Hakkefråga 3. Undrar om fördelningen ändras över tiden? Sedan listan skapades har
   det ju kommit en ny version av saol.
</blockquote>

<p><br />
<b>Svar (eller snarare kommentar till) fråga 3</b></p>

<p>Hakke har troligen en poäng att ovanstående beskrivna fördelningar förändras över tiden. Det är dock utanför mitt experimenterande eftersom jag inte använder SAOL utan <a href="http://www.dsso.se/">Den stora svenska ordlistan</a> (eller snarare ett derivat av den ordlista man kan ladda ner <a href="http://www.dsso.se/download.html">här</a> och om vilket kommenteras något mer här nedan).</p>

<p>Svar på anticiperad följdfråga: Nej, jag har inte sparat olika DSSO-versioner för denna typ av jämförelse.</p>

<p></p>

<p><b>Några vidarekommentarer</b><br />
För ett antal (cirka 2) månader sedan förnyades monovokaldiskussionen på Blind Höna, i <a href="http://kornet.nu/blindhona/arkiv/002537.html">Ooo, så många o:n! Monovokal toppnotering tangerad</a> (där mina findings bygger på samma ordlista som ovanstående analyser). Se även <a href="http://kornet.nu/blindhona/arkiv/000487.html">Söndagspyssel</a> där den ursprungliga monovokaldiskussionen fortsatte att diskuteras.</p>

<p>DSSO-listan är samma ordlista som man hittar på <code>http://sv.speling.org/files/</code> (det görs en omdirigering till DSSO-sajten). Denna ordlista har även används i andra språk-/ordprojekt, t.ex.<br />
* <a href="http://www.hakank.org/ordo/visa_ordklasser.html">Visa ordklasser</a> (presenteras i <a href="http://www.hakank.org/webblogg/archives/001101.html">Svenska ordklasser samt gissning med hjälp av ordsuffix</a>)<br />
* <a href="http://www.hakank.org/vowels_away/consonants_away.html">Consonants Away</a>  (presentation i <a href="http://www.hakank.org/webblogg/archives/000999.html">Consonants Away</a>)<br />
* samt ett gäng andra s.k. <a href="http://www.hakank.org/useless/index.html">useless-projekt</a>.<br />
</p>]]>


</content>
</entry>
<entry>
<title>Lite länkar till videoföreläsningar 20071009</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001204.html" />

<modified>2007-10-10T20:23:46Z</modified>
<issued>2007-10-09T17:53:33Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1204</id>

<created>2007-10-09T17:53:33Z</created>
<summary type="text/plain">En dump av videoföreläsningar sparade i Bloglines. Allt har inte setts men verkar skoj av en eller annan orsak. * Decision Science News R video tutorial number 2. * UCTV Game Theory 2007. Kurs i spelteori. Se även kursens outline....</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Video podcasts</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>En dump av videoföreläsningar sparade i Bloglines. Allt har inte setts men verkar skoj av en eller annan orsak.</p>

<p><br />
* Decision Science News <a href="http://www.decisionsciencenews.com/?p=264">R video tutorial number 2</a>.</p>

<p><br />
* UCTV <a href="http://uctv.canterbury.ac.nz/modules/journal/journalview.php?space_key=4&module_key=41&link_key=43&group_key=0">Game Theory 2007</a>. Kurs i spelteori. Se även kursens <a href="http://uctv.canterbury.ac.nz/modules/feedreader/feedreader.php?space_key=4&module_key=73">outline</a>.</p>

<p><br />
* En samlig av vetenskapliga experiment av mer vardagligt slag finns på <a href="http://krampf.com/experiment_vid.html">Robert Krampf's Science Videos</a>.</p>

<p><br />
* KDD 2007 <a href="http://videolectures.net/kdd07_sanjose/">The 13th International Conference on Knowledge Discovery and Data Mining</a> (en massa föreläsningar). För den delen finns det flera andra föreläsningar på <a href="http://videolectures.net/">videolecures.net</a> såsom <a href="http://videolectures.net/aaai07/">AAAI-07 AI Video Competition</a> och <a href="http://videolectures.net/bootcamp07_vilanova/">PASCAL Bootcamp in Machine Learning</a>.</p>

<p><br />
* David Henderson, Charles Hooper <a href="http://video.google.com/videoplay?docid=-4267021878143533179">Making Great Decisions</a><br />
<blockquote><br />
The phrase "work smarter, not harder" has been repeatedly ridiculed in Dilbert and  ... all » elsewhere, not because it is a poor idea, but because it is thrown like a brick lifesaver to drowning employees. It's like telling someone to be happier, healthier, and richer. What people need is a plan for doing so.</p>

<p>In "Making Great Decisions" the authors show readers how to achieve their objectives. They offer a better way to look at problems so that solutions are easier to find.</p>

<p>Speaker: David R. Henderson, Ph.D. David R. Henderson is an economics professor at the Naval Postgraduate School in Monterey and a research fellow with the Hoover Institution at Stanford. He was a senior economist with President Reagan's Council of Economic Advisers.</p>

<p>Speaker: Charles L. Hooper Charles L. Hooper is President and co-founder of Objective Insights, Inc., a consulting firm dedicated to providing health care companies with marketing and financial analysis to help them make informed decisions about their business opportunities.<br />
</blockquote></p>

<p><br />
* Ross Anderson <a href="http://video.google.com/videoplay?docid=-1380463341028815296">Searching for Evil</a><br />
<blockquote></p>

<p>Computer security has recently imported a lot of ideas from economics, psychology and ... all » sociology, leading to fresh insights and new tools. I will describe one thread of research that draws together techniques from fields as diverse as signals intelligence and sociology to search for artificial communities.</p>

<p>Evildoers online divide roughly into two categories - those who don't want their websites to be found, such as phishermen, and those who do. The latter category runs from fake escrow sites through dodgy stores to postmodern Ponzi schemes. A few of them buy ads, but many set up fake communities in the hope of having victims driven to their sites for free. How can these reputation thieves be detected?</p>

<p>Some of our work in security economics and social networking may give an insight into the practical effects of network topology. These tie up in various ways with traffic analysis, long used by the signals intelligence agencies which trawl the airwaves and networks looking for interesting targets. I'll describe a number of dubious business enterprises we've unearthed. Recent advances in algorithms, such as Newman's modularity matrix, have increased the robustness of covert community detection. But much scope remains for wrongdoers to hide themselves better as they become topologically aware; we can expect attack and defence to go through several rounds of coevolution. I'll therefore end up by talking about some strategic issues, such as the extent to which search engines and other service providers could, or should, share information in the interests of wickedness detection.</p>

<p>Speaker: Ross Anderson Ross Anderson is one of the top security researchers in the world. <br />
</blockquote></p>

<p><br />
* Philip Chan <a href="http://video.google.com/videoplay?docid=1431565311966644612">Learning Rules for Anomaly Detection</a><br />
<blockquote></p>

<p>Anomaly detection has the potential to detect novel attacks, however, keeping the false ... all » alarm rate low is a challenging task. We discuss the LERAD algorithm that can learn concise and accurate rules for anomaly detection and demonstrate its effectiveness in network and host datasets. We will also discuss our recent work (KDD 07) on weighting versus pruning during the rule validation.</p>

<p>If there is more time, I can also talk about:</p>

<p>As mobile devices become more pervasive, we study the problem of spatial-temporal anomaly detection for identifying potential abuse. We discuss the STAD algorithm and show its performance on a cell phone dataset.<br />
</blockquote></p>

<p><br />
* Geoffrey West <a href="http://video.google.com/videoplay?docid=7108406426776765294">Scaling Laws In Biology And Other Complex Systems</a><br />
<blockquote><br />
Life is very likely the most complex phenomenon in the Universe manifesting an  ... all » extraordinary diversity of form and function over an enormous range. Yet, many of its most fundamental and complex attributes scale with size in a surprisingly simple fashion. For example, metabolic rate (the power required to sustain the system) scales as approximately the 3/4-power of mass over 27 orders of magnitude from molecular levels up to the largest multicellular organisms. Similarly, time-scales, such as lifespans and growth-rates, increase with exponents which are typically simple powers of 1/4. It will be shown how these universal quarter-power scaling laws follow from fundamental generic principles embedded in the dynamics and geometry of underlying networks, leading to a general quantitative theory that captures essential features of many diverse biological systems. Examples will include animal and plant vascular systems, growth, cancer, aging and mortality, sleep, DNA nucleotide substitution rates. These ideas will be extended to discuss social organisations such as cities and firms: to what extent, if at all, can we think of these as very large organisms and therefore as an extension of biology? Analogues to metabolic rate and behavioral times in cities scale counter to their behaviour in biology. Driven by innovation and the creation of wealth this has dramatic implications for their growth, development, sustainability and pace of life which, left unchecked, potentially sow the seeds for their collapse. </p>

<p>Geoffrey West is a theoretical physicist whose primary interests have been in fundamental questions in physics, especially those concerning the elementary particles, their interactions and cosmological implications. Prior to joining the Santa Fe Institute as a Distinguished Professor in 2003, he was the leader, and founder, of the high energy physics group at Los Alamos National Laboratory, where he is one of only approximately ten Senior Fellows.  «<br />
</blockquote></p>

<p><br />
* Lynn Robertson <a href="http://video.google.com/videoplay?docid=9181877867316596683">Is That My Brother? Perceptual and Neurobiological Factors in Face Blindness</a><br />
<blockquote><br />
Face blindness (technically known as prosopagnosia) is a condition in which people with otherwise normal vision cannot discriminate one  ... all » face from another. They may not be able to pick out their own husband or children in a crowded room or even themselves in a mirror. One woman reported she once had to crinkle her face in a crowded rest room to discriminate herself from others in the mirror. This problem can occur through injury to particular areas within the brain (either through head trauma, stoke or surgery), but it can also occur developmentally. In the latter case, the brain appears completely normal, yet developmental prosopagnosics (DP) have never learned to accurately discriminate faces.</p>

<p>There is a large scientific body of work on face perception published in the psychological, social and neurobiological literature, and I will highlight some of the more important findings. I will then discuss work from my own laboratory on perceptual processing of faces; emphasizing training methods we have developed to help individuals with DP identify faces, sometimes for the first time in their lives. This discussion will be complemented by inclusion of documented neurobiological and cognitive changes that accompany the emergence of face recognition abilities.<br />
</blockquote></p>

<p><br />
* Erin McKean <a href="http://video.google.com/videoplay?docid=7548057564471419291">Wordmaking: What it take to succeed in hacking English and invent a new word</a><br />
<blockquote><br />
Earn the basics of word formation in English, get "raw materials" for new words, and invent  ... all » your own word (and have it critiqued) before you let it loose into the English language. The maker of the "best new word" (as voted on by the participants) will win a new dictionary.<br />
</blockquote></p>]]>


</content>
</entry>
<entry>
<title>Sammanfattning Bloggträff Malmö 20071004</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001203.html" />

<modified>2007-10-07T10:30:46Z</modified>
<issued>2007-10-07T10:30:02Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1203</id>

<created>2007-10-07T10:30:02Z</created>
<summary type="text/plain">Här är en kort sammanfattning av bloggträffen i Malmö 20071004. Som vanligt skrivs denna sammanfattning under subtila hot. Denna gång att Åsa annars outar mig som en modebloggare. Ett problem med denna typ av hot är att den kan vara...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Bloggmiddagar</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p>Här är en kort sammanfattning av <a href="http://www.hakank.org/webblogg/archives/001201.html">bloggträffen i Malmö 20071004</a>.</p>

<p>Som vanligt skrivs denna sammanfattning under subtila hot. Denna gång att <a href="http://zyrenna.webblogg.se/1191613310_allmnbildning.html">Åsa</a> annars outar mig som en modebloggare. Ett problem med denna typ av hot är att den kan vara kontraproduktiv, t.ex. skulle man kunna tänka sig att jag hellre skulle vilja läsa Åsas outning än att skriva denna sammanfattning.</p>

<p></p>

<p><b>Deltagare</b>:<br />
<a href="http://zyrenna.webblogg.se/">Zyrenna-Åsa</a><br />
<a href="http://www.mats-andersson.se/blogg/">Klocklös</a>- och <a href="http://www.mats-andersson.se/index.asp?page=blogg">Ståupp</a> Mats<br />
<a href="http://ostrukturerat.blogspot.com/">Ståupp-Elin</a><br />
Karl - "jag bloggar inte, men inte av princip" - Wettin<br />
<a href="http://www.anvandbart.se/">Användbart-Tommy</a> och Tim (en ännu ej bloggande son)<br />
<a href="http://www.hakank.org/webblogg/">hakank-Håkan</a></p>

<p><br />
<b>Det pratades om bland annat</b><br />
* Vad "semi-professionell X" egentligen betyder. Det betyder inte att man gör X halvhjärtat eller halvbra, utan att man gör det men utan att det är ens huvudsakliga inkomst.</p>

<p>* Facebook - kan det vara något? <br />
Vad är egentligen poängen med dessa sociala nätverk. Facebook förbereder att göra djupanalyser av vad som skrivs där och försöker att göra riktad reklam. Skiljer sig detta principiellt mot vad Google gör med Gmail-reklamen?</p>

<p>Och varför är man - efter t.ex. Orkut - förvånad att man sitter alldeles för lång tid med i grunden rätt meningslösa applikationer såsom att bli jämförd med sina vänner/kontakter i olika delar av världens mer eller mindre komplexa sfärer (exempel: filmsmak, vilken skådespelare man är mest lik, vilka prioriteringar man gör i livet).</p>

<p>Varför man - givet den -- sett i efterhand -- ganska dåliga erfarenheten av Orkut - man överhuvudtaget (och ganska aktivt) gick med i Facebook: Mestadels för att man är nyfiken på vad det är, men även mer specifika orsaker såsom att det finns just skoj applikationer som att jämföra filmsmak.</p>

<p><br />
* Ståuppande<br />
Varför man tycker om att stå på scen för att rolig och varför man inte tycker om att stå på scen för att vara rolig. En del i skillnaden är hur man uppfattar (och uppskattar) den förväntan som finns hos en publik som betalar dyra pengar för att bli underhållna.</p>

<p><br />
* Om varför man bloggar. <br />
Kan man ställa speciellt socialt ansvar på en person bara för att denna bloggar, dvs skilt från det sociala ansvar man kan ställa på alla sina medmänniskor? Nja, inte bara för att denne bloggar, däremot bör stort inflytande och en stor läsekrets medföra ett sådant ansvar. </p>

<p>Ungefär samma fråga: Måste man/bör man som bloggare följa med i de politiska (eller medmänsklighets-) aktioner som andra bloggare följer med i? Nja, ungefär samma svar.</p>

<p>Reminder: Man bör återigen tänka på att det inte finns någon som helst gemensam agenda för alla de som bloggar. Och tur är det.  </p>

<p>* Den där underbara efterrätten på Kin Long (risdumpling med sesamfröfyllning). Den är väldigt söt och god. Någon annan deltagande delade troligen inte detta översvallande.omdöme</p>

<p>* Alex Schulmans "ödmjukhetsbloggning"<br />
Flera deltagande hade följt A.S.:s blogg och flera andra hade inte gjort det. Någon: "Vem är Alex Schulman?". </p>

<p>De flesta kände igen sig i att bloggen tar mycket tid i anspråk, men inte så mycket att man uppfattade den som ett monster.</p>

<p><br />
* Det förekom en del tekniska nörderier också, såsom en beskrivning av automatisk community detection av en persons Facebook-kontakter (borde detta hellre skrivas under Facebook-entryt ovan i stället för här?), några diskussioner om detaljer inom machine learning.</p>

<p>Någon reflekterade härvidlag över att det var färre matematikbloggare än på länge.</p>

<p><br />
* Om att twingla (dvs överanvända Twingly-tjänsten)<br />
Det vars ganska överens om att Twingly både kunde och hade missbrukats av bloggare för att få besök. Någon berättade om en synnerligen medveten protest ("socialt experiment")  mot detta genom att twingla 50 (femtio) DN-länkar i ett och samma blogginlägg utan någon inramande handling, vilket gav som resultat att denne person blev portad från tjänsten. Flera andra exempel nämndes. </p>

<p>Ett problem - som naturligtvis är mycket mer generellt än Twinglylänkar - är man inte vet något om den blogg/bloggare som skriver en kommentar till tidningsartikel. Ofta gör man inte heller det med tidningens journalister, men på något sätt så garanteras det faktum att det skrivs i tidningen någon form av kvalitet. </p>

<p>Ungefär här kom vi in på att det tar lång tid att få ett förtroende för en bloggare. I och för sig kan man läsa (och bedöma) en enskild blogganteckning och få ut något av det, men det kräver många fler läsningar för att man ska få verkligt förtroende för bloggaren. </p>

<p>En kort diskussion om att Chain-of-trust möjligen kunde lösa detta problem utbrast i ena hörnet (vilket då kunde ha döpts till det nördvästra hörnet).</p>

<p>* Kin Long (den restaurang varvid detta utspelades) hade nyligen fått Nöjesguidens pris "Årets krog", varpå ägaren gratulerades till detta. I samband med detta kommenterades även att några japanska maträtter nu också fanns på menun. Den där Yakiniku kommer att testas nästa gång.</p>

<p>Det frågades för övrigt  - möjligen inte alldeles seriöst - också om ägaren hade hört någon gäst säga att besöket berodde på att denne läst om restaurangen på en blogg. Något sådant hade dock inte hörts, däremot att flera läst om restaurangen på nätet.</p>

<p><br />
* Pulsklockor och blodtryckmätare<br />
Bl.a. om att använda pulsklockan under en hel arbetsdag för att lära sig hur man mår under vila och stress. </p>

<p>* Mer eller mindre privata saker som inte lämpar sig att offentliggöra i det öppna ljus som webben byk ändå utgör. Hit hör bl.a. bransch-skvaller, privata tankar samt Twingly-strategier. </p>

<p></p>

<p><b>Några saker som inte diskuterades</b><br />
-  Baudrillards teori om <a href="http://en.wikipedia.org/wiki/Simulacra_and_Simulation">Simulacra</a> specifikt sett ur bloggens (och andra virtuella sammfälligheters såsom Second Life) perspektiv<br />
- Ian Hackings bok "The social constrution of what" om sociala konstruktioner<br />
- den nya mobiltelefon som inköptes i fredags, en Sony-Ericsson PIi. Denna demonstration  - förutom en IMBD-ning på Julia Roberts film Mary Reilly - inkluderade en demonstration av TrackId (en skoj tjänst som känner igen ett uppspelat musikstycke, t.ex. spelad på radio eller stereografiskt återgiven. Det rekommenderas att musikstyckets ljudström till telefon är avskilt från intensiva politiska diskussioner eftersom sådana stör tjänsten. Förmodligen har inte själva innehållet i argumenten något med detta att göra, endast dess styrka).<br />
- forskning om retoriska grepp i eller spelteoretiska modeller kring hiphop-battling (c.f slutscenen i filmen "8 mile"). Någon sådan forskning kändes dock inte till.</p>

<p>Som tur blev det tillfälle att prata om dessa saker igår (lördags) kväll i en helt annan samkvämlighet.</p>

<p>Och varför pratar man inte om <a href="http://en.wikipedia.org/wiki/Smart_mob">smart mobs</a> längre?</p>]]>


</content>
</entry>
<entry>
<title>Videoföreläsning om R  (del 1, en kort introduktion)</title>
<link rel="alternate" type="text/html" href="http://www.hakank.org/webblogg/archives/001202.html" />

<modified>2007-09-26T21:34:35Z</modified>
<issued>2007-09-26T21:31:16Z</issued>

<id>tag:www.hakank.org,2007:/webblogg/1.1202</id>

<created>2007-09-26T21:31:16Z</created>
<summary type="text/plain">Decision Science News (en av favoritbloggarna kring beslutsteori, dataanalys etc) har nu börjat med videoföreläsningar i dataanalysverktyget R. Se vidare R video tutorial number 1. Det är en kort introduktion men kan vara början på något trevligt. Som presentatören säger...</summary>

<author>
<name>hakank</name>
<url>http://www.hakank.org/webblogg</url>

<email>hakank@bonetmail.com</email>
</author>
<dc:subject>Statistik/data-analys</dc:subject>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.hakank.org/webblogg/">
<![CDATA[<p><a href="http://www.decisionsciencenews.com/">Decision Science News</a> (en av favoritbloggarna kring beslutsteori, dataanalys etc) har nu börjat med videoföreläsningar i dataanalysverktyget <a href="http://www.r-project.org/"">R</a>. Se vidare <a href="http://www.decisionsciencenews.com/?p=261">R video tutorial number 1</a>. Det är en kort introduktion men kan vara början på något trevligt.</p>

<p>Som presentatören säger så rekommenderas en bok (eller två) i R (eller det mycet snarlika språket S). En förhoppningsvis fullständig lista över relaterare böcker finns <a href="http://www.r-project.org/doc/bib/R-books.html">här</a>. Några av mina favoriter är:<br />
* William N. Venables, Brian D. Ripley. <a href="http://www.bokus.com/b/9780387989662.html">S Programming</a> (ISBN: 9780387989662). En introduktion för den som vill gå in på djupet i själva R-språket (eller S).<br />
* William N. Venables, Brian D. Ripley:  <a href="http://www.bokus.com/b/9780387954578.html">Modern Applied Statistics with S, 2002</a> (ISBN: 9780387954578). Det är en relativt avancerad bok men innehåller mycket matnyttig information, många tips och funktioner.</p>

<p>Se även <a href="http://www.hakank.org/webblogg/archives/001196.html">Några videoföreläsningar om statistik, sannolikhet och data mining</a>.</p>]]>


</content>
</entry>

</feed>