Solution
8 half-crowns, 4 shillings and 3 sixpences

Xpress-Mosel Model

model 'tcoins'

! Description  : Tommy's Birthday Coins
! Source       : Clarke, L.H., (1954), Fun with Figures, William Heinemann Ltd.  
! Date written : Xpress-MP 25/10/99, Mosel 17/4/03
! Written by   : M J Chlond 

  uses 'mmxprs'

  parameters
    coin = 3
  end-parameters
  
  declarations
    C = 1..coin
    value: array(C) of real
    x: array(C) of mpvar
  end-declarations

  value:= [30,12,6]
  
  any:= x(1)

  tval:= sum(i in C) value(i)*x(i) = 306
  tnum:= sum(i in C) x(i) = 15

  forall(i in C) do
    x(i) is_integer
    x(i) >= 1
  end-do

  minimise(any)

  forall(i in C)
    write(getsol(x(i)),' ')
    
end-model