9. The computational system as claimed in claim 8 , further comprising an N length overflow vector which is initialized as a string of N ones; and wherein if there are no available positions in the availability vector A then: a binary AND is performed between the respondent vector and the overflow vector to obtain a new availability vector A; respondent is allocated a treatment by randomly selecting one of the positions in the availability vector having a value of one; and then the overflow vector and the respondent vector are updated by changing the state of the allocated position to a zero in both vectors.
8. A computational system for performing an online choice model, the system comprising: at least one processor; at least one memory operatively coupled to the at least one processor; and a plurality of modules, each of the modules comprising instructions for execution by the at least one processor, the plurality of modules comprising: a problem definition module comprising a problem definition user interface for receiving a plurality of attributes from a user wherein each attribute has an associated plurality of attribute levels; an online choice model survey module comprising: an experimental design generator module for generating a survey experimental design and an associated plurality of treatments; comprising a library of experimental designs; wherein the experimental design generator module determines the signature of the attribute space from the received plurality of attributes and associated attribute levels; and for one or more experimental designs in the library of experimental designs, performs one or more transformations until the signature of the transformed experimental design matches the signature of the attribute space to obtain one or more matching transformed experimental designs; wherein each transformation preserves the information properties of the untransformed experimental design; wherein the experimental design generator module selects the survey experimental design from the one or more matching transformed experimental designs; and wherein the experimental design generator module obtains a set of treatments from the selected survey experimental design; an online survey assembly module which receives the plurality of treatments and assembles an online survey from one or more survey templates pages, and a plurality of treatment representations created using the plurality of treatments received from the experimental design module; a data collection and sampling module for conducting the assembled online survey; wherein the data collection and sampling module allocates treatments to survey respondents and collects responses using the assembled online survey; a model generation module for receiving the data collected by the data collection and sampling module and building a model to obtain a plurality of model parameter estimates and errors from which a utility estimate can be obtained for each attribute level; and a model explorer module comprising a model explorer user interface for allowing the user to enter one or more attribute levels and obtain a model prediction of the expected utility; wherein the data collection and sampling module comprises a treatment allocation module, the treatment allocation module comprising: an allocation frequency counter for counting the allocation of each treatment in the set of treatments, wherein the allocation frequency counter is initialized to be zero; a receiver for receiving a request for a treatment to be provided to a survey respondent; and an allocator for allocating a treatment to a survey respondent from the set of treatments; wherein the allocated treatment is selected from the subset of treatments which have not previously been allocated to the survey respondent and whose allocation frequency differs by no more than a predetermined amount from the most allocated treatment in the set of treatments; the computational system further comprising: a length N global binary Deck Vector D which is initialized as a string of N ones indicating that all treatments are available where N is the number of treatments; respondent allocation vector R of length N for each respondent for indicating whether a given treatments has been delivered to the respondent and is initialized as string of N ones; a treatment for a respondent is selected by performing a binary AND between the Deck Vector D and respondent allocation vector R to obtain an availability vector A in which a one represents an available treatment, the respondent is allocated a treatment by randomly selecting one of the positions in the availability vector having a value of one; and then updating the global binary Deck Vector D and the respondent vector R by changing the state of the allocated position to a zero in both vectors.