Which box would you put this project in?

Hi there!

I’m new to the AI world and I’m just taking the Stanford/Coursera 3 courses block. I know I have to go through that but I also have a problem to solve that I don’t know “the box to put it in”… Maybe you could point me in the right direction or at least away from the wrong ones! :wink:

I don’t want you to solve it! Just a headlight on where to look next if possible. This may be a “long” explanation but making it shorter wouldn’t make it clear enough…

I’m automating processes for a client and, after all the reasonable things have been automated, now we’ve got to the wish list state where we have this problem…

He’s an urbanist and uses two different languages to describe the streets “geography” when “cut” from side walk to side walk. One is like using LEGO bricks with a different color for every “use” (like a side walk, a bus lane or a row of trees in the side walk) with at least one parameter to say its width. The other language is a sort of “text description” of the same street.

An example would be having a 10 meters wide street and having, from left to right, a 2 meters side walk, a 1 meter wide row of trees, a 3 meters wide bus lane, a 1 meter wide bike lane, a 1 meter wide row of trees and a 3 meters wide sidewalk we could have both a LEGO row of bricks like:

gray 2 units wide, green 1 unit, red 3 units, yellow 1 unit, green 1 unit and grey 3 units.

Or its text version:

SideWalk(2)/Tree(1)/Bus(3)/Bike(1)/Tree(1)/SideWalk(3).

We have already coded around 1700 streets this way.

Then we make a proposal with the changes to be made to the current street distribution in order to make it more “human friendly” so we have 1700 pairs of “before and after” situations.

Here comes the project: We’d like to implement “something” to learn from the (mostly coherent and repetitive) decisions made designing the new streets distribution so “it” can propose a draft of the new distribution for new streets we feed it.

I’ve been looking around AI corners but instead of “learning everything AI blindly” to begin I’d like to know where this kind of problem fits in!

  • If it’s a graph and ontologies case…

  • If it’s a reinforced learning case…

  • If it’s “clearly” something else I haven’t bumped in yet…

  • Or if 1700 samples is a joke in AI terms, so just a State Machine should just do the trick instead.

But in any situation what variables would you use and how would you define the rules it has to follow to comply?

The paper and pencil solution I have in mind is just to sit with the client and ask him to describe the process he follows when facing a blank page for a new street so we can “ask” a new street the same questions he does and just implementing the State Machine (or a binary tree) with the rules to follow so every new street fits in one of a limited number of possible (exclusive) solutions…

First, if you’ve read this far, THANKS! And I hope to have sparked your curiosity… And if you have the time and interest, I’d like to hear your 5 cents on it!

Again, thanks for reading this far! :wink:

(Note to the Admins: I’ve put this Topic here because it’s not a mature project to go in the AI Projects folder, but move it to wherever you feel it fits better!).

1 Like

Image segmentation which can be achieved with CNN’s is my first thinking but your dataset is limited thats true but you want to predict new streets right?

It is a small dataset and maybe a state machine can be implemented here instead of AI but if you want to learn unseen streets than AI is needed!

2 Likes

The first step is to identify the process you’re trying to model.

Your OP described the end results nicely, but did not identify what data you started with that can be used for training.

To @gent.spah
We have already coded what the current street distribution is.

Getting the current “code” for the street may be a future project but now we don’t focus on image segmentation to get the current code.

Now the problem is “determine which rules we’ve applied to go from A to B (current street elements distribution to the new proposed elements distribution) in the 1700 streets sample (the training group) to apply them to new streets”. Probably working with the text representation is easier than having to interpret the LEGO bricks version that has exactly the same info in it.

1 Like

To @TMosh
The training data is the 1700 A to B pairs describing the current street distribution and the new proposed one. The process is either a set of rules I have to get “from my client’s head” sitting with him and asking “why?” at every decision he takes or making a black box deduct them from the 1700 samples in the training data.

That’s why I also asked what kind of variables would you consider. I first would have to choose the variables to later make the equations describing the changes made. How would you express “prioritizing bus or bikes over cars” or “adding rows of trees when possible”?

That’s why I don’t know what ontology create to express relations between elements as, in the first place, I don’t know which those elements are… Are we talking about bus lanes and side walks? How would you describe how they are depending or related to each other?

If you have 1700 pairs of “before” and “after” examples, those are the training set. You don’t have to decide how to describe the rules, the relationship between the elements, etc. That’s what the machine learning does.

“Before” is the input.
“After” is the output.

1 Like

Great @TMosh, but as the buiding blocks are set, the parameters may vary from street to street. For example, all trees must be in the side walk, not between a bus lane and a car lane… But you won’t have always this sequence: SideWalk(2)/Tree(1)/… In a different street you may have SideWalk(3)/Tree(1)/… As the side walk is one meter wider than in the previous one but “functionally” they are the same as the blocks are the same: a side walk followed by a tree. It’s the parameters, 2 and 3 for the side walk, that change. That’s why instead of just an opaque system I’d like it to know the difference between blocks and parameters to discover how blocks relate independently of the parameters or how do parameters affect the relation between blocks as you may say Trees are only 0.8 instead of 1 meters wide if the side walk is smaller than 2 meters.

That’s why I asked about the validity of ontologies and graphs to define somehow what are the buiding blocks (to differentiate them from the parameters) and which variables to use do define the rules that guide their relations. In the same line I mentioned reinforced learning as a set of rules do apply to how elements can be distributed and then it would be up to the program to determine “the wining combination” of blocks to better follow the defined rules which ever those may be after defining them using I don’t know yet which variables or language or something to express there rules.