最优经济算法
A. 已亲测:最优化算法的核心思想与程序例子
蒙特卡洛: 大量随机抽样下的比对,最后结果就是在当前抽样数量下筛选出的一定是最想要的那个结果。举例:假如篮子里有1000个苹果(你定的测试集),让你 每次闭着眼睛找一个最大的,可以不限制挑选次数;于是,你可以闭着眼随机拿了一个,然后再随机拿一个与第一个比,留下大的;再随机拿一个,与前次留下的比较,又 可以留下大的;循环往复这样:拿的次数越多,挑出最大苹果的可能性也就越大!但除非你把1000个苹果都挑一遍,否则你无法肯定最终挑出来的就是最大的一个。如果有 10000个苹果的话,继续如此说不定就能找到更大的!
模拟退火 :“渐渐”清楚自己的目标是什么!并不断朝“越发”明确的目标迈进,“越来越”不被诱惑干扰。举例:为了找出地球上最高的山,一只兔子在开始并没有 合适的策略,它随机地跳了很长时间!在这期间,它可能走向高处,也可能踏入平地或沟壑。但是,随着时间的流逝,它“渐渐清醒”! 并“直直地”朝着最高的方向跳去, 最后就到达了珠穆朗玛峰。
粒子群 :信息的社会共享,以一个团队的形式来搜索!团队里成员信息共享,共同进步;避免一个人工作时出现目光短浅,没有全局意识。举例:就像下围棋,只 专注于一个角落的战斗不一定能获取最终的胜利,只有放眼全局,把所有己方的棋子都盘活,相互间彼此帮助,才能获得最后胜利。
蚁群 :和粒子群算法有些相似,都是靠团队的力量共同去找目标!蚁群算法中特殊的是它的"信息素"挥发! 这个效果是其他算法中没有的!
以上所有的最优化算法都很难做到极高的精度,这是必然的: 一是 因为全局搜索已经耗费了大量的时间和资源,再过分强调精度有些不经济; 二是 因为全局搜索得到的最值可以理解为一精确最值的一个准确范围!即进入这个范围再进行精确的搜索一定可以找到精确最值;但是,全局最优的核心是随机/概率,当进入一个准确范围时,这个范围肯定是很小的,如果之后精确搜索还用全局搜索的概率参数(此时来说波动范围太大了),很可能又会跳出这个好不容易找到的精确区域!
因此: 全局最优算法与局部最优算法是要相结合的 !全局最优算法负责划定最值所在的一个精确的、较小的范围内,即告诉局部最优算法在这个范围内继续找一定可以找到精确解;局部最优算法按照较小的步长、较高的精度继续搜索精确最值。
常用全局最优算法:蒙特卡洛(MC)、模拟退火(SA)、粒子群(PSO)、蚁群(AG);
常用局部最优算法:梯度下降法、牛顿法、阻尼牛顿法、共轭梯度法;
推荐搭配1:蒙特卡洛
推荐搭配2:粒子群 + 梯度下降
推荐搭配3:蚁群 + 梯度下降 + 重检机制
以上提到算法的 “程序 + 详细使用说明” 参考以下地址:
优化算法
B. 经济最优单目标遗传优化算法怎么实现
我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化BP神经网络函数极值寻优:
%% 该代码为基于神经网络遗传算法的系统极值寻优
%% 清空环境变量
clc
clear
%% 初始化遗传算法参数
%初始化参数
maxgen=100; %进化代数,即迭代次数
sizepop=20; %种群规模
pcross=[0.4]; %交叉概率选择,0和1之间
pmutation=[0.2]; %变异概率选择,0和1之间
lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1
bound=[-5 5;-5 5]; %数据范围
indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%% 初始化种群计算适应度值
% 初始化种群
for i=1:sizepop
%随机产生一个种群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%计算适应度
indivials.fitness(i)=fun(x); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色体
avgfitness=sum(indivials.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代寻优
% 进化开始
for i=1:maxgen
i
% 选择
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 变异
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);
% 计算适应度
for j=1:sizepop
x=indivials.chrom(j,:); %解码
indivials.fitness(j)=fun(x);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;
avgfitness=sum(indivials.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%% 结果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度 变量');
x=bestchrom;
% 窗口显示
disp([bestfitness x]);
C. 订货点的计算公式
E=LT*D/365,其中D:Demand 需求
以ERP实施实例加以说明,已知制造企业与库存有关的信息如下:
①年需求量为30000单位(假设每年360天)
②购买价格每单位100元
③库存储存成本是商品买价的30%
④订货成本每次60元
⑤公司希望的安全储备量为750单位
⑥订货数量只能按100的倍数(四舍五入)确定
⑦订货至到货的时间为15天
要求:①最优经济订货量②确定再订货点③存货平均占用资金按照以上的算法,不难得到
①经济订货量=[(2*年需求量*订货成本)/单位储存成本]^(1/2)
=[(2*30000*60)/(100*30%)]^(1/2)=346.41(单位)
②再订货点=平均日需求X订货天数+安全储备量=30000/36O*15+750
(3)最优经济算法扩展阅读;
将订货提前期tp标注在物资卡片和帐页上,每到订货点(日)时即检查实际库存量qa,计算qp-qa的差。如为+Δq,则按q+Δq订货;如为-q,则按q-Δq订货。这样调整订货量后,可以防止缺货或超储现象的发生。
这种方法的特点是:假定订货提前期t、p(即市场供应、装运条件)是不变的(即t?p是个常量),每次订货的批量是相等的,订货时间是随着物资库存量降到 订货点时间的不同而变化的。因此,在生产对物资的消耗速度不均衡的情况下,可以利用在订货点派人订货来适应物资消费速度的变化,保持物资储备的合理性。
D. 什么是帕累托最优算法
帕累托最优是指资源分配的一种理想状态,即假定固有的一群人和可分配的资源,从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,也不可能再使某些人的处境变好。换句话说,就是不可能再改善某些人的境况,而不使任何其他人受损。
一般来说,达到帕累托最优时,会同时满足以下3个条件:
交换最优条件
即使再交易,个人也不能从中得到更大的利益。此时对任意两个消费者,任意两种商品的边际替代率是相同的,且两个消费者的效用同时得到最大化。
生产最优条件
这个经济体必须在自己的生产可能性边界上。此时对任意两个生产不同产品的生产者,需要投入的两种生产要素的边际技术替代率是相同的,且两个生产者的产量同时得到最大化。
产品混合最优条件
经济体产出产品的组合必须反映消费者的偏好。此时任意两种商品之间的边际替代率必须与任何生产者在这两种商品之间的边际产品转换率相同。
如果一个经济体不是帕累托最优,则存在一些人可以在不使其他人的境况变坏的情况下使自己的境况变好的情形。普遍认为这样低效的产出的情况是需要避免的,因此帕累托最优是评价一个经济体和政治方针的非常重要的标准。
从市场的角度来看,一家生产企业,如果能够做到不损害对手的利益的情况下又为自己争取到利益,就可以进行帕累托改进,换而言之,如果是双方交易,这就意味着双赢的局面。