Given that you cannot use argmax inside the model, I'd suggest something around the following lines:
1. Create a binary variable named "IsPeriod_t_maximum_in_i(t,i)" that should store the value "1" when the period "t" has the maximum of variable v(t,i) on each "i" and 0 in all other periods "t" for that "i".
You need to relate this variable to your v(t,i) variable with some constraint in an intelligent way so that this binary variable *only* gets the value 1 when that period is the maximum of v(t,i).
2. Your period counter "p" should be a variable and should be related to the binary variable "IsPeriod_t_maximum_in_i" via another clever constraint.
You need to keep the constraints lineal.
If you think you need help on building those constraints, feel free to ask the group for help, I'm sure someone here could come up with them given enough time.
regards,