优化技术擅长处理:受多个变量影响,存在许多可能解的问题,以及结果因这些变量的组合而产生很大变化的问题。
文章一共例举三个例子:
1)制定旅游组团计划;
2)基于人们的偏好分配有限的资源;
3)用最少交叉线来可视化社会网络。
0 优化算法
随机搜索(评估其他算法的基线)
函数有两参数:Domain(二元祖的列表,指定每个变量最大最小值,题解长度与列表长度一致)、costf(成本函数)
爬山法
先从一个随机的时间安排开始,然后再找到所有与之相邻的安排(遍历列表中所有元素)。将最低成本的解作为新的题解。
缺点:容易陷入局部最优解。
解决方案:以多个随机初始解运行多次,希望其中有一个解能够逼近全局最优解。
模拟退火
https://blog.csdn.net/u013187969/article/details/80360021
遗传算法
https://blog.csdn.net/u013187969/article/details/80291063一、制定旅游计划
问题描述:家庭成员来自全国各地,希望在纽约会面,同一天到达,同一天离开,搭乘相同的交通工具往返机场
变量:价格、旅行时间、等待时间、出发时间、汽车租用时间
成本函数的确定:将所有变量组合形成一个值。本例中,假设,在飞机上的时间1$/min,在机场等待时间价值0.5$/min。租车时间超了,如汽车租用在归还点之后,追加50$。
优化目标:最小成本函数。
二、基于人们的偏好分配有限的资源
问题描述:学生宿舍优化问题,根据学生的首选和次选,为其分配宿舍。
有5间宿舍,每间宿舍有两个隔间,10名学生竞争入住,每个学生都有首选和次选。
目标函数:最小cost,若该同学被安置的宿舍为首选,则cost+0,若为次序安,则cost+1,若都不是cost+3。
三、用最少交叉线来可视化社会网络
问题描述:运用优化算法来构建更好的而非杂乱无章的网络图。
思路:通常借助质点弹簧算法,各节点彼此向对方施以推力并试图分离,而节点间的连接则试图将关联节点拉近。缺点:无法避免交叉线。
优化算法目的:计算彼此之间的交叉线数。
计算交叉线数基本思路:计算线条的分数值,如果两条线的分数值在0和1之间,则彼此交叉。反之,则不交叉。