I've worked on this before, and to cut to the chase, it's a really HARD problem! There's no generalized way to solve problems like this, but there are iterative methods that will come up with something "close" given enough time.
Go there, say you have 30 golfers, in 3-somes, for 7 events. It'll crank for a while, and eventually should give you the "best" pairings it can find, and show you how often the couples play each other (dine with each other).
On this particular site, it will look at up to 9999 combinations before quitting. If it finds an ideal solution, it will quit sooner. If it doesn't it'll go until it hits 9999. A quick checks shows that could be up to an hour of time. Just let it run.