none
VariableArray with mixed observed and random entries

    Question

  • Hi,

    Is it possible to set a subset of entries of a VariableArray to observed values, and keep the rest random? 

    I tried a few ways (Subarrays and switching between an entirely observed and entirely random VariableArray), but none worked.  I cannot use a standard C# array instead. 

    Nevena

    Monday, January 23, 2012 10:08 AM

Answers

  • Where 'i' is a Range over your observation array and 'indices' is an array of the entries to observe:

    Variable.ConstrainEqual(array[indices[i]], obs[i]);

    • Marked as answer by Nevena Lazic Tuesday, January 24, 2012 5:55 PM
    Monday, January 23, 2012 5:01 PM

All replies

  • Where 'i' is a Range over your observation array and 'indices' is an array of the entries to observe:

    Variable.ConstrainEqual(array[indices[i]], obs[i]);

    • Marked as answer by Nevena Lazic Tuesday, January 24, 2012 5:55 PM
    Monday, January 23, 2012 5:01 PM
  • Thanks.  I tried that as well, and compilation failed.  The problem might be that I'm indexing the CPT of X ("array") with X:

    using (Variable.ForEach(D))

            using (Variable.ForEach(N))

            using (Variable.Switch(G[D]))

            using (Variable.Switch(X[G[D]][N]))

                        X[D][N] = Variable.Discrete(cptX [D] [X[G[D]][N]] );

     

    The error is: Could not find a match for X[index2][N] in GateBlock.

    Tuesday, January 24, 2012 9:20 AM