Practicum 2

Deze pagina beschrijft het 2e deel van de 2e practicumopgave. Het eerste deel is hier te vinden. Dit deel moet 31 oktober 2014 ingeleverd worden, samen met het eerste deel.

Overzicht

Het doel van het 2e deel is:

  • Experimenten te doen met je uitwerkingen
  • Een klein verslag te schrijven over deze uitwerking

Experimenten

Hier vind je een uitgebreide versie van de Europese Economische Regionen, waarbij voor elke regio is opgenomen tot welk land deze regio behoort.

Probeer nu voor elk land afzonderlijk te bepalen wat het minimaal aantal benodigde faciliteiten is, door gebruik te maken van drie methoden:

  • het zoekalgoritme van de eerste opgave
  • het CP zoekalgoritme "mistral"
  • de SAT solver

Bepaal voor elk systeem de rekentijd die nodig is om oplossingen te vinden voor elk van de landen. Je mag een systeem afbreken als het langer dan 10 minuten zoekt.

Probeer tenslotte het probleem ook op te lossen voor de gehele EER.

TIP 1: Kijk naar deze pagina, waar beschreven is hoe de signal module gebruikt kan worden om een functie te stoppen als deze te lang bezig is.

TIP 2: Python heeft een "maximum recursion depth"; Numberjack kan hierdoor soms grote problemen niet oplossen. Je kunt deze recursion depth vergroten met de commando's:

import sys
sys.setrecursionlimit(10000)

TIP 3: Om de SAT solver in Numberjack te gebruiken, moet je niet vergeten de verwijzingen naar Mistral te vervangen door verwijzingen naar MiniSat:

import MiniSat
...
solver = model.load ( 'MiniSat' )

Inleveren

Lever het volgende in:

  • Al de broncode die je geschreven hebt; houd er bij de uitwerking rekening mee dat ook de leesbaarheid van je code beoordeeld zal worden: het is belangrijk dat je commentaar opneemt, waar nuttig, en namen voor je variabelen kiest die informatief zijn. Functies moeten overzichtelijk zijn en niet te lang.
  • Een verslag, waarin je het volgende beschrijft:
    • de gebruikte Numberjack modellen, met gebruikmaking van wiskundige notatie
    • de experimentele resultaten