‘壹’ 遗传算法能不能解决线性规划顺便举个例子或者链接吧。
当然可以了,不过就是看你这个线性规划的约束条件怎么设置,一般可以在求适应度的时候设置为可行域外适应度值取一个足够大的数
‘贰’ 线性规划整数解有简便方法吗 线性规划整数解除了用画图法还有什么别的方法有只用代数的方法吗
整数线性规划的解法总结
0-1整数线性规划是整数线性规划的特殊情况,在实际中有着广泛的应用.虽然变量的取值只有两个,但此类问题的求解却意外的困难,下面把有关的一些解法总结一下.
1.穷举法 把所有可能的解一一代入,然后比较满足约束的解,使目标函数最达到最优的解是最优解.这不失为一种方法,但不是一种好方法.如果问题规模大,则无法在可接受的时间内求得最优解.这也是求解整数规划的困难所在.
2.隐枚举法I 是穷举法的改进,其思路是先给出一个可行解,然后代入目标函数算出函数值得到一个上界(如果求最小值)或下界(如果是求最大值).然后一一检验其它的解,如果该解大于上界或小于下界,则不用检验可行性,因为它不可能是最优解,否则的话就要检验可行性,如果是可行解,则修改上界或下界,继续检验其它的解,否则不用修改上界或下界,直接检验其它的解.这种方法通过上界或下界来控制是否需要进行可行性检验,提高了效率.但是,要找可行解也得花一定的时间,当约束和变量较多时,工作量异常的大,退一步来说,即使可行解比较容易找到,但其产生的上界太大,或是下界太小,则其过滤的效果也不明显.这是这种方法的缺陷.
3.隐枚举法II 这种方法先把问题转化成标准型,然后按照分枝定界法的思想,尽量少的检验可行解来寻找最优解.这种方法比较麻烦,我在这里也描述不清楚,过几天理解透了再来写这一部分.
4.隐枚举法III 这是在程冬时,张声年在江西电力职业技术学院学报上发表的一篇文章《关于0-1型整数规划的若干问题》中提出来的,大致的思路是:把所有可能的解都代入目标函数算出值,然后把这些目标函数值进行排序,如果是求最大值,则降序排列,如果是求最小值则升序排列.然后按这个顺序一个一个的检验对应的解的可行性,当碰到第一个可行解时即得到最优解,因为其它的解不会优于此解了.这种方法的缺陷也是明显的,如果变量为N个,则需求2的N次个目标函数值,然后还要进行排序,这又是项工作量很大的工作,再一个就是,如果排序结果是把可行解排在最后一个,那还是得进行2的N次方次检验.
4.启发式算法 遗传算法,蚁群算法等都可归于此类.这都是随机算法,说白了就是听天由命,即使算出了最优解你也不知道是不是最优解,因为此类算法的收敛性都只是依概率收敛的,真正在算的过程中是否已得到最优只有上帝知道.启发式算法是万不得已的情况下才使用的,我们用这种方法只能保证得到的解比其它方法得到的好,但不一定就说得到了最优了.
0-1规划的求解方法还在研究之中,也许你会发现一个有效的算法.
‘叁’ 请帮忙用遗传算法编写两个求线性规划的问题(题目见图一和图二)。
作!业!自!己!做!!!
‘肆’ MatLab求解整数规划
各种主流的方法不让用,各种主流的程序也不让用,老师到底想要你们做什么?
MATLAB的整数规划能力比较有限,早期主要就是0-1二值规划的bintprog,后来遗传算法ga可以求解不带等式约束的非线性规划,再后来还有个整数线性规划的函数intlinprog。第三方比较着名的有个个人作者编写的分支定界法函数bnb20。
‘伍’ matlab的遗传算法求解0-1整数规划的程序
x = intlinprog(f,intcon,A,b,Aeq,beq)就可以了
用法举例:
Write the objective function vector and vector of integervariables.
f = [-3;-2;-1];
intcon = 3;
Write the linear inequality constraints.
A = [1,1,1];
b = 7;
Write the linear equality constraints.
Aeq = [4,2,1];
beq = 12;
Write the bound constraints.
lb = zeros(3,1);
ub = [Inf;Inf;1]; % Enforces x(3) is binary
Call intlinprog.
x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)
‘陆’ 遗传算法的主要步骤
为了使用遗传算法来解决优化问题,准备工作分为以下四步[56,57,61]。
7.4.1 确定问题的潜在解的遗传表示方案
在基本的遗传算法中,表示方案是把问题的搜索空间中每个可能的点表示为确定长度的特征串(通常是二进制串)。表示方案的确定需要选择串长l和字母表规模k。在染色体串和问题的搜索空间中的点之间选择映射有时容易实现,有时又非常困难。选择一个便于遗传算法求解问题的表示方案经常需要对问题有深入的了解。
7.4.2 确定适应值的度量
适应值度量为群体中每个可能的确定长度的特征串指定一个适应值,它经常是问题本身所具有的。适应值度量必须有能力计算搜索空间中每个确定长度的特征串的适应值。
7.4.3 确定控制该算法的参数和变量
控制遗传算法的主要参数有群体规模Pop-Size、算法执行的最大代数N-Gen、交叉概率Pc、变异概率Pm和选择策略R等参数。
(1)群体规模Pop-Size。群体规模影响到遗传算法的最终性能和效率。当规模太小时,由于群体对大部分超平面只给出了不充分的样本量,所以得到的结果一般不佳。大的群体更有希望包含出自大量超平面的代表,从而可以阻止过早收敛到局部最优解;然而群体越大,每一代需要的计算量也就越多,这有可能导致一个无法接受的慢收敛率。
(2)交叉率Pc。交叉率控制交叉算子应用的频率,在每代新的群体中,有Pc·Pop-Size个串实行交叉。交叉率越高,群体中串的更新就越快。如果交叉率过高,相对选择能够产生的改进而言,高性能的串被破坏得更快。如果交叉率过低,搜索会由于太小的探查率而可能停滞不前。
(3)变异率Pm。变异是增加群体多样性的搜索算子,每次选择之后,新的群体中的每个串的每一位以相等的变异率进行随机改变。对于M进制串,就是相应的位从1变为0或0变为1。从而每代大约发生Pm·Pop-Size·L次变异,其中L为串长。一个低水平的变异率足以防止整个群体中任一给定位保持永远收敛到单一的值。高水平的变异率产生的实质是随机搜索。
比起选择和交叉,变异在遗传算法中是次要的,它在恢复群体中失去的多样性方面具有潜在的作用。例如,在遗传算法执行的开始阶段,串中一个特定位上的值1可能与好的性能紧密联系,也就是说从搜索空间中某些初始随机点开始,在那个位上的值1可能一致地产生适应性度量好的值。因为越好的适应值与串中那个位上的值1相联系,复制作用就越会使群体的遗传多样性损失。当达到一定程度时,值0会从整个群体中的那个位上消失,然而全局最优解可能在串中那个位上是0。一旦搜索范围缩小到实际包含全局最优解的那部分搜索空间,在那个位上的值0就可能正好是达到全局最优解所需的。这仅仅是一种说明搜索空间是非线性的方式,这种情形不是假定的,因为实际上所有我们感兴趣的问题都是非线性的。变异作用提供了一个恢复遗传多样性的损失的方法。
(4)选择策略R。有两种选择策略。一是利用纯选择,即当前群体中每个点复制的次数比与点的性能值成比例。二是利用最优选择,即首先执行纯选择,且具有最好性能的点总是保留到下一代。在缺少最优选择的情况下,由于采样误差、交叉和变异,最好性能的点可能会丢失。
通过指定各个参数Pop-Size、Pc、Pm和R的值,可以表示一个特定的遗传算法。
7.4.4 确定指定结果的方法和停止运行的准则
当遗传的代数达到最大允许代数时,就可以停止算法的执行,并指定执行中得到的最好结果作为算法的结果。
基本的遗传算法
1)随机产生一个由固定长度字符串组成的初始群体。
2)对于字符串群体,迭代地执行下述步骤,直到选择标准被满足为止。
①计算群体中的每个个体字符串的适应值;
②实施下列三种操作(至少前两种)来产生新的群体,操作对象的选取基于与适应度成比例的概率。
选择:把现有的个体串按适应值复制到新的群体中。
交叉:通过遗传重组随机选择两个现有的子串进行遗传重组,产生两个新的串。
变异:将现有串中某一位的字符随机变异产生一个新串。
3)把在后代中出现的最好适应值的个体串指定为遗传算法运行的结果。这一结果可以是问题的解(或近似解)。
基本的遗传算法流程图如图7-1所示。
‘柒’ 数学建模常用模型及其作用
1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算
法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法)
2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要
处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具)
3、线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题
属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、
Lingo软件实现)
4、图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉
及到图论的问题可以用这些方法解决,需要认真准备)
5、动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计
中比较常用的方法,很多场合可以用到竞赛中)
6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题是
用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实
现比较困难,需慎重使用)
7、网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛
题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好
使用一些高级语言作为编程工具)
8、一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计算机只
认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非
常重要的)
9、数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常
用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调
用)
10、图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中也应该
要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab
进行处理)
作用:
应用数学去解决各类实际问题时,建立数学模型是十分关键的一步,同时也是十分困难的一步。建立教学模型的过程,是把错综复杂的实际问题简化、抽象为合理的数学结构的过程。要通过调查、收集数据资料,观察和研究实际对象的固有特征和内在规律,抓住问题的主要矛盾,建立起反映实际问题的数量关系,然后利用数学的理论和方法去分析和解决问题。这就需要深厚扎实的数学基础,敏锐的洞察力和想象力,对实际问题的浓厚兴趣和广博的知识面。数学建模是联系数学与实际问题的桥梁,是数学在各个领械广泛应用的媒介,是数学科学技术转化的主要途径,数学建模在科学技术发展中的重要作用越来越受到数学界和工程界的普遍重视,它已成为现代科技工作者必备的重要能力之。