I think you'd get more responses if you posted this in the business math sub-forum.
In any case, it seems like what you have is correct so far. I'm pretty sure there are other ways to do this (and I may be wrong), but here's what I got for x1,x2,...,x6: 20,0,3,15,0,5 respectively.
I started with X5+X6=5. Just considering Mark, the minimum cost will be if all 5 come from Vin2 and none from Vin1. Now, if we get 1 from Vin1, the cost increases by 65-33 = 32. But it's not possible to get a combination (considering Fred and Kevin as well) that will save at least that much, so X5=0 and X6=5.
Now, looking at X1 to X4, delivering to Kevin from Vin2 instead of Vin1 will save 62-36 = 26, whereas delivering to Fred from Vin2 instead of Vin1 will save 35-28 = 7. So, send the most you can to Kevin from Vin2, this gives us X4 = 15 (since 5 of the 20 from Vin 2 goes to Mark), and X3 = 3 (so that Kevin gets his minimum 18).
That leaves us with 20 going to Fred from Vin1, and none going to Fred from Vin2.
After that, I just played around abit with the numbers and saw that what I got gives the minimum ... so I may be wrong