The case m = 2, y0 = y1 = 1, is a well known NP-complete problem: Take a series of positive numbers (the xi) and divide it into two series, so that the sum of elements of the one series is as close as possible or equal to the sum of the elements of the other series.
On the other hand, you need not worry about this being NP complete, because the total "cost" of solving this problem would be the cost of the calculation, plus the cost of a huge number of wooden planks - so as long as the solution doesn't take long compared to the number of wooden planks, you are fine :-)
On the other hand, the solution might be polynomial in the number of planks, with the degree of the polynomial depending on the number of machines - if the solution time grows like a polynomial of degree 20, then it's not much fun.
If the number of chairs were allowed to be a real number, and the piles of planks could be split up, the solution would be easy - we add up the number of planks, and the total number needed for each chair, divide both sums to get the number of chairs that can be built (as real numbers) and divide the planks up accordingly. I would calculate that number first.
Let's say the calculation tells us we could hypothetically build 13.79 chairs. If that is the case, we determine whether we can assign piles to machines such that each machine has enough planks for 13 chairs; if that doesn't work then 12 chairs, etc.
To find if we can build k chairs, we need to assign piles of planks to machines, so that at least y0 * k planks are assigned to the first machine, y1 * k planks to the second, and so on. You might be able to solve this in reasonable time if the numbers are not too large; similar to the "first fit ordered" algorithm for bin packing:
To try to build k chairs, calculate how many planks each machine needs, sort the machines by planks in descending order. Sort the piles by number of planks in descending order. If there are k machines whose requirements can be fulfilled with the smallest k piles of planks then use those piles and remove machines and piles from the algorithm. Calculate how many "spare" planks you have. If the number is negative, try building k-1 chairs.
For the first machine: Add complete piles starting with the largest as long as this doesn't exceed the requirement. Then add the smallest pile that will meet the requirement for that machine if needed - but calculate how many unneeded planks you have, and if it exceeds the number of spare planks, you've failed. Then do the same with the second, third machine etc. Use backtracking when you fail.