That problem seems to arise because I swapped the definition of clean maize. You can simply reverse the sign of bm from -0.1 to 0.1.
But then you still may find choice tasks in which clean maize appears with a low price, which I believe you would like to prevent.
You can remove such dominant alternatives by telling Ngene that alt1 and alt2 are generic. Then, together with a positive sign for clean maize and a negative sign for price, Ngene knows how to avoid such dominant alternatives. Note that this will remove a lot of possible choice tasks, so you first need to check how many choice tasks are still left. This can be done with the syntax below. Note that I have added the no choice alternative with a constant, which you need in your model estimation.
Design
;alts = alt1*, alt2*, none
;rows = all
;fact
;require:
alt1.season = alt2.season
;model:
U(alt1) = bm[0.1] * mold[0,1] + bms * mold * season[0,1] + bp[-0.005] * price[90,100,125,150,200,250] + bps * price * season /
U(alt2) = bm * mold[0,1] + bms * mold * season[0,1] + bp * price[90,100,125,150,200,250] + bps * price * season /
U(none) = bnone $
If you run this syntax, it will tell you that only 60 choice tasks satisfy all your constraints. This is not a lot. So what you could do is actually use all 60 choice tasks in your design and create 5 blocks of 12 choice tasks each, which you can do by adding ;block = 5 to the syntax.
Alternatively, you can let Ngene select the 24 (or 12 if you like) most efficient choice tasks using the following syntax. The efficient design will rely on your priors, to please ensure that they make sense (I think they are sufficiently small such that they are safe, but if you have better priors from a small pilot study or something you may want to include them here):
Design
;alts = alt1*, alt2*, none
;rows = 24
;block = 2
;eff = (mnl,d)
;alg = mfederov
;require:
alt1.season = alt2.season
;model:
U(alt1) = bm[0.1] * mold[0,1] + bms * mold * season[0,1](12,12) + bp[-0.005] * price[90,100,125,150,200,250](3-5,3-5,3-5,3-5,3-5,3-5) + bps * price * season /
U(alt2) = bm * mold[0,1] + bms * mold * season[0,1](12,12) + bp * price[90,100,125,150,200,250](3-5,3-5,3-5,3-5,3-5,3-5) + bps * price * season /
U(none) = bnone $
Since this is a very heavily constrained design, the default (swapping) algorithm will no longer find a solution, so you will have to switch to the Modified Federov algorithm as I propose above. This algorithm will not maintain attribute level balance, therefore in order to ensure that each season appears exactly 12 times across the design, I have imposed level appearance constraints by adding (12,12) to season. Similarly, I impose constraints on price levels, ensuring that they each appear between 3 and 5 times (it will not be possible to let them each appear exactly 4 times, that imposes too many constraints).
Note that blocking will never be perfect (in neither syntax), so you will need to make sure (possibly manually) that each block contains 6 of each season.
Michiel