Reputation: 23
I have been trying to search for a solution but have not found anything helpful. I want to understand :
How to normalize a vector such that it sums to a certain value?
I am trying to reproduce the results of the paper: Designing human agents that act like human agents: A Behavioural approach to bounded rationality by W.Brian Arthur (1991).
On page 354 of this paper four points are mentioned, my doubt is limited to the 4th point. I can not understand how to calculate the 4th point.
For the sake of convenience I will write the entire 4th point preceded by the previous 3 points.
PROBLEM DESCRIPTION:
Set of N actions exist, from 1 to N. A vector of strength S_t is associated with every action at every time 't'. The current sum of these strength is C_t (the component sum of S_t) and the initial vector S_0 is strictly positive. The probability p_t represents the agent's probablities of taking actions 1 through N at time t.
At each time t, the agent: 1. Calculates the probablity vector as the relative strengths associated with each action. It sets, p_t = (S_t/C_t)
Chooses one action from the set according to the probablities p_t and trigger that action.
Observes the payoff received and updates strengths by adding the chosen action j's payoffs to action j's strength. That is, where action j is chosen, it sets the strength to S_t + beta. Where, beta = payoff(j)*e_j (e_j is the jth unit vector)
Renormalizes the strengths to sum to a value from a prechosen time sequence. In this case, it renormalizes strength to sum to C_t = C*t. (Where t could also be raised to a value v)
QUESTION: I dont understand how to renormalize the strength to a sum ?
Furthermore, I have read this discussion:
Upvotes: 0
Views: 874
Reputation: 31153
So you really only need to make sure the component sum of the vector is X. It is simple.
If we have a vector V = [a, b, c, d]
, it's component sum S
is of course S = a+b+c+d
. If this has to add up to value X
, then we can simply multiply both sides with X
to get S*X = (a+b+c+d)*X
, move S to the other side to get X = (a+b+c+d)*X/S
.
So now we know how to get X: every part of the vector has to be multiplied with X and divided by the current sum of the components:
a' = a*X/S
b' = a*X/S
c' = a*X/S
d' = a*X/S
Then we get the new vector V' = [a', b', c', d']
and its component sum will be X
and the relative weights will be unchanged.
Upvotes: 1