GithubHelp home page GithubHelp logo

graceful-project / grace Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 5.0 4.85 MB

The Constraint Functional Programming DSL for the GRACeFUL project.

License: BSD 3-Clause "New" or "Revised" License

Haskell 99.64% Shell 0.25% Makefile 0.11%
dsl ghc stack

grace's People

Contributors

alexgerdes avatar bjonor avatar maximilianalgehed avatar oskarabrahamsson avatar patrikja avatar rubenpieters avatar solrun avatar tritlo avatar vitalis-wiens avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grace's Issues

JSON output format

Currently our solver outputs a result with the following format:
'{"result":"[{\"rainfall4\" : 10.0,\n\"inflow5\" : 10.0,\n\"outflow5\" : 10.0,\n\"inflow6\" : 10.0}\n]"}'
where "result" is a string instead of a proper JSON object.

We should be able to change this with some simple modifications to the Res type and submit function in RestAPI/Main.hs.

Composable libraries

We should be able to define new libraries by combining and extending previously defined libraries (without having to copy all the code over or alter the original library file).

Create guidelines for contributions and agree of code of conduct etc.

Hello,

There is potentially going to be more than 5 people working on this code base.
To ensure that this works out well Björn and I discussed setting up some guidelines
and routine to make sure that new contributions do not break the library etc.

Maybe we need to have a short meeting to make sure everyone agrees on what
the rules are etc. I would like to do this before the holiday season.

Any comments and thoughts would be appreciated.

Haskelzinc syntax problem

To reproduce:

stack build
stack exec Examples

Output:

Results via old compiler:
{"total cost" : 27,
"pump operation" : 3,
"pump increased" : 1,
"storage increased" : 13,
"overflow" : 0,
"inflow" : 20,
"is flooded" : false}
,

Results via haskelzinc:
model.mzn:25:
constraint 0 < v11 = v12;
                   ^
Error: syntax error, unexpected =

Examples: callCommand: mzn2fzn model.mzn (exit 1): failed

Module Structure

Can we fix the module structure, something like:

GCM.hs
CP.hs
Compiler.hs
Compiler/
    Compiler0.hs
GRACe.hs
GCMP.hs
GCMP/
    GCMPInternal.hs
    GCMPTesting.hs

Rename docker images

eugraceful/generic-library := eugraceful/grace-examples

Also please share the scripting needed (dockerfile etc.) for future uploads.

Make install instructions start with Docker

Please use the text from the deliverable to update the install instructions in the README file to start with the easy way (using docker) and only then describe "developer install instructions" (~= what is there now).

/P

Include CLD as a library

We need to include the CLD code as a library and document with the VisualEditor group how to translate a CLD to these components.

MiniZinc issues

Hello everyone,

I've been trying to get MiniZinc working on a new computer
and there is no_way_in_hell to get it to work. All distributions,
from the one in the debian repositories to the version on the
MiniZinc website, are broken.

Has anyone managed to compile MiniZinc from source?
Does anyone know how to get everything to work?

Update documentation

  • Our README.md is not up to date, it has intructions that no longer work and lacks information about the web service.
  • Need to go through code and update documentation.

Compiler bug

Parameters not attached to actions behave like
unconstrained decision variables as a result of
the "a#" variable not being set to false. Someone
fix please...

Permissions

I was denied permission to push to this repo, can somebody look into/fix that? Adding it to the DSL team might be a good idea.

Testing and verification

We are setting out to write an optimising compiler. If we are going to do this correctly we will need
a test suite to make sure our optimisations are correct. I suggest some form of property based testing (obviously). One way we might be able to do this in an innovative way is to create a bunch of GCM components and specify their behaviour in terms of functions from "bound" (or restricted) constraint variables to "unbound" ones. Using this we can check that the solutions generated by MiniZinc are valid
for our examples.

While this may provide property based testing in some sense, maybe we should also test each new iteration of the compiler against some old (this current) version for a bunch of random programs, to make sure that the semantics don't change with each iteration.

Tell me what you think.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.