The first thing that the solver does is to compute a bound on the solution, by relaxing all of the "x is binary" restrictions to "0 <= x <= 1". The solver optimizes this relaxed problem and produces a solution in which some of the variables are fractional. Then the solver looks for a solution to the original problem, in which all the binary variables have to be 0 or 1. If it can't find any 0-1 solution, it reports "infeasible" and it may return the fractional solution instead.
So the short answer is, that your variable is defined correctly. You are seeing a fractional solution because there does not exist any solution that has all of the binary variables being 0 or 1, and that also satisfies all of the constraints.
To fix this problem, you will need to look for errors in your model and/or your data. As a start it can be helpful to try dropping some constraints (using the AMPL "drop" and "restore" commands); if you drop some constraints and the problem is still infeasible, then you know that the dropped constraints are not involved in causing the infeasibility. (Some linear/quadratic solvers can automate this process, but you mention that you have a nonlinear problem.)
--
Robert Fourer
am...@googlegroups.com