当前位置:蚂蚁文档网 > 作文范文 > 整数规划和多目标规划模型

整数规划和多目标规划模型

时间:2022-06-30 19:15:06 浏览次数:

 1

 整数规划的 MATLAB 求解方法 (一)

 用 用 MATLAB 求解一般混合整数规划问题 于 由于 MATLAB 优化工具箱中并未提供求解纯整数规划和混合整数规划的函数,因而需要自行根据需要和设定相关的算法来实现。现在有许多用户发布的 的工具箱可以解决该类问题。这里我们给出开罗大学的 Sherif 和 和 Tawfik 在 在MATLAB Central 上发布的一个用于求解一般混合整数规划的程序,在此命名为 为 intprog ,在原程序的基础上做了简单的修改,将其选择分枝变量的算法由自然序改造成分枝变量选择原则中的一种,即:选择与整数值相差最 大的非整数变量首先进行分枝。intprog 函数的 调用格式如下:

 [x,fval,exitflag]=intprog(c,A,b,Aeq,beq,lb,ub,M,TolXInteger)

 该函数解决的整数规划问题为:

   )

 取整数( M j xn i xub x lbb x Ab Ax t sx c fjieq eqT) , , 2 , 1 ( 0. .min 在上述标准问题中,假设 x 为 n 维设计变量,且问题具有不等式约束1m 个,等式约束2m 个,那么:

 c 、 x 均为 n 维列向量, b 为1m 维列向量,eqb 为2m 维列向量, A 为 n m 1维矩阵,eqA 为 n m 2维矩阵。

 有 在该函数中,输入参数有 c,A,b,Aeq,beq,lb,ub,M 和 和 TolXInteger 。其中 c 为 为目标函数所对应设计变量的系数,A 为不等式约束条件方程组构成的系数矩阵,b 为不等式约束条件方程组右边的值构成的向量。Aeq 为等式约束方程组构成的系数矩阵,beq 为等式约束条件方程组右边的值构成的向量。lb 和 和 ub 为设计变量对应的上界和下界。M 为具有整数约束条件限制的设计变量的序号,例如问题中设计变量为6 2 1, , , x x x  ,要求3 2 ,xx 和6x 则 为整数,则 M=[2;3;6] ;若要求全则 为整数,则 M=1:6 ,或者 M=[1;2;3;4;5;6] 。TolXInteger 为判定整数的误差限,数 即若某数 x 和最邻近整数相差小于该误差限,则认为 x 即为该整数。

 有 在该函数中,输出参数有 x, fval 和 和 exitflag 。其中 x 为整数规划问题的最优解向量,fval 量 为整数规划问题的目标函数在最优解向量 x 处的函数值,exitflag为函数计算终止时的状态指示变量。

 例 例 1

 求解整数规划问题:

     0 ,

  1 2

 11 2 4

  1 2 4

 . .max2 122 12 12 1,且取整数值 x xxx xx x t sx x f 算法:

 c=[-1;-1]; A=[-4 2;4 2;0 -2]; b=[-1;11;-1]; lb=[0;0]; M=[1;2];

 % 均要求为整数变量 Tol=1e-8;

 % 判断是否整数的误差限 [x,fval]=linprog(c,A,b,[],[],lb,[])

  % 求解原问题松弛线性规划 [x1,fval1]=intprog(c,A,b,[],[],lb,[],M,Tol)

 % 求最优解整数解 结果:

 x =

 % 松弛线性规划问题的最优解

  1.5000

  2.5000 fval =

 -4.0000 x1 =

 % 整数规划的最优解

 2

 1 fval2 =

 -3.0000

  (二)

 用 用 MATLAB 求解 0-1 规划问题 在 在 MATLAB 解 优化工具箱中,提供了专门用于求解 0-1 规划问题的函数bintprog ,其算法基础即为分枝界定法,在 MATLAB 中调用 bintprog 函数求解0-1 规划时,需要遵循 MATLAB 中对 0-1 规划标准性的要求。

  0-1 规划的 问题的 MATLAB 标准型 1 , 0. .minxb x Ab Ax t sx c feq eqT 数 在上述模型中,目标函数 f 需要 极小化 ,以及需要满足的约束条件,不等式约束一定要化为形式为“  ”。

 。

 假设 x 为 n 维设计变量,且问题具有不等式约束1m 个,等式约束2m 个,那么:c 、 x 均为 n 维列向量, b 为1m 维列向量,eqb 为2m 维列向量, A 为 n m 1维矩阵,eqA 为 n m 2维矩阵。

 。

 如果不满足标准型的要求,则需要对原问题进行转化,化为标准型之后才能使用相关函数,标准化的方法和线性规划中的类似。

 0-1 规划问题的 MATLAB 求解函数

  MATLAB 优化工具箱中求解 0-1 规划问题的命令为 bintprog

 bintprog 的调用格式 x = bintprog(f) x = bintprog(f,A,b) x = bintprog(f,A,b,Aeq,beq) x = bintprog(f,A,b,Aeq,beq,x0) x = bintprog(f,A,b,Aeq,Beq,x0,options) [x,fval] = bintprog(...) [x,fval,exitflag] = bintprog(...) [x,fval,exitflag,output] = bintprog(...) 命令详解

 1 )x = bintprog(f)

 的 该函数调用格式求解如下形式的 0-1 规划问题

 1 , 0 . .minx t sx c fT 2 )x = bintprog(c,A,b)

 的 该函数调用格式求解如下形式的 0-1 规划问题

 1 , 0. .minxb Ax t sx c fT 3 )x = bintprog (c,A,b,Aeq,beq) 的 该函数调用格式求解如下形式的 0-1 规划问题:

 1 , 0. .minxb x Ab Ax t sx c feq eqT 4 )x = bintprog (c,A,b,Aeq,beq,x0)

 的 该函数调用格式求解如下形式的 0-1 规划问题 1 , 0. .minxb x Ab Ax t sx c feq eqT 为 在前一个调用格式的基础上同时设置求解算法的初始解为 x0 ,如果初始解x0 不在 0-1 规划问题的可行域中,算法将采用默认的初始解 5 )x = bintprog (c,A,b,Aeq,beq,x0,options) 用 用 options 指定的优化参数进行最小化。可以使用 optimset 来设置这些参数

 上面的函数调用格式仅设置了最优解这一输出参数,如果需要更多的输出参数,则可以参照下面的调用格式:

 [x,fval] = bintprog(...)

 解 在优化计算结束之时返回整数规划问题在解 x 处的目标函数值 fval

 [x,fval,exitflag] = bintprog(...)

 回 在优化计算结束之时返回 exitflag 值,描述函数计算的退出条件。

 [x,fval,exitflag,output] = bintprog(...) 量 在优化计算结束之时返回结构变量 output

 例 例 2 :求解 0-1 规划问题          2 1 ; 2 1

  4 , 3 , 2 1

  1 0

 2 1

 1

 2 1

 1

 . .max111 1,n , , j ,n , , i x,n , , j x,n , , i x t sx E fijniijnjijninjij ij )

 , ( 或23 32 16 2224 31 13 2123 29 15 2226 33 12 20E

 为了程序的可读性,我们用一维下标来表示设计变量,即用4 1~ x x 表示14 11~ x x ,用8 5~ x x 表示24 21~ x x ,用12 9~ x x 表示34 31~ x x ,用16 13~ x x 表示44 41~ x x ,于是约束条件和目标函数分别为:

                          ) 16 , , 2 , 1 (

  1 , 01111111116 12 8 415 11 7 314 10 6 213 9 5 116 15 14 1312 11 10 98 7 6 54 3 2 1 i xx x x xx x x xx x x xx x x xx x x xx x x xx x x xx x x xi 16 44 6 22 5 21 4 14 3 13 2 12 1 11x E x E x E x E x E x E x E f         

 算法:

 c=[20;12;33;26;22;15;29;23;21;13;31;24;22;16;32;23]; Aeq=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0;

 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0;

 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0;

 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1;

 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0;

  0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0;

 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0;

 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1;

 ]; beq=ones(1,8); [x,fval]=bintprog(c,[],[],Aeq,beq);

 B=reshape(x,4,4); % 由于 x 是一列元素,为了使结果更加直观,故排成与效率矩阵 E 相 相对应的形式 B" fval 结果:

 Optimization terminated. ans =

 0

  1

  0

  0

 0

  0

  1

  0

 1

  0

  0

  0

 0

  0

  0

  1 fval =

  85 整数规划的应用 —— 组件配套问题 要 某机械产品需要由三个工厂开工一起生产后组装完成。每件机械需要 4 个 个件 组件 1 和 和 3 个组件 2 。生产这两种组料 件需要消耗两种原材料 A 和 和 B 。已知这两种为 原材料的供应量分别为 400kg 和 和 600kg 。

 由于三个工厂的生产条件和拥有设备工艺条件不同,每个工厂生产组件的能力和原材料的消耗也不尽相同,且每个工厂开工一次都是配套生产一定数量件 的组件 1 和组件 2 ,其具体的数据如表所示。

 表 表 11-2 各工厂生产能力和消耗原材料的数据表

 )

 每个工厂消耗原材料的数量(公斤)

 )

 每个工厂各组件的生产能力(件数)

 A 材料

 B 材料 件 组件 1 件 组件 2 工厂1 1 工厂2 2 工厂3 3 9 6 4 7 10 9 8 7 9 6 9 5 现在的最优化问题是 ,这三个工厂应当如何安排生产,才能使该产品的配套数达到最大? ( Ⅰ )组件配套问题的建模 设2 1x x、 和3x 是三个工厂分别开工的次数,将其作为该问题的设计变量。由于每个工厂开工一次都是配套生产,故每次开工消耗的原材料一定,且生产的组件数也是一定的。在这个假设的前提之下,我们可以得出该问题的目标函数和约束条件。

 因为原材料的总量是有限的,根据工厂的开工次数,可得工厂 1 将消耗 A 材料19x ,工厂 2 将消耗 A 材料26x ,工厂 3 将消耗 A 材料34x ,故有约束条件:400 4 6 93 2 1   x x x

 同理,对于材料 B 的总量约束条件可以表达为:

 600 9 10 73 2 1   x x x

 件 然后再来分析三个工厂零件生产的情况,三个工厂生产的组件 1 的数 量分别为2 17 8 x x 、 和39x 件 ,故组件 1 的总数为:3 2 1 19 7 8 x x x Q   

 件 同理,组件 2 的总数为:3 2 1 25 9 6 x x x Q   

 下一步是分析目标函数,该问题要求的不是生产的各种组件总数最多,而是要求产品的配套数量最大,即能组成的机械数目最多。问题中已经给出了该为 种机械中两种组件的配比为 4:3件 ,故组件 1 所能成套的数目1T 满足约束条件:49 7 843 2 1 11x x x QT  

 件 同理,组件 2 所能成套的数目2T 满足约束条件:35 9 633 2 1 22x x x QT  

 因而,所能组成的成品机械的数目 f 应该为1T 和2T 中的较小值,即:) , min(2 1T T f 

 那么,我们求解的目标即是使得 f 能够尽可能大,可以看出,这种形式并不是有关 设计变量的线性函数,我们需要对其进行转化,此时我们可以令一个人工设计变量等于目标函数值,则有:

 ) , min(2 1 4T T x 

 在该假设下,一定满足关系式:4 1x T  且4 2x T 

 结合约束关系,对1T 的约束可以表示为:49 7 843 2 1 11 4x x x QT x   

 同理,对2T 的约束可以表示为:35 9 633 2 1 22 4x x x QT x   

 对1T 的上述关系进行整理,可以得到关系:

 0 4 9 7 84 3 2 1     x x x x

 同理对2T 也可以得到不等式关系为:

 0 3 5 9 64 3 2 1     x x x x

 上面两个式子即为由组件的配比数得到的关于组件数目的约束条件,此时问题的目标就是如何使得4x 取到最大值,由于开工的次数一定是一个非负整数,故也是一个约束条件,决定了该问题是一个纯整数规划问题 。结合前面给出的原材料约束 , 可以得到如下的数学模型:

                4 , 3 , 2 , 1 0

  0 3 5 9 6

  0 4 9 7 8

  600 9 10 7

  400 4 6 9

  maxi4 3 2 14 3 2 13 2 13 2 14i xx x x xx x x xx x xx x x s.t.x f且取整数值 (Ⅱ)组件配套问题的求解 利用§8. 1节中给出的MATLAB函数对此问题求解,代码和运行结果如下:

 算法:

 % 目标函数所对应的设计变量的系数,为转化为极小,故取原目标函数的相反数 f=[0;0;0;-1]; % 不等式约束 A=[ 9

 6

 4 0;

 7 10

 9 0;

 -8 -7 -9 4;

 -6 -9 -5 3]; b=[400;600;0;0]; % 边界约束,由于无上界,故设置 ub=[Inf;Inf;Inf;Inf]; lb=[0;0;0;0]; ub=[Inf;Inf;Inf;Inf]; % 所有变量均为整数变量,故将所有序号组成向量 M M=[1;2;3;4]; % 判定为整数的误差限 Tol=1e-8; % 求最优解 x 和目标函数值 fval ,并返回状态指示 [x,fval,exitflag]=intprog(f,A,b,[],[],lb,ub,M,Tol) 结果:

 x =

 量 %最优解向量 x

  18

  15

  36

  141 fval =

  % %量 在最优解向量 x 处,原目标函数值的相反数

 -141.000 exitflag=

  % %解 算法终止指示变量,说明问题收敛到了最优解 x

  1 工 由运行结果可知,工厂1、2和3需要分别开工 18 、15 和 和 36 次,这样所为 能生产出来的成套的机械为 141 件。

 2

 多目标规划的 MATLAB 求解方法 (一)

 多目标规划的 B MATLAB 求解

 在 由于多目标规划中的求解涉及到的方法非常多,故在 MATLAB 中可以利用

 不同的函数进行求解,例如在评价函数法中我们所得最后的评价函数为一线性函数,且约束条件也为线性函用 数,则我们可以利用 MATLAB 优化工具箱中提供的 的 linprog 函数进行求解,如果我们得到的评价函数为非线性函数,则可以利用MATLAB 优化工具箱中提供的 fmincon 函数进行求解,如果我们采用最大最小用 法进行求解,则可以利用 MATLAB 优化工具箱中提供的 fminimax 函数进行求解。下面我们就结合理论求解的几种方法,讲解一下典型多目标规划问题的MATLAB 求解方法。

 。

 例 例 1

 利用理想点法求解      0 ,

 8

 12 2 3

 3 5 ) (

  min3 2 ) (

  min2 12 12 12 1 22 1 1x xx xx x s.t.x x x fx x x f 我们首先根据评价函数法中的理想点法的理论基础,按照理想点法的求解思路分 别对两个单目标规划问题    2 1, P P 进行求解:

           0 ,

 8

 12 2 3

 3 5 ) (

  min,0 ,

 8

 12 2 3

 3 2 ) (

  min2 12 12 12 1 222 12 12 12 1 11x xx xx x s.t.x x x fPx xx xx x s.t.x x x fP

 求解  1P 的 的 MATLAB 的代码和相应的运行结果为:

 算法:

 c=[2;-3]; A=[3 2;1 1]; b=[12;8] lb=[0;0] [x,fval]=linprog(c,A,b,[],[],lb,[]) 结果:

 x =

  0.0000

  6.0000

 fval =

  -18.0000 于是可知。当  Tx 6 , 01 时,单目标线性规划  1P 的最优函数值为 18*1  f 。

 。

 求解  2P 的 的 MATLAB 的代码和相应的运行结果为:

 算法:

 c=[-5;-3]; A=[3 2;1 1]; b=[12;8] lb=[0;0] [x,fval]=linprog(c,A,b,[],[],lb,[]) 结果:

 Optimization terminated. x =

  4.0000

  0.0000 fval = -20.0000 于是可知,当  Tx 0 , 42 时,单目标线性规划  2P 的最优函数值为 20*2  f 。

 。

 由 上 述 两 个 单 目 标 线 性 规 划 的 求 解 结 果 可 知2 2x x  , 因 而    20 , 18 ,*2*1   f f 是一个不可能达到的理想点,因而我们构造如下评价函数:

           2122 1222120 3 5 18 3 2 20 ) ( 18 ) ( ) ( min          x x x x x f x f x f hR x 的 构造描述该评价函数的 M- 函数文件 objfun.m 如 如 下:

 function f=objfun(x) f=sqrt((2*x(1)-3*x(2)+18)^2+(5*x(1)+3*x(2)-20)^2); 然后用非线性规划的方式求解上述问题:

 算法:

 :

 A=[3 2;1 1]; b=[12;8];

 lb=[0;0]; x0=[0;0]; [x,fval,exitflag]=fmincon(@objfun,x0,A,b,[],[],lb,[]) 结果:

 :

  Active inequalities (to within options.TolCon = 1e-006):

  lower

 upper

  ineqlin

  ineqnonlin

  1

 x =

  0.0235

  5.9647 fval =

  1.9941 exitflag =

 5 由 运 行 结 果 可 知 在 该 评 价 函 数 标 准 之 下 , , 问 题 的 最 优 解 为 :  T x 9647 . 5 , 0235 . 0* 此时, , 各目标函数的取值为 :

 0118 . 18 , 8471 . 17*2*1    f f 。它与理想点     20 , 18 ,*2*1   f f 为 在评价函数标准下的最小距离为 1.9941 。

 例 例 2

 利用评价函数中的线性加权和法求解如下多目标规划问题:

       0 , ,

 3

 3 2 ) (

  min) (

  min3 2 13 2 1232221 2232221 1x x xx x x s.t.x x x x fx x x x f 其中权系数为 2 . 0 , 8 . 02 1    。

 。

 建立线性加权和法的评价函数为:

      232221 2232221 13 2 ) ( min x x x x x x x f h        

 将 相 应 的 权 系 数 代 入 上 式 即 整 理 出 目 标 函 数 ) (x f 为 :2322214 . 1 2 . 1 ) ( x x x x f   

 的 于是建立目标函数的 M- 函数文件 objfun.m :

 function f=objfun(x) f=x(1)^2+1.2*x(2)^2+1.4*x(3)^2; 由于目标函数非线性函数且具有线性等式约束和边界约束,因而我们调用MATLAB 中求解非线性规划的 fmincon 函数对此问题进行求解,同时注意如果只考虑第一个目标函数,由这种特殊形式,即在设计变量的和为一定值,需要求其平方和的最小值时,最优解必然是当这几个设计变量的值相等时取得,于是我们可以将这个解设为问题的初始点,开始迭代。

 。

 算法:

 Aeq=[1 1 1]; beq=[3]; lb=[0;0;0]; x0=[1;1;1]; [x,fval]=fmincon(@objfun,x0,[],[],Aeq,beq,lb,[]) 结果:

 No active inequalities. x =

  1.1776

  0.9812

  0.8412 fval =

  3.5327 结果说明,问题的最优解为:

 5327 . 3 ) ( ,8412 . 09812 . 01776 . 1**3*2*1* x fxxxx

 我们在求解多目标规划问题时,可以采用评价函数法中的最大最小法,而MATLAB 也为这种方法提供了专门的求解函数 fminimax ,在讲解这方面的例 题下 之前,我们首先介绍一下 MATLAB 优化工具箱中所提供的最大最小法的求解函数 数 fminimax 。

 的 最大最小法问题的 MATLAB 标准形式为:

  ub x lbb x Ab Ax(x) cc(x) s.t.x feq eqeqii x

 0

 0

  ) (

  max

  min 数 函数 fminimax 的调用方式和其他的最优化函数类似,其中所涉及的输入参数 数和输出参数的含义与非线性规划的求解函数 fmincon 类似,使用方法也基本考 相同,细节问题读者可以参考 MATLAB 的帮助文件。

 例 例 3 求解最大最小问题:

             8 ) (

  ) (

  18 3 ) (

  3 ) (

  304 40 48 2 ) (

  ) (

  max

  min2 1 52 1 42 1 32221 22 12221 1x x x fx x x fx x x fx x x fx x x x x f s.t.x f ii x 的 首先建立描述目标函数的 M- 函数文件 objfun.m ,注 意到一共有五个目标函数,所求目标为这五个函数最大值中的最小值,代码如下:

 function f = objfun(x) f(1)= 2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304;

 f(2)= -x(1)^2 - 3*x(2)^2; f(3)= x(1) + 3*x(2) -18; f(4)= -x(1)- x(2); f(5)= x(1) + x(2) - 8; 为 然后设置求解的初始点为 x0=[0;0] ,调用 fminimax 求解该问题。

 。

 算法:

 :

 x0 = [0; 0]; [x,fval,maxfval] = fminimax(@objfun,x0) 结果:

 :

 Local minimum possible. Constraints satisfied. fminimax stopped because the predicted change in the objective function

 is less than the default value of the function tolerance and constraints

 were satisfied to within the default value of the constraint tolerance. <stopping criteria details> Active inequalities (to within options.TolCon = 1e-006):

  lower

 upper

  ineqlin

  ineqnonlin

 1

 5 x =

  4.0000

  4.0000 fval =

 0.0000

 -64.0006

  -1.9999

  -8.0000

  -0.0000 maxfval =

  2.6897e-008 上述结果说明当 4 , 42 1  x x 时,目标函数 5 , , 2 , 1

  ) (   i x f i 的最大值达到为 最小,这一组的函数值为 0.0000 ,-64.0006 ,-1.9999 ,-8.0000 ,-0.0000 ,于是最为 大值为 0 。

 多目标规划的应用 —— 投资问题(全国大学 生数学建模竞赛试题)

 假设市场上有 n 种资产,比如股票、债券等可以供投资者选择,某公司有数额为 M 的一笔相当大的资金可用作一个时间的投资。通过财务人员对iS 种资产进行评估,大概可以估算出在这一时期内购买资产iS 的平均收益率为ir ,并预测出购买iS 的损失率为iq 。考虑到投资越分散,总的风险越小,公司决定当用这笔资金购买若干种资产时,总体风险可用所投资的iS 。

 中的最大一个风险来度量。

 购买iS 要付交易费,费率为ip ,并且当购买额不超过给定值iu 时,交易费按购买iu 计算(不买当然无须付费)。另外,假定同期银行存款利率是0r ,且既无交易费又无风险(0r = =5 %) 。已知 4  n 时的相关数据如 下 表所示:

 表 表 1 投资各种资产的参数值 iS

 (%)ir

 (%)iq

 (%)ip

 iu (元)

 1S

 28 2.5 1 103 2S

 21 1.5 2 198 3S

 23 5.5 4.5 52 4S

 25 2.6 6.5 40 试给该公司设计一种投资组合方案,即用给定的资金 M ,有选择地购买若干种资产或存银行生息,使净收益尽可能大,而总体风险尽可能小。

 (Ⅰ)投资问题的建模

  为了建立数学模型,首先对模型进行一些必要的 假设及符号说明:

 (1) 模型的假设 ① ① 在一个时期内所给出的ir ,iq ,ip 保持不变。

 ② 在一个时间内所购买的各种资产( 如股票、证券等) 不进行买卖交易,即在买入后不再卖出。

 ③ ③ 每种投资是否收益是相互独立的。

 ④ ④ 在投资过程中,无论盈利与否必须先付交易费。

 (2) 符号说明 M

 ( 元) :公司现有投资总金额;   n i S i , , 1 , 0 ,   :欲购买的第 i 种资产种类(其中 0  i 表示存入银行):

   n i x i , , 1 , 0 ,   :公司购买iS 的金额;   n i r i , , 1 , 0 ,   :公司购买iS 的平均收益率;   n i q i , , 1 , 0 ,   :公司购买iS 的平均损失率;   n i p i , , 1 , 0 ,   :公司购买iS 超过iu 时所付交易费率。

 下面来建立模型。

 设购买iS 的金额为ix ,所付的交易费 ) (i ix c ,则

   0 ) (

 ) , , 2 , 1 ( 0

  0

 0) (0 0x cu x x pn i u x u pxx ci i i ii i i iii i 由于投资额 M 相当大,所以总可以假定对每个iS 的投资i iu x  。这时上面的大括号公式可简化为:

 ) , , 2 , 1 (

 ) ( n i x p x ci i i i  

 对iS 投资的净收益为:

  

 ) ( ) (i i i i i i i i ix p r x c x r x R    

 对iS 的风险为:i i i ix q x Q  ) (

 对iS 投资所需资金为投资金额ix 与所需的手续费 ) (i ix c 之和,即:

  i i i i i i ix p x c x x f     1 ) ( ) (

 当购买iS 的金额为 ) , , 2 , 1 , 0 ( n i x i   ,投资组合 ) , , , (1 0 nx x x x   的净收益总额 为:

 nii ix R x R0) ( ) (

 整体风险为:

 ) ( max ) ( max ) (1 1i in ii in ix q x Q x Q    

 资金约束为:

 M x fnii i0) (

 根据题目要求,以净收益总额 ) (x R 最大, 而整体风险 ) (x Q 最小为目标建立模型如下:

        n i xM x p s.t.

  x q x p rinii ii inii i i, , 2 , 1 , 0

 1

  max

 min00 很显然,这是一个多目标规划问题。

 (Ⅱ)投资问题的求解 在此我们采用主要目标法对该问题进行求解,即根据问题的实际情况,确

 定一个目标为主要目标,而把其余目标作为次要目标,并且根据经验,选取一定的界限值。这样就可以把次要目标作为约束来处理,于是就将原来的多目标问题转化为一个在新的约束下的单目标最优化问题。

 在上述例子中如果以收益为主要目标,则可以固定风险水平,给定风险一个界限 a ,讲问题转化称为求最大风险不超过 a 时的最大收益,即下面的线性规划模型:

       n i xM x pn i Ma x

 q s.t.

  x p rinii ii inii i i, , 2 , 1 , 0

 1

 , , 2 , 1

 max00

 ( (1 )

 若投资者希望总盈利至少达到水平 K 以上,则可以在风险最小的情况下寻找相应的投资组合,从而将原模型转化成为下列的线性规划模型进行求解:

         n i xM x pK x p r s.t.

  x qinii inii i ii ii, , 2 , 1 , 0

 1

  max

 min00x

 ( (2 )

 根据上面的分析,我们利用主要目标法建立了该问题的多目标规划模型,用 进而转化成为了线性规划模型,下面我们利用 MATLAB 对此问题进行求解并进行投资分析。将 4  n 时的数据代入模型(1) 中,我们可以得到 MATLAB 的标准型为:

           4 , 3 , 2 , 1 , 0

 0.026

 0.055

 0.015

 0.025

 1 065 . 1 045 . 1 02 . 1 01 . 1

 . .185 . 0 185 . 0 19 . 0 27 . 0 05 . 0

  min43214 3 2 1 04 3 2 1 0i xa xa xa xa xx x x x x t sx x x x x fi

 由于 a 是任意给定的风险度,因而实际上没有一个选 择的准则,不同的投资者可能有自身不同的判断,因而使得 a 的取值不同。我们在求解的过程中不妨用试探的方法,从 0  a 开始,以步长 001 . 0  a 进行搜索,通过实验来分析和总结风险度 a 和收益 Q 之间的数量关系用 。利用 MATLAB 编程求解。

 算法:

 clear i=1; a(i)=0; x=cell(1,101); while(1.1-a(i))>1

  i=i+1;

  a(i)=a(i-1)+0.001;

  f=[-0.05 -0.27 -0.19 -0.185 -0.185];

  Aeq=[1 1.01 1.02 1.045 1.065];

  beq=[1];

  A=[0 0.025 0 0 0;

 0 0 0.015 0 0;

 0 0 0 0.055 0;

 0 0 0 0 0.026];

 b=[a(i);a(i);a(i);a(i)];

 lb=[0;0;0;0;0];

 [y,fval(i)]=linprog(f,A,b,Aeq,beq,lb,[]);

 x{i}=y;

 Q(i)=-fval(i);

  end plot(a,Q,"."); xlabel("a"); ylabel("Q"); 结果:

 0 0.02 0.04 0.06 0.08 0.1 0.1200.050.10.150.20.250.30.35aQ 风险度与收益关系图 模型(1) 的结果图分析:

 (1) 由 由 上。

 图可知,收益随风险增大而增大,就是说,风险越大,收益也越大。

 (2) 由数据表可以看出,投资越分散,投资者承担的风险越小。这与实际情况相符,就是说,冒险的投资者 会出现集中投资的情况,保守的投资者则尽量分散投资。

 (3) 曲线上的任一点都表示该风险水平的最大可能收益和该收益要求的最小风险。投资者应根据对不同风险的承受能力,选择该风险水平下的最优投资组合。

 (4) 由局部放大 上 图可以看出,在 0060 . 0 ) 7 (  a 附近有一个转折点。在这一点左边,风险增加很少时,利润增长很快;在这一点右边,风险增加很大时,利润增长很缓慢。所以对于风险和收益没有特殊偏好的投资者来说,应该选择曲线的该转折点作为最优投资组合,大约是 2019 . 0 ) 7 ( , 0060 . 0 ) 7 (*   Q Q a ,所对应投资方案为:

 Tx ] 2212 . 0 , 1091 . 0 , 4000 . 0 , 2400 . 0 , 0 [ 

推荐访问:规划 整数 模型

猜你喜欢