I'm am quite new to deep learning but I think I found just the right real-world situation to start using it. The problem is that I have only used such algorithms to predict outcomes. For my new project, I need information to feed a machine with to optimize outcomes. Could someone explain briefly how I should proceed? I'm stuck.

Here's the situation:

I have a machine that takes planks of wood with different grades of wood available throughout its length and has to cut it into blocks provided in a cut list. This machine will always choose the highest score it can get from a given plank. The score is obtained by multiplying each block's area by its multiplicator. The algorithm I want to build has to give that machine a multiplicator for each block listed in a cut list. All of the physical output from this machine will be stocked on shelves by a robot until needed. The cutting machine is allowed to downgrade parts of a plank if it helps it reach a higher score.

The value has to act as an incentive for the machine to give me the block I need the most without downgrading too much wood.


  • Make sure each block is in stock by the time it is needed, but not too early without reason
  • Downgrade as little area of wood as possible (some species are very expensive)


  • Amount of time before this block is needed
  • Grade of wood for this block
  • Amount of this block needed
  • Block's area (Maybe?)


  • Amount of time in advance that the block was ready (must be as low as possible)
  • Area of wood downgraded * number of grades skipped


  • A multiplicator that will give that block an optimal its priority relative to others


  • Mean ratio of each grade for each species of wood

What I've figured out so far is that I may need my feedback to be smashed in only one value in order to make it the output node. The problem is that I can't understand how to make this algorithm to determine a multiplicator. Am I wrong in trying to solve this through deep learning?

  • $\begingroup$ I took the liberty of editing the question for more clarity. Wasn't sure what to do with: "Value per cm² that will give that block an optimal its priority relative to others" Do you mean giving a block an optimal value in regard to its priority relative to other blocks? $\endgroup$ – DukeZhou Aug 31 '17 at 20:09
  • $\begingroup$ @DukeZhou The machine's algorithm multiplies the value i'm trying to optimise by the total 2D area of the block (width x length) in order to create a "score" and cut each plank to get the maximum score. If I ass the block's area in the algorithm, I could then determine the score and then divide it by the area. All in all, the main focus is in making sure that the highest score matches the highest need so that the machine's goal is the same as ours. $\endgroup$ – Frank Malenfant Aug 31 '17 at 20:41
  • $\begingroup$ @DukeZhou Sorry if it ain't as clear as it could, English is my second language. $\endgroup$ – Frank Malenfant Aug 31 '17 at 20:42
  • $\begingroup$ Good info. You should edit that one line I referenced to make it more clear, and check my edit to make sure I didn't misrepresent any part of your question. $\endgroup$ – DukeZhou Aug 31 '17 at 20:43
  • 1
    $\begingroup$ @DukeZhou Here. I replaced it with the term multiplicator and gave some extra information about its usage. $\endgroup$ – Frank Malenfant Aug 31 '17 at 20:56

Deep learning models for regression tasks are quite difficult to train so I would suggest not to start with them. Instead I would start with one of the approaches below and maybe try to use deep learning afterwards.

A classical approach to the problem could be to analyze your optimization software and this would probably lead you to some deterministic algorithm.

Different approaches can be to treat your optimization software as a black box - give it a wide variety of inputs, note down the variables you are interested in (execution time, cutting results, etc.) and try to fit some sort or regressor on it.

One option is to follow Kourosh's idea and formulate it as a classical optimization problem.

If you prefer to use machine learning tools than I'd suggest that you start with a simple model like linear regression just to verify that there is any signal in the data that you can use. Afterwards you can look at more powerful algorithms like xgboost, regression trees, etc.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.