When I run into this, I usually convert the categorical into a 0/1 discrete numeric factor, and then use disallowed combinations to ensure the sum doesn't exceed the desired number of 1's. For 10 inputs (main effects model, but just to give you an idea), something like this:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Discrete Numeric, {0, 1}, "X1", 0 ),
Add Factor( Discrete Numeric, {0, 1}, "X2", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X3", 0 ),
Add Factor( Discrete Numeric, {0, 1}, "X4", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X5", 0 ),
Add Factor( Discrete Numeric, {0, 1}, "X6", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X7", 0 ),
Add Factor( Discrete Numeric, {0, 1}, "X8", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X9", 0 ),
Add Factor( Discrete Numeric, {0, 1}, "X10", 0 ), Set Random Seed( 1550400750 ), Number of Starts( 3017 ),
Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {3, 1} ), Add Term( {4, 1} ),
Add Term( {5, 1} ), Add Term( {6, 1} ), Add Term( {7, 1} ), Add Term( {8, 1} ), Add Term( {9, 1} ),
Add Term( {10, 1} ), Set Sample Size( 16 ), Disallowed Combinations(
X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10 > 3
), Make Design}
);