Here's some script that I've had for a while. Basically, it solves UKP via dynamic programming and fills up your belly based on MPA.
Who should use this? People farming in aftercore who know their MPA.
Why use this over EatDrink? Well, it's fast, for one, and for another, it optimizes profit as determined by MPA * advYield - dietCost. I have no idea what EatDrink does, or how it does it.
Usage for script writers:
consumptionConfig is a string => string map contains various configurables: simulate, overdrink, semirares, valueOfSemi, valOfNontradeables. These should be fairly straightforward. weightMin and weightMax allow you to be more or less pessimistic: these *should* add up to 1, but this isn't a strict requirement.
consumptionNamespace(float MPA) is the function to call, after configuring options as desired.