Subscribe: hakank.blogg
http://www.hakank.org/webblogg/index.rdf
Added By: Feedage Forager Feedage Grade B rated
Language: Swedish
Tags:
att  constraint programming  constraint  ett  för  gecode  inte  jag  med  mer  och  pop  programming    till  är 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: hakank.blogg

hakank.blogg



Anteckningar från en PopSci-junkie. Av Håkan Kjellerstrand (hakank@gmail.com).



Published: 2013-06-18T10:30:49+01:00

 



10 år med blogg

2013-06-18T10:30:49+01:00

Idag för exakt tio (10, t-i-o) år sedan skrev jag det första blogginlägget på min svenska blogg hakank.blogg: Mina första 1000 dagar med Taiji samt det andra Min första dag med webblogg (som naturligtvis var ett metainlägg, definitivt inte det sista eftersom just bloggfenomenet på olika nivåer intresserades för). Detta påbörjade en (emellan lite för) intensiv period där saker som intresserades av skrevs ned och diskuteras. Något som inte räknades med - en positiv bieffekt - var att få kontakt med många väldigt trevliga, intressanta och smarta människor, både via bloggarna men även IRL/AFK, t.ex. via de s.k. blogg(are)träffarna (något som fortfarande hålls på med, men utan kallelser och de långa sammanfattningarna och via en Facebookgrupp som sammanhållande tekniskt stöd. Säg till om du är intresserad.). Här är några saker som det skrivits om; referens görs till respektive kategorier i bokstavsordning: Agentbaserad modellering Artificiell intelligens Blogging Bloggmiddagar Böcker Constraint Programming Diverse Diverse vetenskap Dynamiska system Filmer Filosofi Fredagsfyran Humor Husgudar Kognitiva illusioner Komplexitet/emergens Machine learning/data mining Matematik Memetik Musik OpenOffice Calc/Excel Operations research Personligt Program Pyssel Reguljära uttryck etc Rekommendationssystem SNOBOL/SPITBOL Sajter Samhälle och politik Sammanträffanden Skepticism, parapsykologi etc Social Network Analysis/Complex Networks Spelteori och ekonomi Sport, idrott, hälsa Språk Statistik/data-analys Systemutveckling Sökmotorer Tai Chi Chuan Trolleri, magi etc Video podcasts Efter cirka 2010 skrevs det inte så mycket på denna blogg utan det skrevs på andra ställen i stället, dels - ett kort tag - Arrays in Flux. Däremot har det skrivits relativt ofta sedan 2009 - men oregelbundet - på My Constraint Programming Blog som handlar om Constraint Programming (Wikipedia), dvs det som på svenska kallas "villkorsprogrammering"; och det är - kortfattat - ett sätt att beskriva och lösa framförallt kombinatoriska problem på ett sätt som är mer högnivå och deklarativt än traditionella programspråk. En av anledningarna till att det inte bloggas så väldigt mycket nu för tiden är att de s.k. sociala närverkssystemen har tagit över mycket av de långa - och korta - blogginläggen. Här är de trenne ställen som månne kan vara intressant för den som vill följa det som händer, men inte där heller är det en drös av länkexplosioner eller omvärdskommentarsfyrverkerier. Twitter (hakankj) Google+ Facebook (hakankj, och som det inte alls är speciellt aktivt på) Som har skrivits om tidigare, är den korrekta kontaktadressen hakank@gmail.com och inget den där gamla bonetmail-adressen. Tidigare bloggades det i princip om alla program, findings, programsspråkslärande som gjordes/upptäcktes/testades, men numera läggs det endast en länk på hemsidan www.hakank.org, eventuellt följt av twittrande, googleplussande eller facebookande kring detta faktum. Här är för övrigt några andra länkar till/kring/för diverse facetter av livet (törhända en viss begränsad del av detsamma liv: det görs en hel del andra saker som det dock inte (be)skrivs om publikt): My Linkedin page My GitHub page My Rosetta Code page My Google Scholar page My DBLP Några "för övrigt" (eller se-även): Jonas Söderström - en Sveriges allra första bloggare, för övrigt känd författare av boken Jävla skitsystem! - håller på att skriva en bok om den svenska blogggistoren. Han kallar bloggen om detta påpassligt just för Den svenska blogghistorien Om du vill kolla in ett nytt multiparadigm-programmeringsspråk som är inspirerat av logikprogrammering, funktionsprogrammering, med imperativa konstruktioner samt stöd för villkorsprogrammering så kans[...]



Byte av epostadress, samt annat

2012-11-30T20:59:59+01:00

Äntligen - säger kanske någon - så kommer det något livstecken från Håkan. Den som säger så har i så fall missat följande livstecken: My Constraint Programming Blog (uppdateras typ någon/några gånger i månaden) Arrays in Flux (som i och för sig mest innehåller gamla livstecken) hakank.org som innehåller - men odaterade - tecken om olika saker som gjorts (den senaste - i skrivande stund - tiden har det varit rätt mycket lekande med nya - för mig - programspråk och liknande). Men - "tyvärr" kanske någon säger, eventuellt samma någon som ovan nämnda någon - så är denna blogpost endast (fast nästan) för att meddela den viktiga information att jag numera helt gått över till en annan epostadress, nämligen hakank@gmail.com. Detta eftersom Bredbandsbolaget helt och hållet stänger trotjänaren bonetmailen-adressen som varit med i nästan exakt 10 år (tack för denna tid, för övrigt). Dock, för att ni inte ska gå helt tomhänta härifrån så kan meddelas följande - till viss del helt orelaterade - saker, fast ändå inte eftersom sak numro 2 är väldigt relaterad, på vissa sätt och vis i alla fall: Språkligheter Följande ord innehåller vokalerna a,e,i,o,u,y i ordning: accelerationsmunstycke satellitkommunikationssystem Detta ord innehåller vokalerna a,e,i,o,u,y,å,ä,ö i ordning: satellitkommunikationssystemåtgärdsförslag Och ordet tryckutjämningsbehållare är det ord (från den ordlista som be-sökts) som innehåller flest olika bokstäver (20 stycken). Här är deras fördelning: a: 1 b: 1 c: 1 e: 2 g: 1 h: 1 i: 1 j: 1 k: 1 l: 2 m: 1 n: 2 r: 2 s: 1 t: 2 u: 1 y: 1 å: 1 ö: 1 Och följande ord är de som innehåller flest distinkta bokstäver, exakt en förekomst alltså (16 unika bokstäver) utifrån densamma ordlista: giftermålsanbud ishockeyförbund jämlikhetsfråga oförvansklighet Se nedan under "Senare not" för en senare not om detta. Byte av mailadressen Men - kanske någon kunde säga om just denne någon är bevandrad i data(sv)engelska -: Men hördudu Håkan, byte har ju en engelsk betydelse också, har du tänkt på det?. Varpå jag i så fall kunde svara: Ah, kul du tänkte på det! Det tänker man ju inte på om man bara säger ordet högt., och skulle då därefter kunna beskriva en algoritm för just denna betydelse av "byte av mailadress", nämligen transformeringen av hakank@gmail.com till en byte: Byt (sic!) ut varje bokstav till dess ASCII-värde, summera dess värden tillsammans och på denna summa gör man sedan en fin modulo 255 256. För min nya gmail-adress blir det 37. 43 (så nära!). Varpå man skulle kunna implementera algoritmen i programspråket K (om man hade den inklinationen och det har man ju ibland, eller hur?): (+/{_ic x}'"hakank@gmail.com")!255 43 (+/{_ic x}'"hakank@gmail.com")!256 37 (K är - för övrigt och som eventuellt kan ses med ovanstående kodexempel - ett väldigt uttrycksfullt "array language" som gör att man mycket kärnfullt kan uttrycka sina innersta tankar kring vissa saker i tillvaron, t.ex. saker såsom saker av ovanstående problemstruktur. Språket är en del i APL-familjen och typ en kusin till programspråket J. Hittills har K varit mer favoritspråk än J, men det är möjligt att detta ändras vad det lider.) Senare not: Samma person som påpekade (i ett mail som tyvärr - synnerligen felaktigt - ansetts av Google som spam) att det ska vara modulo 256 istället för 255, gav även förslaget "mödoutvecklingsbar" som ett längre ord med unika bokstäver än ovanstående. Även densamma person ansåg att det föreslagna ordet är "lite krystad, kanske" och påpekade att ordet inte fanns i Googles sökmotor; och det måste vi ju ändra på. Slut senare not[...]



Ny engelskspråkig blogg: Arrays in Flux

2010-02-21T18:46:54+01:00

Häromdagen startade jag min andra engelskspråkiga blogg: Arrays in Flux (ungefär "Vektorer i rörelse").

Det första inlägget Arrays in Flux: My third blog, and second English beskriver inriktningen och förklarar namnet mer.

Det andra inlägget, som precis publicerades, Symbolic regression (using genetic programming) with JGAP beskriver det jag hållt på med de senaste veckorna. Det är en utveckling av det som skrevs om i Eureqa: equ.ation discovery med genetisk programmering.




Eureqa: equation discovery med genetisk programmering

2010-01-24T09:16:07+01:00

(For English readers: This blog post is available as a Google Translation from this Swedish text: Eureqa: equations discovery with genetic programming.) För mer än 6 år sedan bloggade jag om equation discovery (att hitta ekvationer/samband givet en datamängd) och hittade några roliga system som jag då kollade in rätt mycket. Nu är det dags igen: Eureqa är ett modernt equations discovery-system baserat på genetisk programming (närmare bestämt symbolisk regression) och det har ett fint GUI etc. Eureqa blev världskänt i början av december förra året genom att Wired skrev en artikel om systemet och forskningen/forskarna bakom: Download Your Own Robot Scientist. Faktum är att jag laddade ner systemet och testade det lite men jag höll på på med andra saker. De senaste dagarna har jag suttit med några enkla problem (dvs datafiler) för att lära känna Eureqa mer. Mer avancerade saker såsom dynamiska modeller (differentialekvationer) och komplexa ekonomiska system (såsom börskurser) tar jag tag i senare. Jag tänker inte gå in på vad genetisk programmering är mer än att säga att det använder inspiration från biologin för att leta rätt på en lösning. Se vidare genetic programming (Wikipedia) för mer info och länkar. Huvudprincipen för den variant av genetisk programmering som Eureqa använder är att man har - en datamängd - ett visst antal matematiska funktioner ("byggklossar") - en relation mellan variabler som man vill studera Eureqa hittar då givet variablerna och funktioner ett antal samband (lösningar, modeller). Med en "felfunktion" (error function) kommer diskrepansen mellan data och den skapade modellen att minska till ett så litet värde som möjligt, förhoppningsvis 0. Här följer några kommentarer och ett och annat tips. Först beskrivs Eureqa, sedan lite mer om modelleringen med några exempel. Efter det länkar till några av de datafiler som används, och sist mer länkar om Eureqa. Mycket kortfattat: Jag tycker Eureqa är ett riktigt trevlig och skoj system, tyvärr rätt mycket CPU-slukande för att min dator ska må riktigt bra. Men skoj. Min vana trogen skapades även en My Eureqa page för länkar, filer och annat etc. Installation Programmet finns att ladda ner här. Tyvärr finns endast en Windows-version men det ska komma klienter för åtminstone Linux. Jag har inga större svårigheter att köra Eureqa under Wine förutom att det alltså tar väldigt mycket kräm när det bearbetar data. Det installerades på min burk med följande kommando: wine msiexec /i eureqa_full_0.7.7.msi och kör det sedan med wine "/Eureqa.exe" Mer om systemet Eureqa har ett mycket trevligt GUI med olika tabbar för data, plottning/smoothing av data, modellering, start/stop och lösning. Dessa tabbar presenteras här kortfattat. * "Enter Data" Man kan skriva in data som i ett enkelt spreadsheet à la Open Office Calc eller Excel (vad jag vet stöds inte formler etc). Det sätt jag använder är dock att skapa en text fil (ASCII) som består av följande: - header med information om fälten. T.ex. % | x y z | där "%" är kommentar och de två "|" är avgränsare för variabelnamnen. Tänk på att det bör vara relativt korta namn annars kan det bli svårläst med mer komplexa uttryck. - sedan data med mellanslag som separator. För att hämta in en datafil används "File", "Import data...". Om det är fel i filen kommer mer eller mindre lättförståeliga felmeddelanden. Jag har inte testat så mycket att manuellt lägga in data via kalkylprogram men det ska gå. * "Preview Data" (och smoothing) I detta fönster man man se de olika värdena plottade i en x/y-graf. Man kan även göra en smoothing (vad jag förstår är det loess man använder), t.ex. om det är mycket brus för någon variabel. * "Pick Modeling Task" Här gör man själva modellen, dvs skapar förutsättningen för uttrycket. Se även nedan under "Modellering, n[...]



På Twitter: http://twitter.com/hakankj

2009-09-17T17:45:50+01:00

I dag bestämde jag mig att börja använda Twitter mer, och mer systematiskt. För tillfället innebär det primärt att jag notifierar om nya constraint programming-modeller (i stället för att vänta en vecka med att blogga om ett gäng nya modeller) och därmed relaterade saker, men även annat kan dyka upp. Det förra (constraint programming) kommer primärt att vara på engelska.

Min Twitter-sida är www.twitter.com/hakankj. Notera användarnamnet, med ett avslutande "j" (tyvärr var det vanliga namnet upptaget när jag registerade mig augusti 2008).




The Pop-11 programming language and Poplog environment

2009-08-30T09:26:50+01:00

First I must apologize for the Swedish readers for including an english text here: Sorry about that. I may do it again, but this blog has not permanently gone English. It has, however, changed its focus somewhat in other ways from the start in june 2003. Pop-11 and its environment Poplog is relatively unknown, originally designed for research and education in artificial intelligence. From What is Poplog: Poplog is an integrated toolkit providing a highly extendable collection of languages and tools for teaching, research and development. By default it includes incremental compilers for three powerful AI programming languages * Pop-11--the core language -- used to implement itself and the others; * Common Lisp; and * Prolog; as well as * Standard ML, a widely used functional language. ... Most of Poplog is implemented in Pop-11, including the incremental compilers for all four languages and the integrated programmable editor. Here I will mostly write about the programming language Pop-11, but also mention how it is possible to integrate Pop-11, Prolog, and Lisp. See the programs below. Pop-11/Poplog is a huge system which includes - besides the four languages mentioned above and the VED editor which is also used for the help/teach system - much material for learning the system, as well as learning artificial intelligence. "Huge" above refers to the content of the system, not to the actual memory "footprint". For more about the size, see the entry Size at the Free Poplog page. The language Pop-11 is Lisp-like in its approach but uses an Algol-like syntax. It has many of my favorite features of a programming language: interactive environment array/list comprehension pattern matching (on lists), and supports regular expressions functional programming, higher order functions multi-paradigm approach arbitrary precision Some larger teaching examples Here are some examples of the teach/help files. Many of these shows how to use a specific library, and some of them just teaches an artificial intelligence concept. Eliza, the famous Eliza program Analogy/Evans, Evans' Analogy program (simplified version) Poprulebase, rule based database, e.g. for expert system Objectclass, object oriented programming database, database for pattern matching etc matcher, the basic pattern matcher super, an extension of pattern matching in Pop-11's database super_example, more about SUPER grammar analysing sentences solver: a GPS and (General Problem Solver), STRIPS like solver solvems: another problem solving library storygrammar, generation of sentences given a grammar schemata SimAgent TOOLKIT, lists, how to use lists Documents and links Free Poplog Portal Teaching material Primer, probably the best way of start to learning Pop-11 Robin Popplestone's Pop-11 book (draft) How to think like a scientist, draft of Pop-11 version Rosetta Code: Pop-11 Poplog online Wikipedia: Pop-11 Mike Sharples, David Hogg, Chris Hutchison, Steve Torrance, David Young: Computers and Thought: A practical Introduction to Artificial Intelligence, online book on artificial intelligence using Pop-11 as programming language comp.lang.pop FAQ Wikipedia: POP-11 Jocelyn Paine in Dr Dobbs 'Dobbs Code Talk' (Mars 2009): Poplog, continuations, Eliza, AI education, and Prolog Mailing lists comp.lang.pop pop-forum pop-dev My Pop-11/Poplog page My Pop-11/Poplog page contains some of my Pop-11 programs. Some of them are the "mandatory" programs I always implement when learning a new programming language. Some of the program below requires functions from the GOSPL (Global Open Source Poplog Library) library, such as split, split_with. GOSPL was available from www.poplog.org, but that site seems to be defunct right now. The library is now available from www.cs.bham.ac.uk/research/projects/poplog/, or more specific here: gospl_1_2_0.tar.gz init.p init.p: My i[...]



En uppdatering om vad som händer

2009-08-05T19:50:24+01:00

Som tidigare nämts så är det på andra bloggen My Constraint Programming Blog det händer saker numera. Vad har hänt där då (sedan maj)? Faktiskt en hel del. Jag länkar inte till alla inlägg utan endast till några "high lights": Maj * Report from SweConsNet2009, including my presentation, som alltså är en rapport från villkorsprogrammeringsworkshopen SweConsNet09, där jag var med och föreläste en stund. Stora delar av maj gick åt till att förebereda för denna föreläsning. Juni * Lyckades efter ett antal genomläsningar av några olika skrifter förstå hur det globala villkoret (global constraint) cumulatives funkar i Gecode, och skrev om detta i Scheduling with the cumulatives constraint in Gecode . * Publicerade och bloggade om villkorsprogrammeringssystemet ECLiPSe (nej, det ska inte förväxlas med utveckligs-GUI:t). Det är ett riktigt trevligt Prolog-baserat system med mycket användbara utökningar såsom loopar och arrays som gör att man inte måste lösa allting med rekursioner och listor. Se vidare My ECLiPSe page som nu innehåller cirka 120 modeller; till största delen har just desamma utökningar används. Juli * Skapade ett samlingssida över de problem som modellerats i fler än ett villkorsprogrammeringssystem: Common constraint programming problems som presenterades i Common constraint programming problems. * Modellerade mina cirka 17 basmodeller ("learning models") i ett ytterligare villkorsprogrammeringssystem: Tailor, som konverterar Essence' (ett högnivåspråk liksom t.ex. MiniZinc och Comet) till Minion, Gecode eller FlatZinc (det som MiniZinc använder). Och det var just stödet av FlatZinc inspirerade till detta. Tailor presenterades i New Tailor version (v0.3.2) and My Essence'/Tailor page. Se mera på My Tailor/Essence' page. Augusti, idag faktiskt Följande når världen för första gången här, nämligen en liten MiniZinc-modell som löser Strimko-problem. Strimko är en mer avancerad variant av latinska kvadrater (alla rader respektive alla kolumner måste innehålla distinkta värden) där man även ska se till så att ytterligare villkor i form av en "strängar" av celler också måste vara olika. (Strimko är således inte helt väsensskilt från Sudoku.) MiniZinc-modellen är strimko.mzn med de tre probleminstanserna: strimko_067.dzn, strimko_068.dzn samt strimko_070.dzn. Inspiration till detta var från bloggen 360: A New Twist on Latin Squares. Till sist, för denna gång För en sammanställning över de olika villkorsprogrammeringssystem jag kikat (och fortfarande kikar) på, se översiktsidan med det passande - men i någon mån förutsägbara - namnet My Constraint Programming Page. [...]



spipat: SNOBOL/SPITBOL-patterns i C++ och Python

2009-05-03T09:42:43+01:00

spitpat är ett C/C++-bibliotek som implementerar SNOBOL/SPITBOL-patterns för C++ och Python. Så här presenteras spitpat i distributionens fil README: This is a transliteration (largely mechanincal translation) to C99 of the GNU Ada Translator (GNAT) SPITBOL.Pattern (spipat) package by Robert Dewar, the creator of SPITBOL GCC v3 provides all needed features. The primary goal is to enable embedding SNOBOL4 style patterns in popular scripting languages (ie; Ruby, Python, Perl, JavaScript), which are almost universally written in C. Testing and programming pattern construction in C is painful, due to the lack of operator overload. To hasten testing, I've written a C++ wrapper "Pattern" around the C spipat library. The goal is to enable testing, and provide an experience familiar to SNOBOL programmers. A more pure C++ approach might be to use method chaining to construct patterns, and to implement the entire package as a template that takes an arbitrary scalar type to represent a character. Naturligtvis är det Phil Budne som gjort denna translitterering; det är han som ligger bakom den fria SNOBOL4-implementationen CSNOBOL4 full av klockor och visslor. C++ Så här kan SNOBOL/SPITBOL se ut i C++: #include #include using namespace std; #include int main() { string subject1("Hello World!"); string hello("Hello"); Pattern hello_pattern(hello); Pattern world_pattern("World"); // pattern w/ concatenation Pattern p1 = hello_pattern & ' ' & world_pattern; Pattern p2 = hello_pattern & ' ' & world_pattern & Arb(); Pattern p3 = hello_pattern & Arb() & world_pattern; Matchres m1; cout [...]



Karl Wettin intervjuas om Lucene and Mahout

2009-04-28T21:07:39+01:00

Karl Wettin har blivit långintervjuad i Interview with Karl Wettin on Lucene and Mahout.

Grant Ingersoll talks to Karl Wettin, an Apache Lucene and Mahout Committer and independent Lucene Solr consultant. Karl talks about lexically complex European languages, using terms with shingles to simplify queries rather than complex span queries, and improving spellchecking with reinforcement learning, and looking at Mahout NLP.

Kul, Kalle!

Via Clas på Frisim som faktiskt lyckades avkoda att "Wolkan Schellestum" är mitt namn. (Jag har inte lyckats lyssna på ljudversionen; där är det kanske tydligare.)

Det skrevs för övrigt om Kalle anno 2003 i Silvertejp.




Mitt föredrag på SweConsNet Workshop 2009: "Learning Constraint Programming (MiniZinc, JaCoP, Choco, Gecode/R, Comet, Gecode): Some Lessons Learned"

2009-04-10T09:52:36+01:00

Sedan jag startade min engelskspåkiga My Constraint Programming Blog kring årsskiftet har jag fått flera nya kontakter och haft mycket intressanta maildiskussioner.

Några av dessa diskussioner har lett till att jag kommer att prata på SweConsNet Workshop 2009 27 maj 2009 i Linköping. SweConsNet (Network for Sweden-based researchers and practitioners of Constraint programming) presenteras mer här (Uppsala Universitet), workshoppen beskrivs även i bloggartikeln SweConsNet Workshop 2009.

Titeln på föredraget är Learning Constraint Programming (MiniZinc, JaCoP, Choco, Gecode/R, Comet, Gecode): Some Lessons Learned och kommer att innehålla findings funna under tiden jag kollat in och lärt mig olika constraint programming-system (och jag lär mig nya saker hela tiden), jämförelser mellan systemen och kanske ett och annat önskemål.

För mer om de system som kommer att tas upp, se vidare :

Tiden före den specialinriktade bloggen skrevs om dessa saker (främst MiniZinc, JaCoP samt Gecode/R) på denna svenska blogg i kategorin Constraint programming.

Under tiden jag förbereder föredraget planerar jag att blogga mer systematiskt kring de olika saker som kommer att tas upp.


Not: Jag skrev ungefär samma saker häromdagen i My talk at SweConsNet Workshop 2009: "Learning Constraint Programming (MiniZinc, JaCoP, Choco, Gecode/R, Comet, Gecode): Some Lessons Learned", men tyckte det kunde vara kul att skriva om det här också.




Lite om vad som händer på andra bloggen: My Constraint Programming Blog

2009-03-16T20:34:43+01:00

Som tidigare nämnts är det inte här utan på My Constraint Programming Blog ("Min villkorsprogrammeringsblogg") jag numera mest håller till. Här är en liten sammanfattning om vad som hänt där och i samband med detta. * En stor drös med Comet modeller på My Comet page. Några exempel: kenken.co samt kenken2.co: KenKen som enligt några är det nya Sudoku (det är Sudoku liknande). För mer om KenKen se Wikipedias KenKen. Kakuro Kakuro och Killer Sudoku. * En mycket mindre drös med MiniZinc-modeller på My MiniZinc page. Men de modeller som tagit mest tid är följande Nonogram Här är de blogganteckningarna som presenterar de olika varianterna, i normal sorterad tidordning: 1) More Comet models, e.g. Nonogram, Steiner triplets, and different set covering problems som presenterade den första Nonogram-modellen. Långsam var den. 2) Comet: regular constraint, a much faster Nonogram with the regular constraint, some OPL models, and more presenterade en mycket snabbare Nonogram-modell som använder principen bakom reguljära uttryck (villkoret regular). 3) samt slutligen Comet: Nonogram improved: solving problem P200 from 1:30 minutes to about 1 second där jag hittade lite mer saker att förbättra, bl.a. med hjälp av en av mina husgudar Pascal Van Hentenryck och som är en av skaparna av just Comet. Ungefär samtidigt kom jag i kontakt med gänget bakom Gecode (C++ baserat), det snabbate constraint programming-systemet som jag känner till. Roligt nog har de nu lagt in samma förbätring i sitt Nonogramprogram. Pi Day Sudoku I lördags var det Pi-dagen (3.14 som vissa skriver den 14 mars) och som hyllning skapade Brainfree Puzzles några dagar tidigare en tävling: Pi Day Sudoku 2009. Det är som vanliga Sudoku fast med knorr: förutom att det ska vara 1..9 på samtliga rader och kolumner ska det finnas exakt tre stycken Pi. Till detta kommer att man inte har de vanliga kvadratiska regionerna som kräver samma fördelning av siffror utan det är även olika former på regionerna (kolla sajten så förstår ni bättre). Jag har slutat med att lösa Sudokuproblem för hand, däremot var de speciella kriterierna ett intressant problem att modellera med villkorsprogrammering (constraint programming). Första modellen, som var rätt långsam, skrevs om i Pi Day Sudoku 2009. Efter lite funderande, och framförallt diskuterande med Mikael Zayenz Lagerkvist (från sagda Gecode team), snabbades modellen upp avsevärt. Detta beskrevs i Solving Pi Day Sudoku 2009 with the global cardinality constraint. Till förfång för alla de som som söker på Pi Day Sudoku har varken lösningen på problemet eller modellerna presenterats på bloggen (det blir inte förrän tävlingen är över). Gecode 3.0.0 Vi får ju inte heller glömma att version 3.0.0 av Gecode släpptes för några dagar sedan. Jag rekommenderar varmt den mycket trevliga introduktion till modellering i Gecode: Modeling with Gecode (PDF). I och med att version 3 har släppts kommer det inom kort även stöd för det grafiska verktyget Gist till MiniZinc, dvs när man har Gecode/FlatZinc som lösare (och det har man alltid som förstaval). Det ser jag mycket fram emot. Till sist: MiniZinc Challenge 2008 Resultat av constraint programming-tävlingen MiniZinc Challenge 2008 kom förra vecka. Inte förvånande vann Gecode. Mer om detta skrevs i MiniZinc Challenge 2008 Results. [...]



Bloggträff söndag 1 mars kl 17.00 på Kin Long i Malmö

2009-02-28T17:14:48+01:00

Söndagen den 1:a mars klockan 17.00 är det bloggträff på Kin Long i Malmö. Alla är välkomna. Meddela gärna att ni kommer så vi kan reservera bord för ungefär rätt antal. Anmäl antingen bland kommentarerna här eller via mail, hakank@bonetmail.com

Det finns också en Facebookgrupp Bloggträffar i Malmöregionen, öppen där alla får bli medlemmar.




Constraint programming modeller i Comet

2009-01-31T12:00:00+01:00

Den senaste veckan har constraint programming (och constraint-based local search) systemet Comet kollats in.

Systemet beskrivs i följande två anteckningar på My Constraint Programming Blog (det är där jag håller till mest nuförtiden):
* Comet version 1.1., där finns länkar och övergrippande information om systmet.
* I Some Comet constraint programming (CP) models , som innehåller kommentar om systemet, lite kodexempel samt länkar till modeller.

Mer information om systemet, samt några Comet-modeller finns på My Comet page.

I framtiden kommer jag bl.a. att kolla in mer hur man arbetar med constraint-based local search som klarar av att lösa mycket stora problem. Detta begrepp (med Comet som exempel) beskrivs i den trevliga och inspirerande boken Constraint-Based Local Search skriven av Pascal van av Hentenryck and Laurent Michel (huvudutvecklarna av Comet).




Constraint programming modeller i Gecode/R (Ruby interface till Gecode)

2009-01-15T20:46:50+01:00

För er som är intresserade av (eller åtminstone nyfikna på) både constraint programming och Ruby kan jag rekommendera Gecode/R, ett mycket trevligt system

Jag har den senaste tiden skapat en del Gecode/R-modeller och lagt dem på My Gecode/R page. Alldeles nyss skrevs om detta på min constraint programming blog: Some models in Gecode/R (Ruby interface to Gecode). Ni får läsa mer själva.




Isomorfa ord (Isomorphic Words) - programmet

2009-01-05T11:00:00+01:00

2004 skrevs programmet Isomorphic words som söker efter isomorfa ord till ett givet källord. Programmet och begreppet "isomorfa ord" presenterades i Isomorfa ord (Isomorphic Words).

För ett tag sedan kom en förfrågan om källkoden till programmet, varpå en CLI (Command Line Interface)-version av webb-programmet skapades. Tänkte nu att programmet likaväl kunde komma till allmänhetens fromma.

isomorphic_words.py
Programmet isomorphic_words.py är ett Pythonprogram som gör i stort sett allting som CGI-programmet gör. Syntaxen är:

     python isomorphic_words.py word exact_match language

där argumenten har följande betydelse:

* word: ordet som ska isomorferas.
* exact_match: 0 eller 1 (default 1). Om det ska göras en exakt match eller inte. Se ovanstående länkar för betydelsen av detta.
* language: Språk, eller snarare ordlista. CLI-programmet stöder endast språk "eng" som är kopplat till ordlistan /usr/dict/words (standardplaceringen i Linux). Av copyright-skäl etc lämnas inte den svenska ordlistan ut.


Exempel
Här är en exempelkörning på "ordet" (snarare strukturen) abbab, dvs att första och fjärde bokstäverna ska vara samma, och andra, tredje och femte bokstäverna ska vara samma. Ordlistan är /usr/dict/words, dvs engelska ord.


     python isomorphic_words.py abbab

Med resultatet:


Word: abbab
Word structure of 'abbab': [0, 1, 1, 0, 1]
Exact isomorphism: yes
Language: english
Print mappings: yes

beebe
2 chars: "a" -> "b"
3 chars: "b" -> "e"

esses
2 chars: "a" -> "e"
3 chars: "b" -> "s"

poopo
2 chars: "a" -> "p"
3 chars: "b" -> "o"

taata
2 chars: "a" -> "t"
3 chars: "b" -> "a"


It was 4 isomorphics words to 'abbab', with exact isomorphism: yes


Not
Om programmet används får det gärna refereras till ovanstående program och/eller till undertecknad.