关于烘焙面包问题主要思路

复杂烘焙问题的求解策略
本文探讨了一道复杂的0-1整数规划问题,涉及面包烘焙时间与体积的优化,通过逐步化简与贪心策略求解局部最优解,并讨论了使用Lingo求解的难点及遗传算法的应用。提出了通过减少变量数量的方法来提高求解效率,并分享了对最优解与局部最优解之间差距的思考。

1、从问题本身上来看,很容易认为这是一道很简单的0-1整数规划问题。其模型很好得到。三个约束条件,一个目标方程,最终要求解得到的是一个51*51的0-1矩阵,使面包的整体烘焙时间最短。约束条件为:一同烘焙的面包完成时间相差必须在5分钟内,面包箱的体积为40,51个面包都必须烘焙。

2、而事实上,这道题并不简单。最开始以为他是一个背包问题的扩展,体积对应背包的容积,时间对于背包物品的价值。不过,这里的时间不累加,而是取其最大。但是后来我发现这样想是我太单纯了。。。。因为这个问题在求取最优中也包含了分组问题,是一个NP难问题,如果我们穷举所有可能性,这可是n的n次方啊,当然经过一些化简和减枝后,复杂度会降低一些,但是并不能本质改变其不可求解的XX。在lingo计算了6个小时,我睡醒后,我依旧不死心的相尽各种方法求解最优解,才回头。。。

3、不甘心的开始想办法算局部优解,于是觉得0-1背包的贪心还是蛮好的,于是就自己制定了关于烘焙面包的贪心策略,大体意思是,首先极限考虑,本题的最糟糕解为51个面包51次烘烤,在此基础上,我们进行合并,即,求解50烤箱的最优,49个,48个,。。。。n个知道不能合并为止,此时我们认为便得到了我们的“最”优解。由于每一步只减少了一个烤箱,其实,就是相当于,将烤箱中的某个面包合并到其他烤箱中,使这个抵消时间最大即可,如果遍历寻找的话,这个子问题的复杂度貌似也不小,可是,经分析,我们知道,两个较大合并,抵消时间最大,因此按时间排序,是问题转化为O(n)的复杂度,于是整个问题的求解,就真的转化为了O(n2)的复杂度问题。实验证明,速度很快,基本不用等待。

4、当然这样做,漏洞多多的,最大的问题也就是,贪心只保证了每一步求解为最优,而全局却不能保证最优,求得的解到底与最优解差多少,这无从考量。

5、第二问在第一问的基础上求解,即默认装箱的面包不再开箱,保持这样的面包烘烤组合,这个想法很多人都认为他不是觉得最优的,即很可能需要从新组合。但是,我试想用一个反例推翻我的想法,证明需要拆分,没有成功,于是我更加预感强烈的它就是不用拆箱的。等有时间,一定要试着证明一下。

6、后来,老师说这个问题虽然复杂度很高,但是在lingo中,所有运算都是初等运算,那么还是可以求解的,即使变量再多,因此问题就转化为了,将max和min的这种XX,转化初等运算。后来,我试了下,貌似lingo还是解不出来,是我哪里写错了还是老师说的有偏差。。。。

7、本来以为,问题再复杂,用遗传算法这种启发式搜索都是可以求出近似解的,但是这次貌似不是很灵光,应该是我对遗传掌握的不到家吧。。。。有时间在好好看看。

8、最后,针对于这次别人做的东东,想告诫自己一句,凑出来的永远不是你想要的,可扩展的模型才是真XX,不要嫉妒别人硬凑出来比你好一点点的结果,你知道什么是实在的干货。

 

 

补充---2012.8.24

-----------------------

对于用lingo求解,除了将运算全部转为基本运算外,还可以通过减少变量来实现。具体实现是,我们先将面包按照烘焙时间进行排序,然后每个面包向下看齐,即,他只可以和比自己烘焙时间少5分钟以内的面包一起烤。这样,我们每行代表一次烘烤,每一列代表一个面包,则每一行都针对了一个指定的面包,这个面包可以一起烤的对象也是确定的那几个(很少),其他的都可以直接置为0,因此这样便大大减少了变量数量。

 

 

 

 

转载于:https://www.cnblogs.com/Vanior/archive/2012/08/22/2651375.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值