From 3f5d49190f1ea0b5152e0d19462720f88d43b919 Mon Sep 17 00:00:00 2001 From: Matei Adriel <rafaeladriel11@gmail.com> Date: Thu, 1 Apr 2021 19:29:27 +0300 Subject: [PATCH 1/4] feat: basic constraint solving --- purescript/factorio-throughput/.gitignore | 10 + purescript/factorio-throughput/packages.dhall | 27 ++ purescript/factorio-throughput/spago.dhall | 19 ++ purescript/factorio-throughput/src/Lens.purs | 62 +++++ purescript/factorio-throughput/src/Main.purs | 40 +++ .../factorio-throughput/src/Run/Fail.purs | 12 + .../factorio-throughput/src/Run/Reader.purs | 18 ++ .../factorio-throughput/src/Run/Visited.purs | 35 +++ .../factorio-throughput/src/Throughput.purs | 256 ++++++++++++++++++ purescript/factorio-throughput/test/Main.purs | 11 + 10 files changed, 490 insertions(+) create mode 100644 purescript/factorio-throughput/.gitignore create mode 100644 purescript/factorio-throughput/packages.dhall create mode 100644 purescript/factorio-throughput/spago.dhall create mode 100644 purescript/factorio-throughput/src/Lens.purs create mode 100644 purescript/factorio-throughput/src/Main.purs create mode 100644 purescript/factorio-throughput/src/Run/Fail.purs create mode 100644 purescript/factorio-throughput/src/Run/Reader.purs create mode 100644 purescript/factorio-throughput/src/Run/Visited.purs create mode 100644 purescript/factorio-throughput/src/Throughput.purs create mode 100644 purescript/factorio-throughput/test/Main.purs diff --git a/purescript/factorio-throughput/.gitignore b/purescript/factorio-throughput/.gitignore new file mode 100644 index 0000000..30efe19 --- /dev/null +++ b/purescript/factorio-throughput/.gitignore @@ -0,0 +1,10 @@ +/bower_components/ +/node_modules/ +/.pulp-cache/ +/output/ +/generated-docs/ +/.psc-package/ +/.psc* +/.purs* +/.psa* +/.spago diff --git a/purescript/factorio-throughput/packages.dhall b/purescript/factorio-throughput/packages.dhall new file mode 100644 index 0000000..665be90 --- /dev/null +++ b/purescript/factorio-throughput/packages.dhall @@ -0,0 +1,27 @@ +let upstream = + https://github.com/purescript/package-sets/releases/download/psc-0.14.0-20210324/packages.dhall sha256:b4564d575da6aed1c042ca7936da97c8b7a29473b63f4515f09bb95fae8dddab + +let additions = + { debugged = + { dependencies = + [ "prelude" + , "console" + , "ordered-collections" + , "either" + , "tuples" + , "lists" + , "strings" + , "arrays" + , "bifunctors" + , "record" + , "effect" + , "datetime" + , "enums" + , "unordered-collections" + ] + , repo = "https://github.com/hdgarrood/purescript-debugged" + , version = "master" + } + } + +in upstream // additions diff --git a/purescript/factorio-throughput/spago.dhall b/purescript/factorio-throughput/spago.dhall new file mode 100644 index 0000000..4e675bf --- /dev/null +++ b/purescript/factorio-throughput/spago.dhall @@ -0,0 +1,19 @@ +{- +Welcome to a Spago project! +You can edit this file as you like. +-} +{ name = "my-project" +, dependencies = + [ "console" + , "debug" + , "effect" + , "filterable" + , "profunctor-lenses" + , "psci-support" + , "run" + , "strings" + , "unordered-collections" + ] +, packages = ./packages.dhall +, sources = [ "src/**/*.purs", "test/**/*.purs" ] +} diff --git a/purescript/factorio-throughput/src/Lens.purs b/purescript/factorio-throughput/src/Lens.purs new file mode 100644 index 0000000..7c32d7b --- /dev/null +++ b/purescript/factorio-throughput/src/Lens.purs @@ -0,0 +1,62 @@ +module Functorio.Lens where + +import Prelude + +import Data.HashMap (HashMap) +import Data.HashMap as H +import Data.HashSet (HashSet) +import Data.HashSet as S +import Data.Hashable (class Hashable) +import Data.Lens (AGetter, Fold, Iso', Lens', Setter, iso, lens, over, preview, set, view) +import Data.Maybe (Maybe(..), maybe') +import Data.Maybe.First (First) +import Run (Run) +import Run.Reader (READER, ask) +import Run.State (STATE, get, modify) + +---------- Missing instances +atHashMap :: forall k v. Hashable k => k -> Lens' (HashMap k v) (Maybe v) +atHashMap k = + lens (H.lookup k) \m -> + maybe' (\_ -> H.delete k m) \v -> H.insert k v m + +-- | At implementation for hash sets +atHashSetRaw :: forall v. Hashable v => v -> Lens' (HashSet v) (Maybe Unit) +atHashSetRaw x = lens get (flip update) + where + get xs = + if S.member x xs + then Just unit + else Nothing + update Nothing = S.delete x + update (Just _) = S.insert x + +-- | Boolean implementation for AT on hash sets +atHashSet :: forall v. Hashable v => v -> Lens' (HashSet v) Boolean +atHashSet v = atHashSetRaw v <<< maybeUnitToBoolean + +-- | Helper fro implementing atHashSet' +maybeUnitToBoolean :: Iso' (Maybe Unit) Boolean +maybeUnitToBoolean = iso to from + where + from true = Just unit + from false = Nothing + + to Nothing = false + to _ = true + +--------- Helpers for monadic state +getAt :: forall s t a b r. AGetter s t a b -> Run (STATE s r) a +getAt optic = view optic <$> get + +getPreview :: forall r s t a b. Fold (First a) s t a b -> Run (STATE s r) (Maybe a) +getPreview optic = preview optic <$> get + +setAt :: forall s a b r. Setter s s a b -> b -> Run (STATE s r) Unit +setAt optic value = set optic value # modify + +modifyAt :: forall s a b r. Setter s s a b -> (a -> b) -> Run (STATE s r) Unit +modifyAt optic f = over optic f # modify + +askAt :: forall s t a b r. AGetter s t a b -> Run (READER s r) a +askAt optic = ask <#> view optic \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Main.purs b/purescript/factorio-throughput/src/Main.purs new file mode 100644 index 0000000..ae3eebb --- /dev/null +++ b/purescript/factorio-throughput/src/Main.purs @@ -0,0 +1,40 @@ +module Main where + +import Prelude + +import Data.Compactable (compact) +import Data.Either (Either(..)) +import Data.Foldable (for_) +import Data.HashMap as HashMap +import Data.String (joinWith) +import Data.Tuple (Tuple(..)) +import Data.Tuple.Nested ((/\)) +import Effect (Effect) +import Effect.Class.Console (logShow) +import Effect.Console (log) +import RealFunction (PortSide(..), RealFunction, SolveM, _constraints, collectConstraints, myFactory, runSolveM, tryFindBound) +import Run.Except (runFail) +import Run.Reader.Extra (fromState') + +p :: SolveM (Array RealFunction) +p = do + collectConstraints + a <- fromState' _constraints $ runFail $ tryFindBound (0 /\ Input) + b <- fromState' _constraints $ runFail $ tryFindBound (0 /\ Output) + c <- fromState' _constraints $ runFail $ tryFindBound (1 /\ Input) + d <- fromState' _constraints $ runFail $ tryFindBound (1 /\ Output) + e <- fromState' _constraints $ runFail $ tryFindBound (2 /\ Input) + f <- fromState' _constraints $ runFail $ tryFindBound (2 /\ Output) + g <- fromState' _constraints $ runFail $ tryFindBound (4 /\ Input) + h <- fromState' _constraints $ runFail $ tryFindBound (4 /\ Output) + pure $ compact [a, b, c, d, e, f, g, h] + +main :: Effect Unit +main = do + for_ (HashMap.toArrayBy Tuple myFactory) \(Tuple key value) -> log $ show key <> ": " <> show value + + case runSolveM myFactory p of + Left err -> log err + Right (Tuple s f) -> do + log $ joinWith "\n" $ show <$> s.constraints + logShow $ f <*> pure 0.0 \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Run/Fail.purs b/purescript/factorio-throughput/src/Run/Fail.purs new file mode 100644 index 0000000..d94aeaa --- /dev/null +++ b/purescript/factorio-throughput/src/Run/Fail.purs @@ -0,0 +1,12 @@ +module Run.Fail.Extra where + +import Prelude + +import Data.Compactable (class Compactable, compact) +import Data.Traversable (class Traversable, traverse) +import Run (Run) +import Run.Except (FAIL, runFail) + +-- | `Compact` / `MapMaybe` usnig the `Fail` ability +traverseFail :: forall r t a b. Compactable t => Traversable t => (a -> Run (FAIL r) b) -> t a -> Run r (t b) +traverseFail f = traverse (f >>> runFail) >>> map compact \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Run/Reader.purs b/purescript/factorio-throughput/src/Run/Reader.purs new file mode 100644 index 0000000..b2836c2 --- /dev/null +++ b/purescript/factorio-throughput/src/Run/Reader.purs @@ -0,0 +1,18 @@ +module Run.Reader.Extra where + +import Prelude + +import Data.Lens (AGetter) +import Functorio.Lens (getAt) +import Run (Run) +import Run.Reader (READER, runReader) +import Run.State (STATE, get) +import Type.Row (type (+)) + +-- | Use state from the environemtn to eliminate a reader monad. +fromState :: forall r s a. Run (STATE s + READER s r) a -> Run (STATE s r) a +fromState m = get >>= flip runReader m + +-- | Focus on some state in the environemtn to eliminate a reader monad. +fromState' :: forall s t a b r x. AGetter s t a b -> Run (STATE s + READER a r) x -> Run (STATE s r) x +fromState' optic m = getAt optic >>= flip runReader m \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Run/Visited.purs b/purescript/factorio-throughput/src/Run/Visited.purs new file mode 100644 index 0000000..97322b0 --- /dev/null +++ b/purescript/factorio-throughput/src/Run/Visited.purs @@ -0,0 +1,35 @@ +-- | Allows the programmer to limit a monad to only run once (using a key) +module Visited (VISITED, runVisited, once) where + +import Prelude + +import Data.HashSet (HashSet) +import Data.HashSet as HashSet +import Data.Hashable (class Hashable) +import Run (Run) +import Run.State (State, evalStateAt, getAt, modifyAt) +import Type.Proxy (Proxy(..)) + +-- | Monad keeping track of all the runned monad' keys +type VISITED a r = ( visited :: State (HashSet a) | r ) + +-- | Eliminate the Visited effect +runVisited :: forall d a r. Hashable d => Run (VISITED d r) a -> Run r a +runVisited = evalStateAt _visited mempty + +-- | Mark a key as visited +visit :: forall a r. Hashable a => a -> Run (VISITED a r) Unit +visit e = modifyAt _visited $ HashSet.insert e + +-- | Condition a monad to only run once. +-- | The first argument is a key, +-- | and the second is a default value to use when the monad has already run. +once :: forall d a r. Hashable d => d -> Run (VISITED d r) a -> Run (VISITED d r) a -> Run (VISITED d r) a +once at default m = do + visited <- getAt _visited + if HashSet.member at visited + then default + else visit at *> m + +_visited :: Proxy "visited" +_visited = Proxy \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Throughput.purs b/purescript/factorio-throughput/src/Throughput.purs new file mode 100644 index 0000000..7a4d3d6 --- /dev/null +++ b/purescript/factorio-throughput/src/Throughput.purs @@ -0,0 +1,256 @@ +module RealFunction where + +import Prelude + +import Data.Array (length, mapWithIndex) +import Data.Array as Array +import Data.Either (Either) +import Data.Foldable (for_, minimum) +import Data.FoldableWithIndex (forWithIndex_) +import Data.Generic.Rep (class Generic) +import Data.HashMap (HashMap) +import Data.HashMap as HashMap +import Data.HashMap as Map +import Data.Int (toNumber) +import Data.Lens (Lens') +import Data.Lens.Record (prop) +import Data.List (List(..), (:)) +import Data.List as List +import Data.Maybe (Maybe(..), fromJust, fromMaybe) +import Data.Number (infinity) +import Data.Show.Generic (genericShow) +import Data.Traversable (for) +import Data.Tuple (Tuple(..), uncurry) +import Data.Tuple.Nested (type (/\), (/\)) +import Functorio.Lens (getAt, modifyAt) +import Partial.Unsafe (unsafeCrashWith, unsafePartial) +import Run (Run, extract) +import Run.Except (EXCEPT, fail, runExcept) +import Run.Fail.Extra (traverseFail) +import Run.Reader (READER, ask, runReader) +import Run.State (STATE, runState) +import Type.Proxy (Proxy(..)) +import Type.Row (type (+)) +import Visited (VISITED, once, runVisited) + +type RealFunction = Number -> Number +type BeltConfig = + { speed :: Number + , delay :: Number } + +type ChestConfig = + { maxContent :: Number + , delay :: Number } + +type PortId = Int +type MachineId = Int + +data PortSide = Input | Output + +data Machine + = Belt { input :: PortId, output :: PortId, config :: BeltConfig } + | Chest { inputs :: Array PortId, outputs :: Array PortId, config :: ChestConfig } + | Provider (Array PortId) RealFunction + | Consumer PortId + +type Factory = HashMap MachineId Machine + +---------- Some configs +yellowBelt :: BeltConfig +yellowBelt = { speed: 15.0, delay: 1.0/3.0 } + +redBelt :: BeltConfig +redBelt = { speed: 30.0, delay: 1.0/6.0 } + +blueBelt :: BeltConfig +blueBelt = { speed: 45.0, delay: 1.0/8.0 } + +-- | Example factory +myFactory :: Factory +myFactory = Map.fromArray machines + where + machines = mapWithIndex Tuple + [ Provider [0, 1, 2] $ const 80.0 + , Belt { input: 0, output: 3, config: yellowBelt } + , Belt { input: 1, output: 4, config: redBelt } + , Belt { input: 2, output: 5, config: blueBelt } + , Consumer 3 + , Consumer 4 + , Consumer 5 + ] + +---------- Monad for factory solving +type PortData = + { id :: PortId + , maxInput :: Number -> Number + , maxOutput :: Number -> Number } + +data ConstraintExpression + = PortDependent (Array PortId) (Array PortData -> RealFunction) + | Function RealFunction + | Literal Number + +type BiRelationship = + { p1top2 :: RealFunction + , p2top1 :: RealFunction + , p1 :: PortId /\ PortSide + , p2 :: PortId /\ PortSide } + +type BiRelationshipId = Int + +data ThroughputConstraint + = Limit ConstraintExpression PortSide PortId + | BiRelationship BiRelationshipId BiRelationship + +type Constraints = Array ThroughputConstraint + +type SolveState = + { constraints :: Constraints + , lastId :: Int } + +type SolveM = Run + ( EXCEPT String + + STATE SolveState + + READER Factory + + () ) + +runSolveM :: forall a. Factory -> SolveM a -> Either String (Tuple SolveState a) +runSolveM factory = runReader factory >>> runState initialState >>> runExcept >>> extract + +initialState :: SolveState +initialState = { constraints: [], lastId: 0 } + +focusBiRelationship :: PortId /\ PortSide -> BiRelationship -> Maybe BiRelationship +focusBiRelationship place relationship | relationship.p1 == place = Just relationship + | relationship.p2 == place = Just $ flipBiRelationship relationship + | otherwise = Nothing + +flipBiRelationship :: BiRelationship -> BiRelationship +flipBiRelationship { p1, p2, p1top2, p2top1 } = { p1: p2, p2: p1, p1top2: p2top1, p2top1: p1top2 } + +---------- System solving algorithm +constrain :: ThroughputConstraint -> SolveM Unit +constrain constraint = modifyAt _constraints $ push constraint + where + push = flip Array.snoc + +getId :: SolveM Int +getId = modifyAt _lastId ((+) 1) *> getAt _lastId + +collectConstraints :: SolveM Unit +collectConstraints = do + factory <- ask + for_ (HashMap.toArrayBy (/\) $ factory) $ uncurry collectConstraintsImpl + +getPortData :: forall r. PortId -> Run (READER Constraints r) PortData +getPortData id = ado + maxInput <- tryFindBound $ id /\ Input + maxOutput <- tryFindBound $ id /\ Output + in { id, maxInput, maxOutput } + +evalExpr :: forall r. ConstraintExpression -> Run (READER Constraints r) RealFunction +evalExpr = case _ of + Literal a -> pure (const a) + Function f -> pure f + PortDependent portIds f -> for portIds getPortData <#> f + +tryFindBound :: forall r. PortId /\ PortSide -> Run (READER Constraints r) RealFunction +tryFindBound at = tryFindBoundImpl at <#> \f time -> extract $ runVisited $ f time + +tryFindBoundImpl :: forall r k. + PortId /\ PortSide -> + Run (READER Constraints r) (Number -> Run (VISITED BiRelationshipId k) Number) +tryFindBoundImpl (targetId /\ targetSide) = do + constraints <- ask + pure \time -> constraints + # traverseFail case _ of + Limit expr side id | side == targetSide && id == targetId -> + evalExpr expr <*> pure time + BiRelationship id raw + | Just relationship <- focusBiRelationship (targetId /\ targetSide) raw -> do + f <- once id fail $ tryFindBoundImpl relationship.p2 + f (relationship.p1top2 time) + _ -> fail + # runReader constraints + <#> minimum' + where + minimum' = minimum >>> fromMaybe infinity + +collectConstraintsImpl :: MachineId -> Machine -> SolveM Unit +collectConstraintsImpl at = case _ of + Provider for amount -> do + forWithIndex_ for \index id -> do + let limit ports time + = outputs ports time + # Array.findMap (\(id' /\ f) -> if id == id' then Just (f time) else Nothing) + # unsafePartial fromJust -- TODO: error handling + constrain $ Limit (PortDependent for limit) Input id + where + outputs :: Array PortData -> Number -> Array (PortId /\ RealFunction) + outputs ports time + = outputsImpl (length ports) (List.fromFoldable sorted) amount + # Array.fromFoldable + # Array.zipWith (_.id >>> Tuple) sorted + where + sorted :: Array PortData + sorted = Array.sortWith (_.maxOutput >>> (#) time) ports + + outputsImpl :: Int -> List PortData -> RealFunction -> List RealFunction + outputsImpl 1 (head:Nil) remaining = pure \time -> min (head.maxOutput time) (remaining time) + outputsImpl n (head:tail) remaining = current:(outputsImpl (n - 1) tail $ remaining - current) + where + current time + | head.maxOutput time >= (remaining time) / (toNumber n) = (remaining time) / (toNumber n) + | otherwise = head.maxOutput time + outputsImpl _ _ _ = Nil + + Consumer for -> pure unit + Belt { input, output, config } -> do + biId <- getId + + constrain $ BiRelationship biId + { p1: input /\ Output + , p2: output /\ Input + , p1top2: (+) config.delay + , p2top1: (+) (-config.delay) } + + constrain $ Limit (Literal config.speed) Output input + constrain $ Limit (Literal config.speed) Input output + + _ -> unsafeCrashWith "unimplemented" + +---------- Lenses +_lastId :: Lens' SolveState Int +_lastId = prop (Proxy :: _ "lastId") + +_constraints :: Lens' SolveState (Array ThroughputConstraint) +_constraints = prop (Proxy :: _ "constraints") + +---------- Typeclass instances +derive instance genericMachine :: Generic Machine _ +derive instance genericPortSide :: Generic PortSide _ +derive instance eqPortSide :: Eq PortSide + +instance showMachine :: Show Machine where + show = case _ of + Provider for _ -> "Provider<" <> show for <> ">" + Consumer for -> "Consumer<" <> show for <> ">" + Belt { config, input, output } -> "Belt<" <> show input <> " -> " <> show output <> ", " <> show config <> ">" + Chest { inputs, outputs, config } -> "Chest<" <> show inputs <> " -> " <> show outputs <> ", " <> show config <> ">" + +instance showConstraint :: Show ThroughputConstraint where + show = case _ of + Limit f side id -> show f <> " !> " <> showPort (id /\ side) + BiRelationship _ { p1, p2 } -> showPort p1 <> " <-> " <> showPort p2 + where + showPort (p /\ side) = "?" <> show p <> case side of + Input -> "<-" + Output -> "<-" + +instance showConstraintExpression :: Show ConstraintExpression where + show (Literal i) = show i + show (Function f) = "<Function>" + show (PortDependent ids f) = "(" <> show ids <> " -> <Function>)" + +instance showPortSide :: Show PortSide where + show = genericShow \ No newline at end of file diff --git a/purescript/factorio-throughput/test/Main.purs b/purescript/factorio-throughput/test/Main.purs new file mode 100644 index 0000000..f91f98c --- /dev/null +++ b/purescript/factorio-throughput/test/Main.purs @@ -0,0 +1,11 @@ +module Test.Main where + +import Prelude + +import Effect (Effect) +import Effect.Class.Console (log) + +main :: Effect Unit +main = do + log "🍝" + log "You should add some tests." From fe0816d037b77524378f7bd244a6801376237898 Mon Sep 17 00:00:00 2001 From: Matei Adriel <rafaeladriel11@gmail.com> Date: Sun, 4 Apr 2021 00:36:18 +0300 Subject: [PATCH 2/4] build: basic esbuild setup --- purescript/factorio-throughput/.gitignore | 1 + purescript/factorio-throughput/build.js | 22 ++ purescript/factorio-throughput/package.json | 13 + purescript/factorio-throughput/pnpm-lock.yaml | 228 ++++++++++++++++++ purescript/factorio-throughput/spago.dhall | 5 + purescript/factorio-throughput/src/index.html | 20 ++ 6 files changed, 289 insertions(+) create mode 100644 purescript/factorio-throughput/build.js create mode 100644 purescript/factorio-throughput/package.json create mode 100644 purescript/factorio-throughput/pnpm-lock.yaml create mode 100644 purescript/factorio-throughput/src/index.html diff --git a/purescript/factorio-throughput/.gitignore b/purescript/factorio-throughput/.gitignore index 30efe19..ba2464c 100644 --- a/purescript/factorio-throughput/.gitignore +++ b/purescript/factorio-throughput/.gitignore @@ -8,3 +8,4 @@ /.purs* /.psa* /.spago +dist diff --git a/purescript/factorio-throughput/build.js b/purescript/factorio-throughput/build.js new file mode 100644 index 0000000..c64fa04 --- /dev/null +++ b/purescript/factorio-throughput/build.js @@ -0,0 +1,22 @@ +const esbuild = require("esbuild"); +const PurescriptPlugin = require("esbuild-plugin-purescript"); +const path = require("path"); + +const isProd = process.env.NODE_ENV === "production"; + +esbuild + .build({ + entryPoints: ["src/index.js"], + bundle: true, + outdir: "dist", + watch: !isProd, + plugins: [ + PurescriptPlugin({ + output: isProd ? path.resolve(__dirname, "dce-output") : undefined, + }), + ], + define: { + global: "window", + }, + }) + .catch((_e) => process.exit(1)); diff --git a/purescript/factorio-throughput/package.json b/purescript/factorio-throughput/package.json new file mode 100644 index 0000000..3f7309f --- /dev/null +++ b/purescript/factorio-throughput/package.json @@ -0,0 +1,13 @@ +{ + "name": "moontorio", + "scripts": { + "build": "node build.js" + }, + "dependencies": { + "calculess": "^1.0.2", + "esbuild": "^0.11.4", + "esbuild-plugin-purescript": "^1.0.0", + "events": "^3.3.0", + "function-plot": "^1.22.7" + } +} diff --git a/purescript/factorio-throughput/pnpm-lock.yaml b/purescript/factorio-throughput/pnpm-lock.yaml new file mode 100644 index 0000000..780fc52 --- /dev/null +++ b/purescript/factorio-throughput/pnpm-lock.yaml @@ -0,0 +1,228 @@ +dependencies: + calculess: 1.0.2 + esbuild: 0.11.4 + esbuild-plugin-purescript: 1.0.0 + events: 3.3.0 + function-plot: 1.22.7 +lockfileVersion: 5.1 +packages: + /@types/assert/1.5.4: + dev: false + resolution: + integrity: sha512-CaFVW21Ulu0J9sUaEWJjwmhkDkeoxa4fniVSERzZC13sU9v8NNM2lMlkfZZv60j47D+qDt0Lyo8skVP3CTXUdA== + /built-in-math-eval/0.3.0: + dependencies: + math-codegen: 0.3.5 + dev: false + resolution: + integrity: sha1-JA3CHLOJQ5WIxhxGDrAHZJfvxBw= + /calculess/1.0.2: + dev: false + resolution: + integrity: sha512-9VCZJhW9fp7JmMgn6aTZ0U8NhcbJRFdD3vPlaYWMKIVIH1z4F/ZgDZKqx28fABjn4HaM4VT1ZoQzsONvI2LrCA== + /clamp/1.0.1: + dev: false + resolution: + integrity: sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ= + /d3-array/2.12.1: + dependencies: + internmap: 1.0.1 + dev: false + resolution: + integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + /d3-axis/2.1.0: + dev: false + resolution: + integrity: sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw== + /d3-color/2.0.0: + dev: false + resolution: + integrity: sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== + /d3-dispatch/2.0.0: + dev: false + resolution: + integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA== + /d3-drag/2.0.0: + dependencies: + d3-dispatch: 2.0.0 + d3-selection: 2.0.0 + dev: false + resolution: + integrity: sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w== + /d3-ease/2.0.0: + dev: false + resolution: + integrity: sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ== + /d3-format/2.0.0: + dev: false + resolution: + integrity: sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== + /d3-interpolate/2.0.1: + dependencies: + d3-color: 2.0.0 + dev: false + resolution: + integrity: sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== + /d3-path/2.0.0: + dev: false + resolution: + integrity: sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== + /d3-scale/3.2.4: + dependencies: + d3-array: 2.12.1 + d3-format: 2.0.0 + d3-interpolate: 2.0.1 + d3-time: 2.0.0 + d3-time-format: 3.0.0 + dev: false + resolution: + integrity: sha512-PG6gtpbPCFqKbvdBEswQcJcTzHC8VEd/XzezF5e68KlkT4/ggELw/nR1tv863jY6ufKTvDlzCMZvhe06codbbA== + /d3-selection/2.0.0: + dev: false + resolution: + integrity: sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA== + /d3-shape/2.1.0: + dependencies: + d3-path: 2.0.0 + dev: false + resolution: + integrity: sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA== + /d3-time-format/3.0.0: + dependencies: + d3-time: 2.0.0 + dev: false + resolution: + integrity: sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + /d3-time/2.0.0: + dev: false + resolution: + integrity: sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== + /d3-timer/2.0.0: + dev: false + resolution: + integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA== + /d3-transition/2.0.0_d3-selection@2.0.0: + dependencies: + d3-color: 2.0.0 + d3-dispatch: 2.0.0 + d3-ease: 2.0.0 + d3-interpolate: 2.0.1 + d3-selection: 2.0.0 + d3-timer: 2.0.0 + dev: false + peerDependencies: + d3-selection: '2' + resolution: + integrity: sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog== + /d3-zoom/2.0.0: + dependencies: + d3-dispatch: 2.0.0 + d3-drag: 2.0.0 + d3-interpolate: 2.0.1 + d3-selection: 2.0.0 + d3-transition: 2.0.0_d3-selection@2.0.0 + dev: false + resolution: + integrity: sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw== + /double-bits/1.1.1: + dev: false + resolution: + integrity: sha1-WKu6RUlNpND6Nrc60RoobJGEscY= + /esbuild-plugin-purescript/1.0.0: + dev: false + resolution: + integrity: sha512-WdSdRtpm5AoRyDj3vEnmLsMsTY9kl3znRUTQe5ilbtcK/JIJv3Nz6d8lsEA079vmWgjc3JtR7Ii1y1omoz/wLg== + /esbuild/0.11.4: + dev: false + hasBin: true + requiresBuild: true + resolution: + integrity: sha512-qWGlOOTwyTn4f846LoR47Mif4Aek4rY9ChdXN7q7G15HpDYq3pxwnPFWe2os/jOq8naFh2Z+FqWfkq8ZP6kATw== + /events/3.3.0: + dev: false + engines: + node: '>=0.8.x' + resolution: + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + /extend/3.0.2: + dev: false + resolution: + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + /function-plot/1.22.7: + dependencies: + built-in-math-eval: 0.3.0 + clamp: 1.0.1 + d3-axis: 2.1.0 + d3-color: 2.0.0 + d3-format: 2.0.0 + d3-interpolate: 2.0.1 + d3-scale: 3.2.4 + d3-selection: 2.0.0 + d3-shape: 2.1.0 + d3-zoom: 2.0.0 + interval-arithmetic-eval: 0.4.7 + dev: false + resolution: + integrity: sha512-rB6FeVqvgNECmt5PhIvFFEOyEjM9AWLIpMkj9Nzbzq9f81Irgn3ZrXAuv5+qnuzM99jPL7ZM4kK3+ImiKXcSHA== + /internmap/1.0.1: + dev: false + resolution: + integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + /interval-arithmetic-eval/0.4.7: + dependencies: + interval-arithmetic: 1.0.6 + math-codegen: 0.3.5 + dev: false + resolution: + integrity: sha512-ClK+N4efbsgjlZR8h0qd0LQbyzUzJ9IkrjmTnD5MVb4Ytebd0lesoVP4AxLclcsEI+nIieskQ8cepHIWUPaRhQ== + /interval-arithmetic/1.0.6: + dependencies: + '@types/assert': 1.5.4 + is-safe-integer: 2.0.0 + nextafter: 1.0.0 + typedarray: 0.0.6 + dev: false + resolution: + integrity: sha512-eVotDGYPNiEaJ63oa4CeEHgOczZJ3gNHqG5wfVQ2o8sN2CEczQyR82Sjey/Bp36x8e7PtBcBvitcMnw6VUpjgQ== + /is-safe-integer/2.0.0: + dependencies: + max-safe-integer: 1.0.1 + deprecated: This package is no longer relevant as ES2015 support is widespread. + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-eDaA39/1+3SNtYTRP28lRYOHMwiB1gfqXQaXcf/+f4mLwKgm8TTDkwJldsdtbgrK1R5CoDbf6AQ0KqP7BKoGtQ== + /math-codegen/0.3.5: + dependencies: + extend: 3.0.2 + mr-parser: 0.2.1 + dev: false + resolution: + integrity: sha1-R5nuRnfe0Ud2bQA8ykt4ee3UDMo= + /max-safe-integer/1.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-84BgvixWPYwC5tSK85Ei/YO29BA= + /mr-parser/0.2.1: + dev: false + resolution: + integrity: sha1-hhi5ukF+KOn0OaQcaVtVTq/u2Sc= + /nextafter/1.0.0: + dependencies: + double-bits: 1.1.1 + dev: false + resolution: + integrity: sha1-t9d7U1MQ4+CX5gJauwqQNHfsGjo= + /typedarray/0.0.6: + dev: false + resolution: + integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +specifiers: + calculess: ^1.0.2 + esbuild: ^0.11.4 + esbuild-plugin-purescript: ^1.0.0 + events: ^3.3.0 + function-plot: ^1.22.7 diff --git a/purescript/factorio-throughput/spago.dhall b/purescript/factorio-throughput/spago.dhall index 4e675bf..e94d276 100644 --- a/purescript/factorio-throughput/spago.dhall +++ b/purescript/factorio-throughput/spago.dhall @@ -10,7 +10,12 @@ You can edit this file as you like. , "filterable" , "profunctor-lenses" , "psci-support" + , "quickcheck" + , "quickcheck-laws" , "run" + , "spec" + , "spec-discovery" + , "spec-quickcheck" , "strings" , "unordered-collections" ] diff --git a/purescript/factorio-throughput/src/index.html b/purescript/factorio-throughput/src/index.html new file mode 100644 index 0000000..44dacf4 --- /dev/null +++ b/purescript/factorio-throughput/src/index.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Moontorio</title> + + <script defer src="../dist/index.js"></script> + + <style> + body { + display: flex; + flex-wrap: wrap; + } + </style> +</head> +<body> +</body> +</html> \ No newline at end of file From 0bb81bfc46f54838613fd9e4b02839aa35ca6d79 Mon Sep 17 00:00:00 2001 From: Matei Adriel <rafaeladriel11@gmail.com> Date: Sun, 4 Apr 2021 00:37:14 +0300 Subject: [PATCH 3/4] feat: basic rendering --- purescript/factorio-throughput/src/Main.purs | 39 ++++---- .../factorio-throughput/src/Render.purs | 18 ++++ .../factorio-throughput/src/Run/Id.purs | 33 +++++++ .../factorio-throughput/src/Throughput.purs | 90 ++++++++++++++----- purescript/factorio-throughput/src/index.js | 38 ++++++++ 5 files changed, 172 insertions(+), 46 deletions(-) create mode 100644 purescript/factorio-throughput/src/Render.purs create mode 100644 purescript/factorio-throughput/src/Run/Id.purs create mode 100644 purescript/factorio-throughput/src/index.js diff --git a/purescript/factorio-throughput/src/Main.purs b/purescript/factorio-throughput/src/Main.purs index ae3eebb..0f2e3fd 100644 --- a/purescript/factorio-throughput/src/Main.purs +++ b/purescript/factorio-throughput/src/Main.purs @@ -2,39 +2,34 @@ module Main where import Prelude -import Data.Compactable (compact) import Data.Either (Either(..)) -import Data.Foldable (for_) -import Data.HashMap as HashMap -import Data.String (joinWith) import Data.Tuple (Tuple(..)) import Data.Tuple.Nested ((/\)) import Effect (Effect) -import Effect.Class.Console (logShow) import Effect.Console (log) -import RealFunction (PortSide(..), RealFunction, SolveM, _constraints, collectConstraints, myFactory, runSolveM, tryFindBound) -import Run.Except (runFail) -import Run.Reader.Extra (fromState') +import Moontorio.Render (RenderFn, renderFactory) +import RealFunction (PortSide(..), RealFunction, SolveM, collectConstraints, myFactory, runSolveM, tryFindBoundSolveM) p :: SolveM (Array RealFunction) p = do collectConstraints - a <- fromState' _constraints $ runFail $ tryFindBound (0 /\ Input) - b <- fromState' _constraints $ runFail $ tryFindBound (0 /\ Output) - c <- fromState' _constraints $ runFail $ tryFindBound (1 /\ Input) - d <- fromState' _constraints $ runFail $ tryFindBound (1 /\ Output) - e <- fromState' _constraints $ runFail $ tryFindBound (2 /\ Input) - f <- fromState' _constraints $ runFail $ tryFindBound (2 /\ Output) - g <- fromState' _constraints $ runFail $ tryFindBound (4 /\ Input) - h <- fromState' _constraints $ runFail $ tryFindBound (4 /\ Output) - pure $ compact [a, b, c, d, e, f, g, h] + a <- tryFindBoundSolveM (0 /\ Input) + b <- tryFindBoundSolveM (0 /\ Output) + c <- tryFindBoundSolveM (1 /\ Input) + d <- tryFindBoundSolveM (1 /\ Output) + e <- tryFindBoundSolveM (2 /\ Input) + f <- tryFindBoundSolveM (2 /\ Output) + g <- tryFindBoundSolveM (4 /\ Input) + h <- tryFindBoundSolveM (4 /\ Output) + pure [a, b, c, d, e, f, g, h] -main :: Effect Unit -main = do - for_ (HashMap.toArrayBy Tuple myFactory) \(Tuple key value) -> log $ show key <> ": " <> show value +main :: RenderFn -> Effect Unit +main render = do + -- for_ (HashMap.toArrayBy Tuple myFactory) \(Tuple key value) -> log $ show key <> ": " <> show value case runSolveM myFactory p of Left err -> log err Right (Tuple s f) -> do - log $ joinWith "\n" $ show <$> s.constraints - logShow $ f <*> pure 0.0 \ No newline at end of file + renderFactory render myFactory s.constraints + -- log $ joinWith "\n" $ show <$> s.constraints + -- logShow $ f <*> pure 0.0 \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Render.purs b/purescript/factorio-throughput/src/Render.purs new file mode 100644 index 0000000..ab7391b --- /dev/null +++ b/purescript/factorio-throughput/src/Render.purs @@ -0,0 +1,18 @@ +module Moontorio.Render where + +import Prelude + +import Data.Foldable (for_) +import Data.Tuple.Nested ((/\)) +import Effect (Effect) +import RealFunction (Constraints, Factory, PortSide(..), RealFunction, factoryPorts, tryFindBoundPure, tryFindValuePure) + +type RenderFn = String -> Array RealFunction -> Effect Unit + +renderFactory :: RenderFn -> Factory -> Constraints -> Effect Unit +renderFactory render factory constraints = for_ (factoryPorts factory) \portId -> do + let inputMax = tryFindBoundPure (portId /\ Input) constraints + let outputMax = tryFindBoundPure (portId /\ Output) constraints + let actual = tryFindValuePure portId constraints + + render ("Port " <> show portId) [inputMax, outputMax, actual] \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Run/Id.purs b/purescript/factorio-throughput/src/Run/Id.purs new file mode 100644 index 0000000..962de55 --- /dev/null +++ b/purescript/factorio-throughput/src/Run/Id.purs @@ -0,0 +1,33 @@ +module Run.Supply where + +import Prelude + +import Data.Tuple (Tuple(..)) +import Run (Run, Step(..), lift, on, runAccumPure) +import Type.Proxy (Proxy(..)) + +-- | Monad providing an infinite supply of values of a particular type. +-- | Example use cases: generating unique ids. +data SupplyF s a = Supply (s -> a) + +type SUPPLY s r = ( supply :: SupplyF s | r ) + +generate :: forall r s. Run (SUPPLY s r) s +generate = lift _supply (Supply identity) + +-- | Elimininate the supply monad using a function generating the next value +runSupply :: forall r s a. (s -> s) -> s -> Run (SUPPLY s r) a -> Run r a +runSupply next + = runAccumPure + (next >>> \current -> on _supply (Loop <<< handleSupply current) Done) + (\s a -> a) + where + handleSupply :: forall i. s -> SupplyF s i -> Tuple s i + handleSupply current (Supply continue) = Tuple current (continue current) + +---------- Typeclass instances +derive instance functorSupply :: Functor (SupplyF s) + +--------- SProxies +_supply :: Proxy "supply" +_supply = Proxy \ No newline at end of file diff --git a/purescript/factorio-throughput/src/Throughput.purs b/purescript/factorio-throughput/src/Throughput.purs index 7a4d3d6..1f03ea7 100644 --- a/purescript/factorio-throughput/src/Throughput.purs +++ b/purescript/factorio-throughput/src/Throughput.purs @@ -5,12 +5,13 @@ import Prelude import Data.Array (length, mapWithIndex) import Data.Array as Array import Data.Either (Either) -import Data.Foldable (for_, minimum) +import Data.Foldable (foldMap, for_, minimum) import Data.FoldableWithIndex (forWithIndex_) import Data.Generic.Rep (class Generic) import Data.HashMap (HashMap) import Data.HashMap as HashMap import Data.HashMap as Map +import Data.HashSet as HashSet import Data.Int (toNumber) import Data.Lens (Lens') import Data.Lens.Record (prop) @@ -20,15 +21,18 @@ import Data.Maybe (Maybe(..), fromJust, fromMaybe) import Data.Number (infinity) import Data.Show.Generic (genericShow) import Data.Traversable (for) -import Data.Tuple (Tuple(..), uncurry) +import Data.Tuple (Tuple(..), fst, uncurry) import Data.Tuple.Nested (type (/\), (/\)) -import Functorio.Lens (getAt, modifyAt) +import Functorio.Lens (modifyAt) +import Math (sin) import Partial.Unsafe (unsafeCrashWith, unsafePartial) import Run (Run, extract) import Run.Except (EXCEPT, fail, runExcept) import Run.Fail.Extra (traverseFail) import Run.Reader (READER, ask, runReader) +import Run.Reader.Extra (fromState') import Run.State (STATE, runState) +import Run.Supply (SUPPLY, generate, runSupply) import Type.Proxy (Proxy(..)) import Type.Row (type (+)) import Visited (VISITED, once, runVisited) @@ -57,28 +61,34 @@ type Factory = HashMap MachineId Machine ---------- Some configs yellowBelt :: BeltConfig -yellowBelt = { speed: 15.0, delay: 1.0/3.0 } +yellowBelt = { speed: 15.0, delay: 4.0/3.0 } redBelt :: BeltConfig -redBelt = { speed: 30.0, delay: 1.0/6.0 } +redBelt = { speed: 30.0, delay: 4.0/6.0 } blueBelt :: BeltConfig -blueBelt = { speed: 45.0, delay: 1.0/8.0 } +blueBelt = { speed: 45.0, delay: 4.0/8.0 } -- | Example factory myFactory :: Factory myFactory = Map.fromArray machines where machines = mapWithIndex Tuple - [ Provider [0, 1, 2] $ const 80.0 + [ Provider [0, 1] $ startsAtZero $ \t -> 40.0 + 10.0 * sin t , Belt { input: 0, output: 3, config: yellowBelt } , Belt { input: 1, output: 4, config: redBelt } - , Belt { input: 2, output: 5, config: blueBelt } + -- , Belt { input: 2, output: 5, config: blueBelt } , Consumer 3 , Consumer 4 - , Consumer 5 ] +---------- Helpers for real functions +type Endomorphism a = a -> a + +startsAtZero :: Endomorphism RealFunction +startsAtZero f x | x >= 0.0 = f x + | otherwise = 0.0 + ---------- Monad for factory solving type PortData = { id :: PortId @@ -105,38 +115,44 @@ data ThroughputConstraint type Constraints = Array ThroughputConstraint type SolveState = - { constraints :: Constraints - , lastId :: Int } + { constraints :: Constraints } type SolveM = Run ( EXCEPT String + STATE SolveState + READER Factory + + SUPPLY Int + () ) runSolveM :: forall a. Factory -> SolveM a -> Either String (Tuple SolveState a) -runSolveM factory = runReader factory >>> runState initialState >>> runExcept >>> extract - -initialState :: SolveState -initialState = { constraints: [], lastId: 0 } +runSolveM factory = runReader factory >>> runState mempty >>> runExcept >>> runSupply ((+) 1) 0 >>> extract focusBiRelationship :: PortId /\ PortSide -> BiRelationship -> Maybe BiRelationship focusBiRelationship place relationship | relationship.p1 == place = Just relationship | relationship.p2 == place = Just $ flipBiRelationship relationship | otherwise = Nothing +focusBiRelationshipWithoutSide :: PortId -> BiRelationship -> Maybe BiRelationship +focusBiRelationshipWithoutSide id relationship | fst relationship.p1 == id = Just relationship + | fst relationship.p2 == id = Just $ flipBiRelationship relationship + | otherwise = Nothing + flipBiRelationship :: BiRelationship -> BiRelationship flipBiRelationship { p1, p2, p1top2, p2top1 } = { p1: p2, p2: p1, p1top2: p2top1, p2top1: p1top2 } +factoryPorts :: Factory -> HashSet.HashSet PortId +factoryPorts = foldMap case _ of + Belt { input, output } -> HashSet.fromArray [input, output] + Provider outputs _ -> HashSet.fromArray outputs + Chest { inputs, outputs } -> HashSet.fromArray (inputs <> outputs) + Consumer input -> HashSet.singleton input + ---------- System solving algorithm constrain :: ThroughputConstraint -> SolveM Unit constrain constraint = modifyAt _constraints $ push constraint where push = flip Array.snoc -getId :: SolveM Int -getId = modifyAt _lastId ((+) 1) *> getAt _lastId - collectConstraints :: SolveM Unit collectConstraints = do factory <- ask @@ -157,6 +173,12 @@ evalExpr = case _ of tryFindBound :: forall r. PortId /\ PortSide -> Run (READER Constraints r) RealFunction tryFindBound at = tryFindBoundImpl at <#> \f time -> extract $ runVisited $ f time +tryFindBoundSolveM :: PortId /\ PortSide -> SolveM RealFunction +tryFindBoundSolveM at = fromState' _constraints $ tryFindBound at + +tryFindBoundPure :: PortId /\ PortSide -> Constraints -> RealFunction +tryFindBoundPure at constraints = extract $ runReader constraints $ tryFindBound at + tryFindBoundImpl :: forall r k. PortId /\ PortSide -> Run (READER Constraints r) (Number -> Run (VISITED BiRelationshipId k) Number) @@ -174,7 +196,29 @@ tryFindBoundImpl (targetId /\ targetSide) = do # runReader constraints <#> minimum' where - minimum' = minimum >>> fromMaybe infinity + minimum' = minimum >>> fromMaybe 0.0 + +tryFindValue :: forall r. PortId -> Run (READER Constraints r) RealFunction +tryFindValue at = tryFindValueImpl at <#> \f time -> extract $ runVisited $ f time + +tryFindValueImpl :: forall r k. PortId -> Run (READER Constraints r) (Number -> Run (VISITED BiRelationshipId k) Number) +tryFindValueImpl targetId = do + constraints <- ask + pure \time -> constraints + # traverseFail case _ of + Limit expr _ id | id == targetId -> evalExpr expr <*> pure time + BiRelationship id raw + | Just relationship <- focusBiRelationshipWithoutSide targetId raw -> do + f <- once id fail $ tryFindValueImpl $ fst relationship.p2 + f (relationship.p1top2 time) + _ -> fail + # runReader constraints + <#> minimum' + where + minimum' = minimum >>> fromMaybe 0.0 + +tryFindValuePure :: PortId -> Constraints -> RealFunction +tryFindValuePure at constraints = extract $ runReader constraints $ tryFindValue at collectConstraintsImpl :: MachineId -> Machine -> SolveM Unit collectConstraintsImpl at = case _ of @@ -204,9 +248,10 @@ collectConstraintsImpl at = case _ of | otherwise = head.maxOutput time outputsImpl _ _ _ = Nil - Consumer for -> pure unit + Consumer for -> do + constrain $ Limit (Literal infinity) Output for Belt { input, output, config } -> do - biId <- getId + biId <- generate constrain $ BiRelationship biId { p1: input /\ Output @@ -220,9 +265,6 @@ collectConstraintsImpl at = case _ of _ -> unsafeCrashWith "unimplemented" ---------- Lenses -_lastId :: Lens' SolveState Int -_lastId = prop (Proxy :: _ "lastId") - _constraints :: Lens' SolveState (Array ThroughputConstraint) _constraints = prop (Proxy :: _ "constraints") diff --git a/purescript/factorio-throughput/src/index.js b/purescript/factorio-throughput/src/index.js new file mode 100644 index 0000000..5e19d4b --- /dev/null +++ b/purescript/factorio-throughput/src/index.js @@ -0,0 +1,38 @@ +import { main } from "Main.purs"; +import functionPlot from "function-plot"; + +let lastId = 0; +const root = document.body; + +const width = 400; +const height = 250; + +const render = (name) => (functions) => () => { + const currentId = ++lastId; + + console.log("Renering!!!"); + + const node = document.createElement("div"); + node.id = currentId; + node.title = name; + node.className = "graph"; + + root.appendChild(node); + + const functionData = functions.map((fn) => ({ + fn: (scope) => fn(scope.x), + graphType: "polyline", + })); + + functionPlot({ + target: node, + width, + height, + yAxis: { domain: [-5, 35] }, + xAxis: { domain: [-1, 5] }, + grid: true, + data: functionData, + }); +}; + +main(render)(); From 3f6091369ab8d32fafc1d504eed2af0f435525c0 Mon Sep 17 00:00:00 2001 From: Matei Adriel <rafaeladriel11@gmail.com> Date: Sun, 4 Jun 2023 15:29:29 +0200 Subject: [PATCH 4/4] Commiting some old changes --- purescript/factorio-throughput/.gitignore | 5 + .../factorio-throughput/idea/example.pdf | Bin 0 -> 59080 bytes .../factorio-throughput/idea/example.tex | 94 ++++++++++++++++++ purescript/factorio-throughput/idea/hmm.pdf | Bin 0 -> 72050 bytes purescript/factorio-throughput/idea/hmm.tex | 77 ++++++++++++++ .../factorio-throughput/src/Throughput.purs | 60 ++++++----- .../factorio-throughput/src/Utils/Ord.purs | 33 ++++++ 7 files changed, 244 insertions(+), 25 deletions(-) create mode 100644 purescript/factorio-throughput/idea/example.pdf create mode 100644 purescript/factorio-throughput/idea/example.tex create mode 100644 purescript/factorio-throughput/idea/hmm.pdf create mode 100644 purescript/factorio-throughput/idea/hmm.tex create mode 100644 purescript/factorio-throughput/src/Utils/Ord.purs diff --git a/purescript/factorio-throughput/.gitignore b/purescript/factorio-throughput/.gitignore index ba2464c..1349821 100644 --- a/purescript/factorio-throughput/.gitignore +++ b/purescript/factorio-throughput/.gitignore @@ -9,3 +9,8 @@ /.psa* /.spago dist +*.aux +*.fls +*.fdb_* +*.synctex* +*.log diff --git a/purescript/factorio-throughput/idea/example.pdf b/purescript/factorio-throughput/idea/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..17cd036dc6723b93f6b7673fc9480d5e79ce60fb GIT binary patch literal 59080 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 F0syM{`^W$Q literal 0 HcmV?d00001 diff --git a/purescript/factorio-throughput/idea/example.tex b/purescript/factorio-throughput/idea/example.tex new file mode 100644 index 0000000..bc199bd --- /dev/null +++ b/purescript/factorio-throughput/idea/example.tex @@ -0,0 +1,94 @@ +\documentclass[a4paper, 12pt]{article} + +\newcommand{\bold}{\textbf} + +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{tikz} +\usepackage{indentfirst} + +\begin{document} + +\newcommand{\q2}{\quad\quad} + +\title{\Large{\bold{Moontorio}}} +\author{Matei Adriel} +\date {} + +\maketitle + +\section{Example 1} + +Solve the following factory: + +\vspace*{20pt} +\begin{figure}[h] +\centering +\begin{tikzpicture}[shorten >=1pt, auto, node distance={30mm}, + main/.style = {draw, rectangle}] + +\node[main] (3) {$consumer_1$}; +\node[main] (1) [above left of=3] {$provider_1$}; +\node[main] (2) [below left of=3] {$provider_2$}; +\node[main] (4) [right of=2] {$consumer_2$}; + +\draw[->] (1) edge node{$p_1$} (3); +\draw[->] (2) edge node{$p_2$} (3); +\draw[->] (2) edge node{$p_3$} (4); + +\end{tikzpicture} +\caption{Factory} +\label{fig:Factory} +\end{figure} + +Generating the constraints: +\begin{figure}[h] +\centering + +\begin{equation} + p_1(t) < provider_1(t) +\end{equation} + +\begin{equation} + p_3(t) < consumer_2(t) +\end{equation} + +\begin{equation} +\begin{split} + \begin{cases} + \begin{cases} + p_2(t) &< \displaystyle\frac{consumer_1(t)}{2}\\ + p_1(t) &< consumer_1(t) - p_2(t) + \end{cases} + \ ,&\;\mbox{if } p_1(t) \geq p_2(t)\\\\ + \begin{cases} + p_1(t) &< \displaystyle\frac{consumer_1(t)}{2}\\ + p_2(t) &< consumer_1(t) - p_1(t) + \end{cases} + \ ,&\;\mbox{if } p_1(t) < p_2(t) + \end{cases} +\end{split} +\end{equation} + +\begin{equation} +\begin{split} + \begin{cases} + \begin{cases} + p_3(t) &< \displaystyle\frac{provider_2(t)}{2}\\ + p_2(t) &< provider_2(t) - p_3(t) + \end{cases} + \ ,&\;\mbox{if } p_2(t) \geq p_3(t)\\\\ + \begin{cases} + p_2(t) &< \displaystyle\frac{provider_2(t)}{2}\\ + p_3(t) &< provider_2(t) - p_3(t) + \end{cases} + \ ,&\;\mbox{if } p_2(t) < p_3(t) + \end{cases} +\end{split} +\end{equation} + +\caption{Constraints} +\label{fig:Constraints} +\end{figure} + +\end{document} diff --git a/purescript/factorio-throughput/idea/hmm.pdf b/purescript/factorio-throughput/idea/hmm.pdf new file mode 100644 index 0000000000000000000000000000000000000000..69f6bf8c0d2e083b553d6d3459c15bb35069fb73 GIT binary patch literal 72050 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�`lshV|d3DF<ENk$m&@u8C>W*DXCHc4@{6|9qV#v$pOO zzO(3t&h=Su&Hi4AD?4Xm<@~Mt<_0PM*PF7=P1*iaHZ1Pn=SN>&{8<0*;=P?A5i_1B z$HYr@?k(BzHsWmAl%reygtmu0$f>rIzI5}MlFIL&Up7ee=Na<oJx*!6R;Hr6Z_VeE z6+iyenP|>9@gp<#&R*u}hL4}W^*%PC@AjTW%rE)xJ^%fu<N2R1{>p>-KRWt<+Ui$U z#((HKUvc*JdDZ`)(l;MIC{Y#qz2mRmgYx$EeZQC)?5cKhZkWa*p}z8f>6hCLU$-;7 z_b_hnIsHUv<Fwc#=YPrtoHyh@y?ghZc=b2i57<4NoMiU6yt74fzSz|rd-7&hJea@B zCSxZr|MT?xc=<XHo0j#L8>-8kn~$h|xPIZmVK=E`f8r1AVDiXke(~YY)!UcL8A>)? zT)&L-Nr&}c{|AEqPp_=4JHY;jSEl;def>Gsn(wXk^z7`O2wVJOt52>ocHDAbO-XI- zVa-<$OLlqsb<N)OGBl+?j#FOV>(1#*KC|VvhXyWDajf`o{!gK4<d(Z_mmh!L&(H7I zahcb!Njr14R@@&UzrD9lXij8|(a!i2rnvwAtG^5QO_s|qxgqd*;#-&LN%t=L7Id;d zsMC4Yd!yrp*7~puIiV-c^|9;o^9#-LJtxSJ{4z?UAo|nC@P?aj=IvQ^>iqTa$s#L0 zJ9eGXbKAVo<KThAp>x|zIL}u9T;uWow~giEFpY)zOfT<mJh)@l)h)7j+Km6H<+BGl zUjO~EwAOm@dCq9*czgY8J*!I}o0asQ-eB@>oB6)5CD(Iim);J#A^KSMNm=#dY}V4V zJF1gn@{(+G@~gLgSTmFFeu+ivw>z8uF`l~Kb!1hp^1PyVyLM!nY|q=aec!Yz*~jLy zNMD`SntOR+jIF8febclriH{lECcIyN{JL@3#Tw@cXOFW@y|A{H|K)QH)~6cTB0Bri z|FF+vWzzyxUBx9usfpmq9aM>#m}1mo5kaYGT>74QDXA3-(FO`8X0crQ!I@R53MOV; z`r!)Eh6=_ChOu1wLHYS53MR%11`0tS<!Si}CZP5Kh~uIVZDZtW;AG-v;Oge=;$mrL zVrJ@UY;5FWZfb67=<Mq1Xkn*7SV=5w>5_t>u_>hHQ~*`1IVGt@3i@t2i6yBnsmb{% zsi0~Z>amJjvZr<mHZh2_JdCxmuwiih;BcacN9V)|uQ`UsTcnt{3f~;s$WUtj^V$6G zVhsBj1$tdIlpGnEG()0|>~~2S3LN}@`)63^)*BsBZ;r(E9GSrJUhcS(ps=B+v7xx8 z;QYO(JA&Vy>O6gLtHL_{>yuu{uWPEf7o+{?@@}t-lOmZnRXt{}D(C%%8PvrkiA5z9 UMX70A=7wfwrd+D3uKsRZ07X_SoB#j- literal 0 HcmV?d00001 diff --git a/purescript/factorio-throughput/idea/hmm.tex b/purescript/factorio-throughput/idea/hmm.tex new file mode 100644 index 0000000..2eeb8d2 --- /dev/null +++ b/purescript/factorio-throughput/idea/hmm.tex @@ -0,0 +1,77 @@ +\documentclass[a4paper, 12pt]{article} + +\newcommand{\bold}{\textbf} + +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{tikz} +\usepackage{indentfirst} + +\begin{document} + +\newcommand{\q2}{\quad\quad} + +\title{\Large{\bold{Moontorio}}} +\author{Matei Adriel} +\date {} + +\maketitle + +\section{Describing a factory} + +A factory is made out of machines. A machine is either a provider, a belt or a consumer. Machines are connected by ports. + +\begin{figure}[h] + +\begin{equation} +\begin{split} +Machines\ A,\ B,\ C\ &::=\; belt\ p_i\ p_o \\ + &\quad|\quad provider\ p_1,\ p_2,\ ...\ p_n \\ + &\quad|\quad consumer\ p_1,\ p_2,\ ...\ p_n +\end{split} +\end{equation} +\caption{Machines} +\label{Machines} +\end{figure} + +We can represent the factory as a directed graph, with the machines being the nodes and the ports being the edges: + +\vspace*{20pt} +\begin{figure}[h] +\centering +\begin{tikzpicture}[shorten >=1pt, auto, node distance={50mm}, + main/.style = {draw, rectangle}] + +\node[main] (1) {$provider_1$}; +\node[main] (2) [right of=1] {$belt_1$}; +\node[main] (3) [right of=2] {$consumer_1$}; + +\draw[->] (1) edge node{$p_1$} (2); +\draw[->] (2) edge node{$p_2$} (3); + +\end{tikzpicture} +\caption{Example of a simple factory} +\label{SimpleFactory} +\end{figure} + +\section{Constraints} +The first step of the factory solving process is the constraint generation. +We currently use 3 different types of constraints (Figure \ref{Constraints}). +Let's take them one step at a time. The first two constrains ( + $p_k(t) <_{\Leftarrow} f(t)$ and $p_k(t) <_{\Rightarrow} f(t)$ +) are pretty similar, both limiting the flow through a port. + +\begin{figure}[ht] + +\begin{equation} +\begin{split} +Constraints\quad C_k\ &::=\; p_k(t) <_{\Leftarrow} f(t) \\ + &\quad|\quad p_k(t) <_{\Rightarrow} f(t) \\ + &\quad|\quad p_1(t) = p_2(f(t)) +\end{split} +\end{equation} +\caption{Constraints} +\label{Constraints} +\end{figure} + +\end{document} diff --git a/purescript/factorio-throughput/src/Throughput.purs b/purescript/factorio-throughput/src/Throughput.purs index 1f03ea7..a9fe5ad 100644 --- a/purescript/factorio-throughput/src/Throughput.purs +++ b/purescript/factorio-throughput/src/Throughput.purs @@ -6,7 +6,7 @@ import Data.Array (length, mapWithIndex) import Data.Array as Array import Data.Either (Either) import Data.Foldable (foldMap, for_, minimum) -import Data.FoldableWithIndex (forWithIndex_) +import Data.FoldableWithIndex (foldlWithIndex, forWithIndex_) import Data.Generic.Rep (class Generic) import Data.HashMap (HashMap) import Data.HashMap as HashMap @@ -16,12 +16,11 @@ import Data.Int (toNumber) import Data.Lens (Lens') import Data.Lens.Record (prop) import Data.List (List(..), (:)) -import Data.List as List import Data.Maybe (Maybe(..), fromJust, fromMaybe) import Data.Number (infinity) import Data.Show.Generic (genericShow) import Data.Traversable (for) -import Data.Tuple (Tuple(..), fst, uncurry) +import Data.Tuple (Tuple(..), fst, snd, uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Functorio.Lens (modifyAt) import Math (sin) @@ -70,8 +69,8 @@ blueBelt :: BeltConfig blueBelt = { speed: 45.0, delay: 4.0/8.0 } -- | Example factory -myFactory :: Factory -myFactory = Map.fromArray machines +myFactory1 :: Factory +myFactory1 = Map.fromArray machines where machines = mapWithIndex Tuple [ Provider [0, 1] $ startsAtZero $ \t -> 40.0 + 10.0 * sin t @@ -82,6 +81,19 @@ myFactory = Map.fromArray machines , Consumer 4 ] +myFactory :: Factory +myFactory = Map.fromArray machines + where + machines = mapWithIndex Tuple + [ Provider [0, 1, 2] $ startsAtZero $ \t -> 80.0 + , Belt { input: 0, output: 3, config: yellowBelt } + , Belt { input: 1, output: 4, config: redBelt } + , Belt { input: 2, output: 5, config: blueBelt } + , Consumer 3 + , Consumer 4 + , Consumer 5 + ] + ---------- Helpers for real functions type Endomorphism a = a -> a @@ -190,7 +202,7 @@ tryFindBoundImpl (targetId /\ targetSide) = do evalExpr expr <*> pure time BiRelationship id raw | Just relationship <- focusBiRelationship (targetId /\ targetSide) raw -> do - f <- once id fail $ tryFindBoundImpl relationship.p2 + f <- once id fail $ tryFindValueImpl $ fst relationship.p2 f (relationship.p1top2 time) _ -> fail # runReader constraints @@ -225,29 +237,27 @@ collectConstraintsImpl at = case _ of Provider for amount -> do forWithIndex_ for \index id -> do let limit ports time - = outputs ports time - # Array.findMap (\(id' /\ f) -> if id == id' then Just (f time) else Nothing) - # unsafePartial fromJust -- TODO: error handling + = ports + # map (\port -> port.id /\ port.maxOutput time) + # outputs (amount time) + # Array.findMap (\(id' /\ f) -> if id == id' then Just f else Nothing) + # unsafePartial fromJust constrain $ Limit (PortDependent for limit) Input id where - outputs :: Array PortData -> Number -> Array (PortId /\ RealFunction) - outputs ports time - = outputsImpl (length ports) (List.fromFoldable sorted) amount + outputs :: Number -> Array (PortId /\ Number) -> Array (PortId /\ Number) + outputs total ports + = ports + # Array.sortWith snd + # foldlWithIndex (\index (past /\ remaining) (id /\ value) -> do + let current + | lengthLeft <- remaining / toNumber (count - index), value >= lengthLeft = lengthLeft + | otherwise = value + ((id /\ current):past) /\ (remaining - current)) + (Nil /\ total) + # fst # Array.fromFoldable - # Array.zipWith (_.id >>> Tuple) sorted where - sorted :: Array PortData - sorted = Array.sortWith (_.maxOutput >>> (#) time) ports - - outputsImpl :: Int -> List PortData -> RealFunction -> List RealFunction - outputsImpl 1 (head:Nil) remaining = pure \time -> min (head.maxOutput time) (remaining time) - outputsImpl n (head:tail) remaining = current:(outputsImpl (n - 1) tail $ remaining - current) - where - current time - | head.maxOutput time >= (remaining time) / (toNumber n) = (remaining time) / (toNumber n) - | otherwise = head.maxOutput time - outputsImpl _ _ _ = Nil - + count = length ports Consumer for -> do constrain $ Limit (Literal infinity) Output for Belt { input, output, config } -> do diff --git a/purescript/factorio-throughput/src/Utils/Ord.purs b/purescript/factorio-throughput/src/Utils/Ord.purs new file mode 100644 index 0000000..02bdc90 --- /dev/null +++ b/purescript/factorio-throughput/src/Utils/Ord.purs @@ -0,0 +1,33 @@ +module Moontorio.Ord.Extra (Side, left, right, OrderedArray, binarySearch) where + +import Prelude + +import Data.Array (length, unsafeIndex) +import Data.Maybe (Maybe(..)) +import Partial.Unsafe (unsafePartial) + +type OrderedArray = Array +newtype Side = Side Boolean + +left :: Side +left = Side false + +right :: Side +right = Side true + +binarySearch :: forall a. (Int -> a -> Side) -> OrderedArray a -> Maybe Int +binarySearch f arr = unsafePartial $ findImpl 0 (length arr) + where + findImpl :: Partial => _ + findImpl start length | length == 0 = Nothing + | length == 1 = Just start + | otherwise = do + let middle = start + length / 2 + let element = unsafeIndex arr middle + if f middle element == left then + findImpl start (middle - start) + else + findImpl middle (length + start - middle) + +---------- Typeclass instances +derive instance eqSide :: Eq Side \ No newline at end of file