Advertisement
gatoatigrado3

nnet code

Nov 19th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Copyright 2012 gatoatigrado (nicholas tung) [ntung at ntung]
  2. -- Licensed under the Apache License, Version 2.0 (the "License"); you may
  3. -- not use this file except in compliance with the License. You may obtain a
  4. -- copy of the License at http://www.apache.org/licenses/LICENSE-2.0 .
  5.  
  6. -- enable to remove excess imports {-# OPTIONS_GHC -fwarn-unused-imports #-}
  7. {-# LANGUAGE Arrows,
  8.              BangPatterns,
  9.              ConstraintKinds,
  10.              DefaultSignatures,
  11.              DeriveDataTypeable,
  12.              EmptyDataDecls,
  13.              FlexibleContexts,
  14.              FlexibleInstances,
  15.              FunctionalDependencies,
  16.              GADTs,
  17.              GeneralizedNewtypeDeriving,
  18.              ImpredicativeTypes,
  19.              MultiParamTypeClasses,
  20.              NamedFieldPuns,
  21.              NoMonomorphismRestriction,
  22.              RankNTypes,
  23.              ScopedTypeVariables,
  24.              StandaloneDeriving,
  25.              TemplateHaskell,
  26.              TupleSections,
  27.              TypeFamilies,
  28.              TypeOperators,
  29.              TypeSynonymInstances,
  30.              UndecidableInstances,
  31.              ViewPatterns #-}
  32.  
  33. module Test where
  34.  
  35. import Prelude hiding (id, (.))
  36. import Control.Arrow
  37. import Control.Applicative
  38. import Control.Category
  39. -- import Control.Exception
  40. import Control.Monad
  41. import Control.Monad.Trans.Class
  42. -- import Control.Monad.ST
  43. -- import Control.Monad.State
  44.  
  45. -- import qualified Data.Map as Map
  46. -- import qualified Data.List as List
  47. -- import qualified Data.List.HT as HT
  48. import qualified Data.List.Key as Key
  49. -- import Data.Maybe
  50. -- import Data.StateRef
  51.  
  52. -- import Debug.Trace
  53.  
  54. import Text.Printf
  55.  
  56. newtype Node = Node Char deriving (Eq, Ord, Show)
  57.  
  58. data Weight = Weight Node Node Float
  59.  
  60. nodes = map Node "abcde"
  61.  
  62. weights = [
  63.     Weight (Node 'a') (Node 'c') 1,
  64.     Weight (Node 'b') (Node 'c') 1,
  65.     Weight (Node 'a') (Node 'd') (-2),
  66.     Weight (Node 'c') (Node 'd') 2,
  67.     Weight (Node 'd') (Node 'e') 3,
  68.     Weight (Node 'c') (Node 'e') 2,
  69.     Weight (Node 'b') (Node 'e') (-3)]
  70.  
  71. assns :: [[Node]]
  72. assns = assign_nodes "abcde" where
  73.     assign_nodes [] = return []
  74.     assign_nodes (x:xs) = do
  75.         (++) <$> assign x <*> assign_nodes xs
  76.         where
  77.             assign (Node -> c) = [[], [c]]
  78.  
  79. energy :: [Weight] -> [Node] -> Float
  80. energy [] _ = 0
  81. energy ((Weight x y w):ws) nodes
  82.     | elem x nodes && elem y nodes = w + energy ws nodes
  83.     | otherwise = energy ws nodes
  84.  
  85. byEnergy = Key.sort (energy weights) assns
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement