What is the difference between unbounded and infeasible




















This part contains:. For infeasible outcomes, it reports values that you can analyze to detect what in your problem formulation caused this result. Infeasibility can arise from various causes, and it is not possible to automate procedures to deal with those causes entirely without input or intervention from the user.

If continuous infeasibility is not detected in presolve then the optimization algorithm will detect the infeasibility. If integer infeasibility is not detected in presolve, a branch and bound search will be necessary to detect the infeasibility. These scenarios are discussed in the following sections. The presolve processing, if activated see section Working with Presolve , provides a variety of checks for infeasibility. When presolve detects infeasibility, it is possible to "trace" back the implications that determined an inconsistency and identify a particular cause.

In such a situation, the cause of the infeasibility is then reported as part of the output from the optimization routine. The trace presolve functionality is typically useful when the infeasibility is simple, such that the sequence of bound implications that explains the infeasibility is short. If, however, this sequence is long or there are a number of sequences on different sets of variables, it might be useful to try forcing presolve to continue processing and then solve the problem using the primal simplex to get the, so called, 'phase 1' solution.

The 'phase 1' solution is useful because the sum of infeasibilities is minimized in the solution and the resulting set of violated constraints and violated variable bounds provides a clear picture of what aspect of the model is causing the infeasibility. A general technique to analyze infeasibility is to find a small subset of the matrix that is itself infeasible.

The Optimizer does this by finding irreducible infeasible sets IISs. An IIS is a minimal set of constraints and variable bounds which is infeasible, but becomes feasible if any constraint or bound in it is removed. A model may have several infeasibilities. Repairing a single IIS may not make the model feasible, for which reason the Optimizer can attempt to find an IIS for each of the infeasibilities in a model. The IISs found by the optimizer are independent in the sense that each constraint and variable bound may only be present in at most one IIS.

In some problems there are overlapping IISs. The number of all IISs present in a problem may be exponential, and no attempt is made to enumerate all. If the infeasibility can be represented by several different IISs the Optimizer will attempt to find the IIS with the smallest number of constraints in order to make the infeasibility easier to diagnose the Optimizer tries to minimize the number of constraints involved, even if it means that the IIS will contain more bounds.

Note that if the problem is modified during the iterative search for IISs, the process has to be started from scratch. After a set of IISs is identified, the information contained by any one of the IISs size, constraint and bound lists, duals, etc.

The information about the IISs is available while the problem remains unchanged. The information about an IIS may be obtained at any time after it has been generated. If further IISs are required e. These functions display the constraints and bounds that are identified to be in an IIS as they are found.

The IIS isolations thus indicate the likely cause of each independent infeasibility and give an indication of which constraint or bound to drop or modify. It is not always possible to find IIS isolations. After an optimal but infeasible first phase primal simplex, it is possible to identify a subproblem containing all the infeasibilities corresponding to the given basis to reduce the IIS work—problem dramatically.

Rows with zero duals thus with slack variables having zero reduced cost and columns that have zero reduced costs may be excluded from the search for IISs. Moreover, for rows and columns with nonzero costs, the sign of the cost is used to relax equality rows either to less then or greater than equal rows, and to drop either possible upper or lower bounds on variables.

This process is referred to as sensitivity filter for IISs. The identification of an IIS, especially if the isolations search is also performed, may take a very long time. For this reason, using the sensitivity filter for IISs, it is possible to find only an approximation of the IISs, which typically contains all the IISs and may contain several rows and bounds that are not part of any IIS.

This approximation is a sub—problem identified at the beginning of the search for IISs, and is referred to as the initial infeasible sub—problem. Its size is typically crucial to the running time of the IIS procedure. However, there are ways for you to try to narrow down the investigation with help from CPLEX, for example, through tools such as the conflict refiner, documented in Diagnosing infeasibility by refining conflicts.

The following topic explains how to interpret reports of infeasibility that occur before optimization begins, that is, reports that arise from preprocessing. Issues of infeasibility and unboundedness Outlines issues of infeasibility and unboundedness.

The following topics discuss steps to try when the outcome of an optimization is a declaration that your model is either: infeasible ; that is, no solution exists that satisfies all the constraints, bounds, and integrality restrictions; or unbounded ; that is, the objective function can be made arbitrarily large.

One way you can determine this is by adding a constraint on the objective that limits its value. If you solve the problem again with this constraint and now you get a feasible solution, it means that your original problem was unbounded. If it is still infeasible, it means your original problem was infeasible. Alternatively, you could also ensure you have bounds i.

This would not allow for an unbounded model anymore. Another way to determine whether the problem is infeasible or unbounded is by setting the CPLEX solver option Presolve to the non-default value No via the project settings. On the right side of the screen you can then select the different preprocessing related options of this CPLEX version and set the Presolve option to No.



0コメント

  • 1000 / 1000