I would like to maximize a function which has a list as one of its arguments, and I want to put a constraint : a - p[[i]] +p [[i-1]] >0 which has to be true for all the list elements (i goes from 1 to 5).
How do I write it ? Here is my code :
Module[
{
\[Alpha] = 100,
\[Beta] = 10,
c = 10,
b = 0.05,
e = 100,
k = 500,
a = 10000,
t = 0.01 *Range[5],
m,
f
},
(*m=(a+ \[Alpha] p[[n-1]]- \[Alpha] c - (Length[t]-n) \
a)/(\[Alpha](b+(Length[t]-n+1)t[n]- Sum[t[[i]],{i,n+1, Length[t]}]));*)
f[x0_, pList_] := (pList[[1]] -
c - (b + t[[1]]) x0) (a - \[Alpha] pList[[1]]) +
Sum[ (pList[[i]] -
c - (b + t[[i]]) x0) (a - \[Beta] pList[[
i]] + \[Beta] pList[[i - 1]] - \[Alpha] pList[[1]]), {i,
2, Length[t]}] - k (e - x0)^2;
Maximize[
{
f[\[FormalX], Array[\[FormalP], Length[t]]],
And @@ Thread[Array[\[FormalP], Length[t]] > 0]
},
Flatten[{\[FormalX], Array[\[FormalP], Length[t]]}]
]
]