You are trying to get vpasolve() to invent functions that satisfy certain purposes, trying various forms of f until it satisfies constraints on integrals.
However, solve() and vpasolve() never invent functions. The only routine that invents functions is dsolve()
syms f(x) [1 num_bins] real
It is not permitted to set assumptions on abstract functions.
It is not permitted to set assumptions on abstract functions.
For that matter, if you had had something like
f(x) = x^3 - x^2 + 1
f(x) = 
then it would be permitted to set assumptions on the function turned into an expression,
assumptions
ans = 
but it would not be permitted to set assumptions on the symbolic function form
assume(f > 0)
Error using symfun/assume (line 12)
Assumptions on symbolic functions not supported. Make assumptions on symbolic variables and expressions instead.