精华内容
下载资源
问答
  • 基于MATLAB的一类运输优化问题求解,王丽娟,,供应点的选取及调运物资数量的确定是运输决策中的关键性问题。本文通过对运输决策问题中基本情况的研究,对运力有限情况下单个需
  • 第 6 章 MATLAB 解方程与最优化问题求解 本章要点 ? ? ? ? MATLAB 线性方程组求解 MATLAB 非线性方程数值求解 MATLAB 常微分方程初值问题的数值解法 MATLAB 最优化问题求解 6.1 线性方程组求解 6.1.1 直接解法 1 ...
  • [最优化]不等式约束的优化问题求解

    万次阅读 2018-06-08 16:31:23
    不等式约束的优化问题求解 与前文讨论的只含等式约束的优化问题求解类似,含不等式约束的优化问题同样可以用拉格朗日乘子法进行求解 对于一般形式的优化问题: minimizef(x)subject toh(x)=0g(x)≤0...

    不等式约束的优化问题求解

    与前文讨论的只含等式约束的优化问题求解类似,含不等式约束的优化问题同样可以用拉格朗日乘子法进行求解
    对于一般形式的优化问题:

    minimizef(x)subject toh(x)=0g(x)0

    其中,f:RnR,h:RnRm,mn,g:RnRp
    引入下面两个定义:

    定义1:对于一个不等式约束gj(x)0,如果在xgj(x)=0,那么称该不等式约束是x处的起作用约束;如果在xgj(x)<0,那么称该约束是x处的不起作用约束。按照惯例,总是把等式约束hi(x)当作起作用的约束

    定义2:x满足h(x)=0,g(x)0,设J(x)为起作用不等式约束的下标集:

    J(x){j:gj(x)=0}

    如果向量
    hi(x),gj(x),1im,jJ(x)

    是线性无关的,那么称x是一个正则点

    下面介绍某个点是局部极小点所满足的一阶必要条件,即KKT条件。
    KKT条件:f,h,gC1,设x是问题h(x)=0,g(x)0的一个正则点和局部极小点,那么必然存在λRmμRp,使得以下条件成立:

    μ0Df(x)+λTDh(x)+μTDg(x)=0TμTg(x)=0h(x)=0g(x)0

    那么在求解不等式约束的最优化问题的时候,可以搜索满足KKT条件的点,并将这些点作为极小点的候选对象。

    二阶充分必要条件

    除了一阶的KKT条件之外,求解这类问题还有二阶的充分必要条件。

    二阶必要条件:在上述的问题中若x是极小点且f,h,gC2。假设x是正则点,那么存在λRmμRp使得

    1. μ0,Df(x)+λTDh(x)+μTDg(x)=0T,μTg(x)=0
    2. 对于所有yT(x),都有yTL(x,λ,μ)y0成立

    二阶充分条件:假定f,h,gC2xRn是一个可行点,存在向量λRmμRp使得

    1. μ0,Df(x)+λTDh(x)+μTDg(x)=0T,μTg(x)=0
    2. 对于所有yT~(x,μ),y0,都有yTL(x,λ,μ)y>0成立

    那么x是优化问题h(x)=0,g(x)0的严格局部极小点

    展开全文
  • matlab解方程和优化问题求解,能解决一些应用问题。
  • [最优化]等式约束的优化问题求解

    千次阅读 2018-05-18 11:01:35
    等式约束的优化问题求解 基本概念 本文将讨论下类形状的优化问题 minimizef(x)subject&amp;nbsp;toh(x)=0minimizef(x)subject&amp;nbsp;toh(x)=0 minimize\quad f(x)\\ subject\ to\quad h(x)=0 其中x...

    等式约束的优化问题求解

    基本概念

    本文将讨论下类形状的优化问题

    minimizef(x)subject toh(x)=0

    其中xRn,f:RnR,h:RnRm,h=[h1,...,hm]T,mn,假定函数h连续可微,即hC1
    下面介绍几个基本概念:

    正则点:对于满足约束h1(x)=0,...,hm(x)=0的点x,如果梯度向量h1(x),...,hm(x)是线性无关的,则称x是该约束的一个正则点。

    切线空间:曲面S=xRn:h(x)=0中点x处的切线空间为集合T(x)={y:Dh(x)y=0}。可以看出切线空间T(x)是矩阵Dh(x)的零空间,即T(x)=N(Dh(x))

    法线空间:曲面S=xRn:h(x)=0中点x处的法线空间为集合N(x)={xRn:x=Dh(x)Tz,zRm}。可以看出法线空间N(x)是矩阵Dh(x)的零空间,即N(x)=R(Dh(x)T)

    拉格朗日条件

    首先考虑只包含两个决策变量和一个等式约束的优化问题。令h:R2R为约束函数,可知函数定义域中x处的梯度h(x)与通过该点的h(x)水平集正交,选择点x=[x1,x1]T使得h(x)=0,且h(x)0,经过点x的水平集为集合{x:h(x)=0}。可利用曲线x(t)x领域内进行参数化,x(t)是一个连续可微的向量函数h:RR2

    x(t)=[x1(t),x1(t)]T,t(a,b),x=x(t),x˙(t)0,t(a,b)

    接下来可以证明,h(x)x˙(t)正交。由于h在曲线{x(t):t(a,b)}上是常数0,即对于所有的t(a,b)都有
    h(x(t))=0

    因此对于任意的t(a,b)都有
    ddth(x(t))=0

    利用链式法则可以得到
    ddth(x(t))=h(x(t))Tx˙(t)=0

    因此h(x)x˙(t)正交
    xf:RR2在满足h(x)=0上的极小点的时候,可以证明,f(x)x˙(t)正交,构造关于t的复合函数:
    ϕ(t)=f(x(t))

    t=t的时候取得极小值,根据无约束极值问题的一阶必要条件可知
    dϕdt(t)=0

    利用链式法则可以得到
    ddtϕ(t)=f(x(t))Tx˙(t)=f(x)Tx˙(t)=0

    因此,f(x)x˙(t)正交,上面已经证明f(x)x˙(t)正交,那么向量f(x)h(x)平行,那么可以得到这种情况下的拉格朗日定理:

    n=2,m=3时的拉格朗日定理:设点x是函数f:R2R的一个极小点,约束条件是h(x)=0,h:R2R,那么f(x)h(x)平行,即如果h(x)0,则存在标量λ,使得

    f(x)+λh(x)=0

    其中λ为拉格朗日乘子。
    将这个定理推广到一般情况下,即f:RnR,h:RnRm,mn的时候,可以得到:
    拉格朗日定理:xf:RnR的局部极小点(或极大点),约束条件为h(x)=0,h:RnRm,mn。如果x是正则点,那么存在λRm使得
    Df(x)+λTDh(x)=0

    二阶条件

    二阶必要条件:xf:RnR在约束条件h(x)=0,h:RnRm,mn,f,hC2下的局部极小点。如果x是正则点,那么存在λRm使得

    1.Df(x)+λTDh(x)=0T
    2.对于所有的yT(x),都有yTL(x,λ)y0

    二阶充分条件:函数f,hC2,如果存在点xRnλRm,使得

    1.Df(x)+λTDh(x)=0T
    2.对于所有的yT(x),都有yTL(x,λ)y>0

    那么xf在约束条件h(x)=0下的严格局部极小点

    本文介绍了等式约束下的拉格朗日乘子法,后面还将会介绍不等式约束下的拉格朗日乘子法以及KKT条件等,To be continue…

    展开全文
  • 6.4.3 线性规划问题求解 在MATLAB中求解线性规划问题使用函数linprog其调用格式为 [x, fval] = linprog(f, A, b, Aeq, beq, lbnd, ubnd) 其中x是最优解fval是目标函数的最优...第6章 MATLAB解方程与最优化问题求解 MATL
  • Lingo是一款求解优化问题的软件,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。 最优化问题 首先介绍一下什么是最优化问题。 最优化问题,即在...

    介绍

    Lingo是一款求解最优化问题的软件,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。

    最优化问题

    首先介绍一下什么是最优化问题。

    最优化问题,即在所有可行的方案中选出使得目标最优的方案的实际问题。

    优化问题的三要素是:

    • 决策变量
    • 约束条件
    • 目标函数

    数学规划/函数优化问题的标准形式

    min/maxf(x)s.t.gi(x)0,i=1,,m1hj(x)=0,j=1,,m2f:DR,DRn \min/ \max f(x)\\ s.t. g_i(x)\leq0,i=1,\dots,m_1\\ h_j(x)=0,j=1,\dots,m_2\\ f:D \rightarrow R,D \subseteq R^n

    优化问题分类

    根据决策变量取值情况不同,分为连续型离散型

    根据有无约束条件分为无约束优化带约束优化

    根据处理思想方法不同,分为数学规划(函数优化问题)、组合优化、图论与网络流、动态规划、目标优化、模糊优化、随机优化、对策与决策……

    Lingo教程

    求解LP问题

    min=2x1+3x2s.t.x1+x2350x11002x1+x2600 \min=2*x_1+3*x_2\\ s.t. x_1+x_2 \geq 350\\ x_1 \geq 100\\ 2*x_1+x_2 \leq 600

    求解这样一个问题,只需直接输入如下代码,写法基本与数学公式一直,不用改写成标准形式

    min=2*x1+3*x2;
    x1+x2>=350;
    x1>=100;
    2*x1+x2<=600;
    

    点击🎯图标运行:

    LP-Lingo

    可以看到直接识别出了问题类型,并找到了全局最优解。

    求解MILP问题

    在这里插入图片描述

    @free: 可正可负(默认大于等于0)

    @gin:整数

    求解IQP问题

    一定要在Lingo选项->求解非线性菜单中勾选二次规划识别!!否则会按照INLP问题求解,只能得出局部最优解。

    image-20200907165607014

    max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
    x1+x2<=100;
    x1<2*x2;
    @gin(x1);@gin(x2);
    

    IQP

    运算符

    • 算数运算符 + - * / ^
    • 关系运算符 <(=) = >(=)
    • 逻辑运算符
      • 否定 #NOT#
      • 相等 #EQ#
      • 不等 #NE#
      • 与 #AND#
      • 或 #OR#
      • 大于 #GT#
      • 大于等于 #GE#
      • 小于等于 #LE#
      • 小于 #LT#

    数学函数

    • @ABS(x) 绝对值
    • @SIN(x),@COS(x) … 三角函数
    • @EXP(x) 返回exe^x
    • @LOG(x) 自然对数
    • @SIGN(x) x<0返回-1;否则返回1
    • @FLOOR(x) 返回x靠近0的整数部分,如@FLOOR(1.2)=1,@FLOOR(-2.3)=-2

    金融函数

    • @fpa(r,n)=k=1n1(1+r)k=1(1+r)nr@fpa(r,n)=\sum_{k=1}^n{\frac{1}{\left( 1+r \right) ^k}=}\frac{1-\left( 1+r \right) ^{-n}}{r}
    • @fpl(r,n)=(1+r)n@fpl(r,n)=\left( 1+r \right) ^{-n}

    概率函数

    • @pbn(p,n,x) 二项分布
    • @pcx(n,x) 卡方分布
    • @pfd(n,d,x) F分布
    • ……

    变量界定函数

    Lingo变量默认是非负的

    • @bin(x) x=0或1
    • @bnd(L,x,U) LxUL \le x \le U
    • free(x) 实数
    • @gin(x) 整数

    条件判断函数

    @IF(logical_condition,true_result,false_result)

    例:分段函数
    f(x)={100,x>02x,x0 f\left( x \right) =\begin{cases} 100,x>0\\ 2x, x\le 0\\ \end{cases}
    fx=@if(x #gt# 0,100,2*x)

    集合操作函数

    • @in(set_name,index_1[,index_2]) 是否在集合中,返回0/1
    • @wrap(index,limit) 取模,返回 j=index-k*limit=index(mod limit) +1, k为整数,保证j在[1, limit]内
    • @size(set_name) 集合成员个数

    集合循环函数

    • @FOR(set_name:constraint_expressions) 对每个元素生成约束
    • @MAX(set_name:expressions) 表达式的最大值
    • @MIN(set_name:expressions) 表达式的最小值
    • @SUM(set_name:expressions) 表达式的和

    例:产生序列{1,4,9,16,25}

    model:
    sets:
     number/1..5/:x;
    endsets
     @for(number(i):x(i)=i^2);
    end
    

    例:

    s=@sum(number(i)|i#le# 5: x); !前5个求和
    m=@min(number(i)|i#ge# 5: x); !5个之后的最小值
    

    在这里插入图片描述

    输入输出函数

    • @OLE excel表格读取
    • @file
    • @text

    求解状态

    • @status()
    • 0 Global Optimum 全局最优
    • 1 Infeasible 不可行
    • 2 Unbounded 无界
    • 3 Undetermined 不确定
    • 4 Feasible 可行
    • 5 Infeasible or Unbounded
    • 6 Local Optimum 局部最优
    • 7 Locally Infeasible 局部不可行(可行解可能存在,但lingo没找到)
    • 8 Cutoff 目标函数的截断值被达到
    • 9 Numeric Error 算数错误

    Lingo建模技巧

    • 尽量使用实数优化,减少整数约束和整数变量
    • 尽量使用光滑优化,少用绝对值、符号函数、多变量求最大/最小值、四舍五入、取整等
    • 尽量使用线性模型,x/y<5改为x<5y
    • 合理设置上下界,尽可能给出变量初始值
    • 参数数量级适当,不同参数数量级差距一般要求小于3

    原文地址:https://blog.luzy.top/posts/2069852828/

    展开全文
  • 基于Matlab的遗传算法程序设计及优化问题求解

    万次阅读 多人点赞 2020-10-21 17:23:50
    在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法即找出一个最优解. 这种算法是1960年由Holland提出来的其最初的目的是研究自然系统的自适应行为并设计具有自适应功能的软件...

    遗传算法(Genetic Algorithm)是模拟自然界生物进化机制的一种算法即遵循适者生存、优胜劣汰的法则也就是寻优过程中有用的保留无用的则去除. 在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法即找出一个最优解. 这种算法是1960年由Holland提出来的其最初的目的是研究自然系统的自适应行为并设计具有自适应功能的软件系统. 它的特点是对参数进行编码运算不需要有关体系的任何先验知识沿多种路线进行平行搜索不会落入局部较优的陷阱,能在许多局部较优中找到全局最优点是一种全局最优化方法[1-3]. 近年来,遗传算法已经在国际上许多领域得到了应用. 该文将从遗传算法的理论和技术两方面概述目前的研究现状描述遗传算法的主要特点、基本原理以及改进算法,介绍遗传算法的应用领域,并用MATLAB实现了遗传算法及最优解的求解.

    科学研究、工程实际与国民经济发展中的众多问题可归结作“极大化效益、极小化代价”这类典型模型. 求解这类模型导致寻求某个目标函数(有解析表达式或无解析表达式)在特定区域上的最优解. 而为解决最优化问题目标函数和约束条件种类繁多,有的是线性的,有的是非线性的;有的是连续的,有的是离散的;有的是单峰值的,有的是多峰值的. 随着研究的深入,人们逐渐认识到:在很多复杂情况下要想完全精确地求出其最优解既不可能,也不现实,因而求出近似最优解或满意解是人们的主要着眼点之一. 总的来说,求最优解或近似最优解的方法有三种: 枚举法、启发式算法和搜索算法.

    (1)枚举法. 枚举出可行解集合内的所有可行解以求出精确最优解. 对于连续函数,该方法要求先对其进行离散化处理,这样就有可能产生离散误差而永远达不到最优解. 另外,当枚举空间比较大时该方法的求解效率比较低,有时甚至在目前最先进的计算工具上都无法求解.

    (2)启发式算法. 寻求一种能产生可行解的启发式规则以找到一个最优解或近似最优解. 该方法的求解效率虽然比较高,但对每一个需要求解的问题都必须找出其特有的启发式规则,这个启发式规则无通用性不适合于其它问题.

    (3)搜索算法. 寻求一种搜索算法,该算法在可行解集合的一个子集内进行搜索操作以找到问题的最优解或近似最优解. 该方法虽然保证了一定能够得到问题的最优解,但若适当地利用一些启发知识就可在近似解的质量和求解效率上达到一种较好的平衡.

    随着问题种类的不同以及问题规模的扩大,要寻求一种能以有限的代价来解决上述最优化问题的通用方法仍是一个难题. 而遗传算法却为我们解决这类问题提供了一个有效的途径和通用框架开创了一种新的全局优化搜索算法.

    3.2遗传算法的起源与发展

    3.2.1 遗传算法的起源

    50年代末到60年代初,自然界生物进化的理论被广泛接受生物学家Fraser,试图通过计算的方法来模拟生物界“遗传与选择”的进化过程,这是遗传算法的最早雏形. 受一些生物学家用计算机对生物系统进行模拟的启发,Holland开始应用模拟遗传算子研究适应性. 在1967年,Bagley关于自适应下棋程序的论文中,他应用遗传算法搜索下棋游戏评价函数的参数集并首次提出了遗传算法这一术语. 1975年,Holland出版了遗传算法历史上的经典著作《自然和人工系统中的适应性》,首次明确提出遗传算法的概念. 该著作中系统阐述了遗传算法的基本理论和方法,并提出了模式(schemat atheorem)[4],证明在遗传算子选择、交叉和变异的作用下具有低阶、短定义距以及平均适应度高于群体平均适应度的模式在子代中将以指数级增长. Holand创建的遗传算法,是基于二进制表达的概率搜索方法. 在种群中通过信息交换重新组合新串;根据评价条件概率选择适应性好的串进入下一代;经过多代进化种群最后稳定在适应性好的串上. Holand最初提出的遗传算法被认为是简单遗传算法的基础,也称为标准遗传算法.

    3.2.2 遗传算法的发展

    (1)20世纪60年代,John Holland教授和他的数位博士受到生物模拟技术的启发,认识到自然遗传可以转化为人工遗传算法. 1962年,John Holland提出了利用群体进化模拟适应性系统的思想,引进了群体、适应值、选择、变异、交叉等基本概念.

    (2)1967年,J.D.Bagely在其博士论文中首次提出了“遗传算法”的概念.

    (3)1975年,Holland出版了《自然与人工系统中的适应性行为》(Adaptation in Natural and Artificial System).该书系统地阐述了遗传算法的基本理论和方法,提出了遗传算法的基本定理—模式定理,从而奠定了遗传算法的理论基础. 同年De Jong在其博士论文中,首次把遗传算法应用于函数优化问题对遗传算法的机理与参数进行了较为系统地研究并建立了著名的五函数测试平台.

    (4)20世纪80年代初,Holland教授实现了第一个基于遗传算法的机器学习系统—分类器系统(Classifier System简称CS),开创了基于遗传算法的机器学习的新概念.

    (5)1989年,David Goldberg出版了《搜索、优化和机器学习中的遗传算法》(Genetic Algorithms in Search Optimization and Machine Learning).该书全面系统地总结了当时关于遗传算法的研究成果,结合大量的实例完整的论述了遗传算法的基本原理及应用,奠定了现代遗传算法的基础.

    (6)1992年,John R.Koza出版了专著《遗传编程》(Genetic Programming)提出了遗传编程的概念,并成功地把遗传编程的方法应用于人工智能、机器学习、符号处理等方面. 随着遗传算法的不断深入和发展,关于遗传算法的国际学术活动越来越多,遗传算法已成为一个多学科、多领域的重要研究方向.

    今天遗传算法的研究已经成为国际学术界跨学科的热门话题之一. 遗传算法是一种有广泛应用前景的算法,但是它的研究和应用在国内尚处于起步阶段. 近年来遗传算法已被成功地应用于工业、经济管理、交通运输、工业设计等不同领域解决了许多问题.例如可靠性优化、流水车间调度、作业车间调度、机器调度、设备布局设计、图像处理以及数据挖掘等.

     

    随机初始化种群p(0)={x1,x2,...,xn};t=0;计算p(0)中个体的适应值;

    while(不满足终止条件)

    { 根据个体的适应值及选择策略从p(t)中选择下一代生成的父体p(t);

    执行交叉,变异和再生成新的种群p(t+1) ;

    计算p(t+1)中个体的适应值;

    t=t+1;

    }

    伪代码为:

    BEGIN:

     I=0;

     Initialize P(I);

     Fitness P(I);

     While (not Terminate2Condition)

    {

    I++;

     GA2Operation P(I);

     Fitness P(I);

      }

    END.

    (1)编码表示

    Holland在运用模式定理分析编码机制时,建议使用二进制编码,但二进制编码不能直接反映问题的固有结构精度不高,个体长度大,占用计算机内存多.解决这个问题的措施有:

    ①动态编码(dynamic encoding)GA是当算法收敛到某局部最优时增加搜索的精度从而使得在全局最优点附近,可以进行更精确的搜索,增加精度的办法是在保持串长不变的前提下减小搜索区域.

    ②对于问题的变量是实向量的情形,可以直接采用实数进行编码,这样可以直接在解的表现型上进行遗传操作,从而便于引入与问题领域相关的启发式信息以增加算法的搜索能力.

    ③复数编码的GA是为了描述和解决二维问题,基因用x+yi表示,其还可以推广到多维问题的描述中.

    ④多维实数编码GA使无效交叉发生的可能性大大降低,同时其合理的编码长度也有助于算法在短时间内获得高精度的全局最优解.

    ⑤ 在组合优化中,可以使用有序串编码. 当问题的表示是树和图时,我们还可以使用结构式编码.

    (2)适应度函数

    适应度函数是用来区分群体中个体好坏的标准,是自然选择的唯一标准,选择的好坏直接影响算法的优劣. 选择的不容易引起两种不利于优化的现象:

    ①异常个体引起早熟收敛,影响求得全局最优解. 这种现象常出现在小规模群体中. 在遗传进化的早期,一些超常个体的适应度很大,在群体中占有很大的比例,这些异常个体因竞争力太突出而控制了选择过程,结果使得算法过早收敛.

    ②个体差距不大,引起搜索成为随机漫游. 当群体中个体的适应度差别不大,个体间竞争力减弱,特别是平均适应度以接近最佳适应度时,最佳个体与其他许多个体在选择过程中就会有大体相等的选择机会,从而使有目标的优化搜索过程变成无目标的随机漫游,影响求得全面最优解. 对于上述问题可以通过引入适应度函数定标技术来加快收敛速度和跳出局部最优点. 针对第一种情况,我们可以通过缩小相应的适应度函数值降低超常个体的竞争力;对于第二种情况,我们可以放大相应的适应度函数值以拉开个体之间的差距,提高个体间的竞争力.对适应值进行定标就是通过变换改变原适应值间的比例关系,常用的比例变换有线性变换、乘幂变换和指数变换等.

    (3)选择策略

    优胜劣汰的选择机制使得适应值大的个体有较大的存活机会,不同的选择策略对算法性能有较大的影响. 轮盘赌法是使用最多的选择策略,但这种策略可能会产生较大的抽样误差,于是对此提出了很多的改进方法,如繁殖池选择、Boltzmann选择、非线性排名选择、基于局部竞争机制的选择如(λ+μ)选择等等.

    (4)控制参数 

    控制参数一般有群体大小、交换概率、变异概率等,这些参数对遗传算法性能影响较大. 在标准的遗传算法中采用经验进行估计,这将带来很大的盲目性而影响算法的全局最优性和收敛性,人们意识到这些参数应该随着遗传进化而自适应变化. 基于这一观,Davis提出自适应算子概率方法,即用自适应机制把算子概率与算子产生的个体适应性结合,高适应性值被分配高算子概率. 这种方法较好地解决了这一问题.

    3.10遗传算法的应用领域

    遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性即健壮性,所以广泛应用于很多学科.下是遗传算法的一些主要应用领域:

    (1)函数优化.函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例.[18] 很多人构造出了各种各样的复杂形式的测试函数,有连续函数好有离散函数,有凸函数也有凹函数,人们用这些几何特性各异的函数来评价遗传算法的性能. 而对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,遗传算法却可以方便地得到较好的结果.

    (2)组合优化. 随着问题规模的扩大,组合优化问题的搜索空间急剧扩大,有时在目前的计算机上用枚举法很难或者甚至不可能得到其精确最优解. 对于这类复杂问题,人们已意识到应把精力放在寻求其满意解上,而遗传算法则是寻求这种满意解的最佳工具之一. 实践证明,遗传算法对于组合优化中的NP完全问题非常有效.,例如,遗传算法已经在求解旅行商问题、背包问题、装箱问题、图形划分问题等方面得到成功的应用.

    (3)生产调度问题. 生产调度问题在许多情况下所建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解,也会因简化太多而使得求解结果与实际甚远. 因此,目前在现实生产中好主要靠一些经验进行调度. 遗传算法已成为解决复杂高度问题的有效工具,在单件生产车间调度、流水线生产车间调度、生产规划、任务分配等方面遗传算法都得到了有效的应用.

    (4)自动控制. 在自动控制领域中许多与优化相关的问题需要求解,遗传算法的应用日益显示了良好的效果. 例如用遗传算法进行航空控制系统的优化、基于遗传算法的模糊控制器优化设计、基于遗传算法的参数辨识、利用遗传算法进行人工神经网络的结构优化设计和权值学习都显示出了遗传算法在这些领域中应用的可能性.

    (5)机器人智能控制. 机器人是一类复杂的难以精确建模的人工系统,而遗传算法的起源就来自于对人工自适应系统的研究,所以机器人智能控制理所当然地成为遗传算法的一个重要应用领域. 例如遗传算法已经在移动机器人路径规划、关节机器人运动轨迹规划、机器人逆运动学求解、细胞机器人的结构优化和行动协调等方面得到研究和应用.

    (6)图像处理和模式识别. 图像处理和模式识别是计算机视觉中的一个重要研究领域. 在图像处理过程中,如扫描、特征提取、图像分割等不可避免地会产生一些误差这些误差会影响到像处理和识别的效果. 如何使这些误差最小是使视觉达到实用化的重要要求. 遗传算法在图像处理中的优化计算方面是完全胜任的. 目前已在图像恢复、图像边缘特征提取、几何形状识别等方面得到了应用.

    (7)人工生命. 人工生命是用计算机等人工媒体模拟或构造出具有自然生物系统特有行为的人造系统. 自组织能力和自学习能力是人工生命的两大主要特征. 人工生命与遗传算法有着密切的关系,基于遗传算法的进化模型是研究人工生命现象的重要理论基础. 虽然人工生命的研究尚处于启蒙阶段,但遗传算法已在其进化模型、学习模型、行为模型等方面显示了初步的应用能力. 可以预见,遗传算法在人工生命及复杂自适应系统的模拟与设计、复杂系统突现性理论研究中,将得到更为深入的发展.

    (8)遗传程序设计. 1989年,美国Standford大学的Koza教授发展了遗传编程的概念,其基本思想是:采用树型结构表示计算机程序,运用遗传算法的思想,通过自动生成计算机程序来解决问题. 虽然遗传编程的理论尚未成熟,应用也有一些限制,但它已成功地应用于人工智能、机器学习等领域,目前公开的遗传编程实验系统有十多个,例如,Koza开发的ADF系统,White开发的GPELST系统等.

    (9)机器学习. 学习能力是高级自适应系统所应具备的能力之一. 基于遗传算法的机器学习,特别是分类器系统,在许多领域得到了应用. 例基于遗传算法的机器学习可用于调整人工神经网络的连接权,也可用于神经网络结构的优化设计.

    (10)数据挖掘. 数据挖掘是近几年出现的数据库技术,它能够从大型数据库中提取隐含的、先前未知的、有潜在应用价值的知识和规则. 许多数据挖掘问题可看成是搜索问题,数据库看作是搜索空间,挖掘算法看作是搜索策略. 因此,应用遗传算法在数据库中进行搜索,对随机产生的一组规则进行进化,直到数据库能被该组规则覆盖,从而挖掘出隐含在数据库中的规则. Sunil已成功地开发了一个基于遗传算法的数据挖掘工具,利用该工具对两个飞机失事的真实数据库进行了数据挖掘实验,结果表明遗传算法是进行数据挖掘的有效方法之一.

    Matlab是一个高性能的计算软件,配备有功能强大的数学函数支持库,适用范围大,编程效率高,语句简单,功能齐备,是世界上顶级的计算与仿真程序软件. 利用Matlab来编写遗传算法程序简单而且易于操作.

    (1)编码

    编码就是把一个问题的可行解从其解空间转换到遗传算法能够处理的搜索空间的转化方法,编码形式决定了重组算子的操作. 遗传算法是对编码后的个体作选择与交叉运算,然后通过这些反复运算达到优化目标. 遗传算法首要的问题是通过编码将决策变量表示成串结构数据. 我们常用的是二进制编码,即用二进制数构成的符号串来表示每个个体. 通常根据搜索精度(sca_var)、决策变量上界(range(2)) 的和下界(range(1))来确定各个二进制字符串的长度(bit_n),搜索精度为sca_var=(range(2)-range(1))./(2^bit_n—1),然后再随机产生一个的初始种群(be_gen),其规模为popusize. 下面用encoding函数来实现编码和产生初始的种群:

    function [be_gen,bit_n]=encoding(sca_var,range(1),range(2),popusize)

    bit_n=ceil(log2 (( range(2)- range(1))./sca_var));

    be_gen= randint( popusize, sum(bit_n));

    (2)译码

    决策变量经过编码之后,各个个体构成的种群be_gen 要通过解码才能转换成原问题空间的决策变量构成的种群vgen,这样才能计算其相应的各个适应度值.另外,译码首先要求出二进制数对应的十进制数decimal,然后根据下面的公式求出实际决策变量X: X=range(1)+decimal*sca_dec. 通常可以用decoding函数[19]来实现译码的过程:

    function[vgen,fitness]=decoding(fcn,be_gen,bit_n,range(1),range(2))

    popusize=size(be_gen,1);

    n_var=length(bit_n);

    sca_dec=(range(2)- range(1))./(2^bit_n- 1);

    bit_n=cumsun(bit_n);

    bit_n=[0 bit_n];

    for i=1:n_var

    be_var(i)=be_gen(:,bits(i)+1:bit_n(i+1));

    var(i)= range(1)(i)+sum(ones(popusize,1)*2.^(size(be_var(i),2)- 1:- 1:0).*be_var(i),2).*sca_dec(i);

    end

    vgen=[var(1,:)];

    for i=1:popusize

    fitness(i)=eval([fcn,’(var_gene(i,:))’] );

    end

    (3)选择

    选择就是利用码后求得的各个个体的适应度的大小,从中选出一些适应度高的个体,并淘汰一些适应度较小的个体以生成交配池的过程. 然后再对优良的个体进行交叉和变异操作. 在选择算子中,先找出当前群体中适应度最高和最低的个体,将最佳个体bes_ind 保留并替换最差个体,直接进入下一代,将剩余个体evol_gen 按适应值比例选择法进行操作,即采用轮盘赌(roulettewheel)方式来实现. 这种方式首先计算每个个体的适应值,然后计算出该适应值在群体适应值总和中所占的比例,来表示该个体被选中的概率,这样既能保证最佳个体的适应度值不会减小,最佳个体不会被交叉变异操作所破坏,也能不断提高该群体的平均适应度值. 比例选择法体现了生物进化过程中“优胜劣汰,适者生存” 的思想,并且保证将优良的基因遗传给下一代. 我们可以用下面的函数来实现选择算子:

    function [evol_gen,bes_ind,max_fitness]=selection(old_gen,fitness)

    [min_fitn,expo(b)]=min(fitn); [max_fitn,expo(a)]=max_(fitn);

    popusize=length(fitness);

    bes_ind=old_gen(expo(a),:);

    expo=[1:popusize];expo(expo(a))=0;expo(expo(b))=0;

    expo=nonzeros(expo);

    evol_gen=old_gen(expo,:);

    evol_fitness=fitness(expo,:);

    evol_popusize=popusize-2;

    posel=evol_fitness/sum(evol_fitness);

    poselcum=cusum(posel);

    r=rand(1,evol_popusize);

    selected=1+sum(poselcum*ones(1,evol_popusize)<ones(evol_popusize,1)*r);

    evol_gen=evol_gen(selection,:);

    (4)重组

    重组算子是产生新个体的主要方法,它决定了遗传算法的全局搜索能力. 重组操作的作用是将原有的优良基因遗传给下一代个体. 并生成包含更优良基因的新个体. 通常使用的遗传算子是一点交叉法,就是按交叉概率pc(0<pc1)实施交叉操作,两个个体编码串(string)在交叉位置处(crossp)相互交换各自的部分编码,从而形成新的一对个体. 程序如下:

    function [new_gen]=recombination(old_gen,pc)

    [nouse,match]=sort(rand(size(old_gen,1),1));

    match_gen=old_gen(match,:);

    pairs=size(match- gen,1)/2;

    bit_n=size(match_gene,2);

    string=rand(pairs,1)<pc;

    crossp=randint(string,1,[1,bit_n]);

    crossp=string.*crossp;

    for i=1:pairs

    new_gen([2*i-1 2*i],:)=[match_gen([2*i-1 2*i],1:crossp(i)) match_gen([2*i 2*i-1],crossp(i)+1:bin_n)];

    end

    另外,一点交叉法操作的信息比较小,交叉点的位置的选择可能会带来较大的偏差,一点交叉算子不利于长距离的保留和重组.

    (5)变异

    变异算子是模拟自然界生物进化的中染色体的基因突变现象,从而改变染色体的结构和物理性状. 变异算子是产生新个体的辅助方法,它决定了遗传算法的局部搜索能力.变异操作通过按照变异概率(mp)随机反转某位等位基因的二进制字符的值来实现. 程序如下:

    function [new_gen]=mutation(old_gen,pm)

    mpoints=find(rand(size(old_gen))<pm);

    new_gen=old_gen;

    new_gen(mpoints)=1- old_gen(mpoints);

    end

    当重组操作发生早熟收敛时,这时引入变异算子会有很好的效果. 一方面,变异算子可以使群体进化中丢失的等位基因信息得以恢复,保持群体基因中的差异性,防止发生早熟收敛;另一方面,当种群规模较大时,在重组操作基础上引入适度的变异,也能够提高遗传算法的局部搜索效率.

    展开全文
  • 以SVM优化问题为例,其回归函数(分类平面)为: 优化问题的目标函数为: SVM中的分类问题和预测问题的区别在于约束条件的不同。 在分类问题中,约束条件为:;而在预测问题中,约束条件为(以Vapnik 不敏感...
  • 点击上方蓝字关注“中国科技论文在线”首发优秀论文推荐图 The 15 partially separable functionsin CEC’2010 LSGO test suites《基于自适应微分分组的大规模全局优化问题求解》作者方伟,闵瑞高,周建宏摘要:合作...
  • 无约束最优化问题求解方法

    千次阅读 2019-03-09 16:16:49
  • MATLAB学习笔记——优化问题求解(Lingo) 教你怎么用花最少的钱吃最好吃的饭耶耶耶耶!!! 看不懂的同学去学运筹学叭~ ,~ 我们上课用的教科书是《运筹学基础及其MATLAB应用》 ** (1)优化问题三个要素: 决策变量...
  • DB2 视图优化问题求解

    2012-11-21 13:35:37
    大家好,DB2 数据库中有个视图执行很慢,视图是2个表和1个视图的关联。 表一数据30W不到,表二数据68W,表一表二是关联主子表。 以上是DB2数据库中的视图的ACCESS PLAN ,请各位帮忙分析下,如何调整使得这个...
  • 优化问题广泛的存在于社会生产活动当中,我们一直努力寻求更高效、更准确的解决方式来应对这类问题。通常,最优化问题可以表述为一种数学规划的形式,对于变量在可行域中的不同组合进行搜索,以得到目标函数的最优...
  • 外点法的惩罚函数法,是一种约束优化问题求解方案。 文件中包含被调用的鲍威尔法源码和黄金分割法源码。
  • 离散的组合优化问题:通过数学方法的研究去寻找离散事件的最优编排分组、次序或者筛选等。这些问题的描述都非常简单,并且具有很强的工程性,但最优化的求解很困难。   组合优化问题具有一个共同的特点,就是爆炸式...
  • 求解组合优化问题可以通过利用各种数学方法,寻找离散事件的最优编排、分组、次 序或筛选等。目前常用的优化算法可以分为以下四类: (1)精确算法。 精确算法是指能够求出问题最优解的算法。当问题的规模较小时,...
  • matlab当中提供了fzero和fsolve函数可以求解问题: 调用格式:z=fzero(@func,x0,tol,trace) func:待求根的函数文件名; x0:搜索起点; tol:结果精确度,默认取eps; trace,即计算路径是否显示,默认取0; fsolve函数...
  • 在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中,例如最大熵模型和支持向量机。对于等式约束的优化...
  • 非常详细的优化问题求解器列表

    千次阅读 2015-11-09 21:47:01
    摘自:http://ascend4.org/Survey_of_optimisation_software Survey of optimisation software ...The following is a survey of optimisation software that was performed as a part of our effort to i
  • 代码例如以下: function m_main() clear clc Max_gen = 100;% 执行代数 pop_size = 100;%种群大小 chromsome = 10;%染色体的长度 pc = 0.9;%交叉概率 pm = 0.25;%变异概率 gen...
  • 前言:由于本科学习的数理知识较为基础,没有涉及到优化问题相关知识,在遇到优化问题时,满脸问号这是个啥子嘞?相信很多小伙伴也有和我一样的感受。在网上一顿神搜索,又查阅了相关的书籍,终于有了一点感悟。由于...
  • 因SVM-- 拉格朗日对偶(Lagrange duality)问题而学习 https://blog.csdn.net/u011067360/article/details/25215465 这篇博文不错
  • Matlab遗传算法优化问题求解的示例代码

    万次阅读 多人点赞 2014-08-06 00:48:53
    Matlab的遗传算法实现,可作为进一步改进的框架
  • 我们每个人都会在我们的生活或者工作中遇到各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素...
  • 优化设计·算法实现· 继续更新中……
  • 数据理论上是呈现线性关系,但是实际数据往往不是满足线性关系,但大体...这个时候,我们最终希望得到的是唯一的线性关系,而不是一堆实验数据,所以产生了用一堆实验数据来确立理论上的线性关系的这样的问题。 ...
  • <p>TSP(旅行商) 问题代表组合优化问题, 具有很强的工程背景和实际应用价值, 但至今尚未找到非常有效的求解方法.为此,讨论了最近研究比较热门的使用各种智能优化算法(蚁群算法、遗传算法、 模拟退火算法、 禁忌搜索...
  • 资源整理不易,欢迎下载交流学习! NSGA2优化算法Matlab求解多目标优化问题,遗传算法优化+帕累托排序,有效地解决了多目标优化问题,算例可行有效。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,489
精华内容 4,195
关键字:

优化问题求解