Combining inequality, order, and no constraints on a Simplex

Hi there,

I am interested in formulating constraints on a Simplex of the form

\rho_1 = \rho_2 > \rho_3, \rho_4 > \rho_5, \rho_6 = \rho_7 > \rho_8

where (\rho_i, \rho_j) indicates no constraint among the two parameters. I can formulate constraints of the form

\rho_1 = \rho_2 > \rho_3 = \rho_4 > \rho_5 = \rho_6 = \rho_7 > \rho_8

by using a ‘positive_ordered’ vector and filling it with identical values for indices that share the same value (e.g., \rho_1 = \rho_2), but I don’t know how to accommodate, for example, (\rho_3, \rho_4).

Now, for a particular parameter vector with particular constraints, I can hard-code the lower and upper bounds for each \rho_i, but I am looking for a general solution. I have tried to add the bounds in a loop in the transformed variable block, but such statements are not allowed.

Any input is greatly appreciated!


Maybe start with a positive_ordered for the hard constraints as you do already, and then copy it to a new unconstrained vector and set

\rho_k=\alpha_k(\rho_2-\rho_5)+\rho_5,\quad \alpha_k\in[0,1],\quad k\in \lbrace 3,4\rbrace

for two new auxiliary variables \alpha_3 and \alpha_4.

1 Like