Skip to content
This repository has been archived by the owner on Jul 2, 2020. It is now read-only.

Suggestions to improve the tutorial #1

Open
kpagcha opened this issue Nov 24, 2016 · 3 comments
Open

Suggestions to improve the tutorial #1

kpagcha opened this issue Nov 24, 2016 · 3 comments

Comments

@kpagcha
Copy link

kpagcha commented Nov 24, 2016

I am going to list down a series priority concepts and components I think are key for beginners to understand, especially from my own point of view in the sense of which of those I had more trouble with while learning Choco. I also think a good way of putting all this together when developing the tutorial is with detailed examples, and wrap it on the actual explanations (just like the n-queens example in the tutorial, but more of them, more detailed and more complex as the tutorial goes).

  • Type of variables: add "real" examples for IntVar, BoolVar, SetVar and RealVar. This way learners can see what these variables can be used for in different scenarios.
  • Home-made constraints, all of them: what they're for, and examples. I know this can be a pain in the ass since there are like 80 different built-in constraints if I remember correctly, but when I used Choco I remember just being confused in the docs looking at constraints I didn't even know what they were for and if they could apply to my problem. I think it's vital that the user knows what tools are available for him, and constraints are absolutely key to master when using Choco.
  • How to create custom constraints. I think this one is very important. I did not find any intuitive way of doing this and I actually created 0 custom constraints when I used Choco for months, simply because I had no idea how and could not figure out from the docs/guide. Probably the possibilities with this are limitless, especially since there are different type of variables, but I think a good set of examples would help a lot. By the way, I saw just one an example of how to implement a custom constraint, but I couldn't figure out anything out of it because it was explained very lighly.
  • Search strategies: go through the ones existing, explain what they do and how they're different to the other strategies, what situations to apply them, see how they might impact resolution performace, etc...
  • Custom search strategies. I can't even get in detail here because I think you could also define custom heuristics. But I never figured out how to do this from the docs or guide. I might be wrong but I think custom search strategies is a feature Choco presents, and should be great if more information about the topic was given in a tutorial.

Then I know there are a bunch of advanced components, plugged monitors, etc... but I never got so deep into the library. But again, if I had found resources that helped me understand these components I would have probably went as deep as these resources let me.

I am going to think of more features I think would be important to include in the tutorials, which I am sure there are many, but so far all these four I listed down are by far the most basic and important ones in my opinions.

@cprudhom
Copy link
Member

cprudhom commented Jun 22, 2017

I just added a first version of how to create a constraint.

cprudhom added a commit that referenced this issue Jun 22, 2017
@kpagcha
Copy link
Author

kpagcha commented Jun 22, 2017

looks great, I'll check it out asap. Want some feedback when I'm done?

@cprudhom
Copy link
Member

Sure. That's a 3-hour version, so there are plenty of errors to fix and improvements to make.
But at least, it exists !
I will then work on the search strategy.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants