import Optimize.ASA import Optimize.Parameter import Random f :: (Bool,(Double,Double)) -> Double f (tf,(x,y)) = if tf then x*x + y*y else x + x*x - log y g :: Either (Int,Int) Int -> Double g (Left (x,y)) = realToFrac $ x * y g (Right r) = pi*(realToFrac r)^2 main = do v1 <- minimize (empty,(limit (-10) 3, limit 4 7)) f v2 <- minimize (empty,(limit (-10) 3, limit 4 7)) (negate . f) v3 <- minimize ((limit 10 100,limit 3 1000), limit 4 1000) g v4 <- minimize ((limit 10 100,limit 3 1000), limit 4 1000) (negate . g) print v1 print v2 print v3 print v4