Infeasibility may come from:
- Data that feed your optimization model.
- The constraints defined in your model.
To prevent the troubles implied by 1), you have to check drastically the input data that feeds your optimization model. The goal is to ensure that the input data respect the conditions for which the model is supposed to work properly. This is a common software engineering practice; for details, have a look at the design by contract.
In addition, if you have basic constraints in your model that may lead to basic infeasibilities, then check them before the launch of the resolution. You can catch and then explain these infeasibilities to the users very early and quickly in the optimization process.
To prevent troubles implied by 2), you have to follow a goal programming modeling approach. Many constraints defined by clients are not really constraints but objectives in effect: if the constraint can be satisfied, this is good, otherwise try to make it violated as little as possible. Remind that for operations the "no solution found" answer is useless.
Finally, testing the possible suboptimality of the resolution before the resolution is of course impossible. The only way to make your users happy is to ensure, by extensive testing on realistic input data, that your optimization software output quality solutions in short running times, if possible in minutes. This can be done by carefully choosing the solution technique to tackle your problem efficiently, even if approximately.