Instead of having different fares for the same train on the same day, they should have different single fare for the same train on different days. Base fares should be increased upfront for all passengers for high demand dates - e.g. festivals, long holidays, events etc. e.g.
(1) Bangalore Chennai AC3T fare is 650. For Friday evening trains, this fare can go upto 800 for all passengers even if booked 4 months in advance, for Sunday evening trains, this can be 720.
(2) Ganapati season fares should be...
more... bumped up right for all trains to Konkan. (Even bus fares increase from Rs 800 off season to Rs 2500 for Ganapati)
(3) Sunday morning Pune Mumbai trains should cost less than regular fares.
Railways has a lot of data on demand. So they should be able to design the fares and earn revenue.