优化算法用于解决这类问题:问题存在大量的可能解,而我们无法对它们进行一一尝试的情况。
描述题解
是指如何对问题的解进行数学抽象。在“组团出游”的问题里,一家人从不同城市同到NewYork的LGA机场,如何选择每人的航班使得总花费最少?
从一个txt文件中获取航班信息,文件中每行分别表示两个机场、往返时间、总花费:
如何描述问题的解?用一个数字序列表示每人选择的航班编号:0表示当天第一次航班,1表示第二次航班。因为每个人需要往返两个航班,所有序列的长度是总人数的两倍。
按序列打印出航班信息:
成本函数
如何用一个值表示所选解的好坏?该值是对问题的一个加权总和,对本例来说,机票钱、飞行时间、等待时间等都被用来描述一组解的好坏:
这个系列来自《集体智慧编程》的第五章,完整golang代码在https://github.com/baixiaoustc/optimization