Advertisement

【优化模型】优化建模与计算

阅读量:

1、优化模型的基本概念

1.1 优化模型和算法的重要意义

最优化: 在一定条件下,寻求使目标最大(小)的决策

最优化问题普遍存在于工程技术、经济管理、科学研究以及社会生活的各个领域中。例如,在结构设计方面涉及空间布局的合理安排,在资源分配方面需要考虑效率的最大化,在生产计划中追求成本的降低,在运输方案中寻求路径的优化。

1.2 解决优化问题的手段

  • 经验积累,主观判断
  • 作试验,比优劣
  • 建立数学模型,求解最优策略

1.3 优化问题三要素

决策变量;

目标函数;

约束条件;

(1) 约束优化(没有约束)与约束优化(有约束)

(2)可行解(只满足约束)与最优解(取到最优值)

2、局部最优解与整体最优解

局部最优解 (Local Optimal Solution, 如 x 1 )

整体最优解 (Global Optimal Solution, 如 x 2 )

3、优化模型的简单分类

3.1 连续优化

(1)线性规划(LP) 目标和约束均为线性函数

(2)非线性规划(NLP) 目标或约束中存在非线性函数

(3)二次规划(QP) 目标为二次函数、约束为线性

(4)整数规划(IP) 决策变量(全部或部分)为整数

3.2 离散优化

整数线性规划(ILP),整数非线性规划(INLP)

纯整数规划(PIP), 混合整数规划(MIP)

一般整数规划,0-1(整数)规划

3.3 优化模型的简单分类和求解难度

4、优化模型实例

例1:线性规划模型**(LP)**

例2:二次规划模型**(QP)**

若还要求产量为整数,则是整数二次规划模型**(IQP)。**

例3:非线性规划模型**(NLP)**

更多的优化问题:

**应用广泛:**生产与运营管理、经济学与金融学、图论及其网络优化、目标规划模型、博弈论、排队分析以及库存管理等。此外还包括更为复杂的决策场景。

实际问题规模往往较大,用软件求解比较方便。

5、常用优化软件

1. LINDO/LINGO
是一种高效的数学规划求解器,在线性规划和非线性规划方面具有强大的求解能力。

2. MATLAB 优化工具箱/ Mathematic 的优化功能
MATLAB 提供了丰富的数学建模和求解工具包,并特别强调了其在数值计算和工程优化方面的卓越性能。

3. SAS(统计分析) 软件的优化功能
作为专业的统计分析平台,SAS 提供了广泛的数据挖掘和预测分析功能。

4. EXCEL 软件的优化功能
EXCEL 在数据管理和自动化处理方面表现突出,支持复杂的计算和图表生成。

5. 其他(如 CPLEX 等)
此外,在这一领域中还有其他优秀的求解器如 CPLEX 和 Gurobi 等。

MATLAB优化工具箱能求解的优化模型:

LINDO/LINGO****软件能求解的模型:

建模时需要注意的几个基本问题

1**、**尽量使用实数优化,减少整数约束和整数变量

2**、**尽量使用光滑优化,减少非光滑约束的个数

如:尽量少使用绝对值、符号函数、多个变量求最大**/**最小值、四舍五入、取整函数等

3**、**尽量使用线性模型,减少非线性约束和非线性变量的个数

4**、**合理设定变量上下界,尽可能给出变量初始值

5**、**模型中使用的参数数量级要适当

LINGO**:**

熟悉集合(SETS)的基本应用方法;

学会如何正确解读求解报告,并着重掌握敏感性分析的方法论;

深入理解并准确解读求解状态窗口的各种信息;

熟练掌握如何与外部文件建立基本的交互连接;

了解并能够合理配置基本的求解选项设置;

线性规划模型(LP):

复制代码
 model:

    
 max = 72*x1+64*x2;
    
 [milk]   x1 + x2<50;
    
 [time] 12*x1+8*x2<480;
    
 [cpct]   3*x1<100;
    
 end 
    
    
    
    
    代码解读

LINGO****的语法规定:

1 )求目标函数的最大值或最小值分别用 MAX=… MIN=… 来表示;

2 )每个语句必须以分号“;”结束,每行可以有许多语句,语句可以跨行;

3 )变量名称必须以字母 (A~Z) 开头,由字母、数字 (0~9) 和下划线所组成,长度不超过 32 个字符,不区分大小写;

4 )可以给语句加上标号,例如 [OBJ]MAX=200X1+300X2

5 )以惊叹号“!”开头,以分号“;”结束的语句是注释语句 ;

6 )如果对变量的取值范围没有作特殊说明,则默认所有决策变量都非负;

7 LINGO 模型以语句“ MODEL :”开头,以“ END” 结束,对于比较简单的模型,这两个语句可以省略。

0-1****规划模型

复制代码
 Model:

    
 MIN=66.8*x11+75.6*x12+87*x13+58.6*x14
    
     +… …
    
     +67.4*x51+71 * x52+83.8*x53+62.4*x54;
    
    x11+x12+x13+x14 <=1;
    
      … …
    
      x41+x42+x43+x44 <=1;
    
      x11+x21+x31+x41+x51 =1;
    
      … …
    
      x14+x24+x34+x44+x54 =1;
    
 @BIN(x11);@BIN(x12);… @BIN(x54);
    
 END  
    
    
    
    
    代码解读

应用 LINGO 集合编程 求解:

复制代码
 MODEL:

    
 sets:
    
   person/1..5/;
    
   position/1..4/;
    
   link(person,position): c, x;
    
 endsets
    
 data:
    
   c=  66.8, 75.6, 87, 58.6,
    
     57.2,  66, 66.4, 53,
    
      78, 67.8, 84.6, 59.4,
    
      70, 74.2, 69.6, 57.2,
    
      67.4, 71, 83.8, 62.4;
    
 enddata
    
 min=@sum(link: c*x);
    
 @for(person(i):  
    
    @sum(position(j):x(i,j))<=1;);
    
 @for(position(i):
    
    @sum(person(j):x(j,i))=1;);
    
 @for(link: @bin(x));
    
 END 
    
    
    
    
    代码解读

全部评论 (0)

还没有任何评论哟~