On the OptaPlanner mailing list, people have asked about using OptaPlanner from .NET before.
If you're interested in pursuing that direction (and it fits within your requirements), here were some of the idea's:
- In Java, expose an OptaPlanner implementation as a REST service (with RestEasy and/or Camel). Map the domain objects to XML with JAXB (or XStream). Then use a C# client to contact that REST service.
- From C#, call a command that starts a java app which reads an XML file as input and writes one as output. Again, use JAXB (or XStream) to serialize that XML.
- Directly call Java from C# using something like IKVM.