Nowadays, Unmanned Aerial Vehicles (UAVs) have received growing popularity in the Internet-of-Things (IoT) which often deploys many sensors in a relatively wide region. Current trends focus on deployment of a single UAV or a swarm of it to generally map an area, perform surveillance, monitoring or rescue operations, collect data from ground sensors or various communicating devices, provide additional computing services close to data producers, etc. Applications are very diverse and call for different features or requirements. But UAV remain low-power battery powered devices that in addition to their mission, must fly and communicate. Thanks to wireless communications, they participate to mobile dynamic networks composed of UAV and ground sensors and thus many challenges have to be addressed to make UAV very efficient. And behind any UAV application, hides an optimization problem. There is still a criterion or multiple ones to optimize such as flying time, energy consumption, number of UAV, quantity of data to send/receive, etc