资源描述:
《数学建模算法大全目标规划.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二十一章目标规划§1目标规划的数学模型为了具体说明目标规划与线性规划在处理问题的方法上的区别,先通过例子来介绍目标规划的有关概念及数学模型。例1某工厂生产I,II两种产品,已知有关数据见下表III拥有量原材料kg2111设备hr1210利润元/件810试求获利最大的生产方案。解这是一个单目标的规划问题,用线性规划模型表述为:最优决策方案为:元。但实际上工厂在作决策方案时,要考虑市场等一系列其它条件。如(i)根据市场信息,产品I的销售量有下降的趋势,故考虑产品I的产量不大于产品II。(ii)超过计划供应的原材料,需要高价采购,这就使成本增加。(
2、iii)应尽可能充分利用设备,但不希望加班。(iv)应尽可能达到并超过计划利润指标56元。这样在考虑产品决策时,便为多目标决策问题。目标规划方法是解决这类决策问题的方法之一。下面引入与建立目标规划数学模型有关的概念。1.正、负偏差变量设为决策变量的函数,正偏差变量表示决策值超过目标值的部分,负偏差变量表示决策值未达到目标值的部分,这里表示的目标值。因决策值不可能既超过目标值同时又未达到目标值,即恒有。2.绝对约束和目标约束绝对约束是指必须严格满足的等式约束和不等式约束;如线性规划问题的所有约束条件,不能满足这些约束条件的解称为非可行解,所以它们
3、是硬约束。目标约束是目标规划特有的,可把约束右端项看作要追求的目标值。在达到此目标值时允许发生正或负偏差,因此在这些约束中加入正、负偏差变量,它们是软约束。线性规划问题的目标函数,在给定目标值和加入正、负偏差变量后可变换为目标约束。也可根据问题的需要将绝对约束变换为目标约束。如:例1的目标函数可变换为目标约束。绝对约束可变换为目标约束。3.优先因子(优先等级)与权系数一个规划问题常常有若干目标。但决策者在要求达到这些目标时,是有主次或轻重缓急的不同。凡要求第一位达到的目标赋于优先因子,次位的目标赋于优先因子,并规定。表示比有更大的优先权。以此类
4、推,若要区别具有相同优先因子的两个目标的差别,这时可分别赋于它们不同的权系数,这些都由决策者按具体情况而定。1.目标规划的目标函数目标规划的目标函数(准则函数)是按各目标约束的正、负偏差变量和赋于相应的优先因子而构造的。当每一目标值确定后,决策者的要求是尽可能缩小偏离目标值。因此目标规划的目标函数只能是。其基本形式有三种:(1)要求恰好达到目标值,即正、负偏差变量都要尽可能地小,这时(2)要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小,这时(3)要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,这时对每一个具体目标
5、规划问题,可根据决策者的要求和赋于各目标的优先因子来构造目标函数,以下用例子说明。例2例1的决策者在原材料供应受严格限制的基础上考虑:首先是产品II的产量不低于产品I的产量;其次是充分利用设备有效台时,不加班;再次是利润额不小于56元。求决策方案。解按决策者所要求的,分别赋于这三个目标优先因子。这问题的数学模型是目标规划的一般数学模型为建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它都具有一定的主观性和模糊性,可以用专家评定法给以量化。§2多标规划的Matlab解法多目标规划可以归结为使得其中和是向量,和是矩阵;和是向量函数,他
6、们可以是非线性函数。是所考虑的目标函数,是欲达到的目标,多目标规划的Matlab函数fgoalattain的用法为[x,fval]=fgoalattain('fun',x0,goal,weight)[x,fval]=fgoalattain('fun',x0,goal,weight,A,b)[x,fval]=fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq)[x,fval]=fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)其中fun是用M
7、文件定义的目标向量函数,x0是初值,weight是权重。A,b定义不等式约束A*xb,Aeq,beq定义等式约束Aeq*x=Beq,nonlcon是用M文件定义的非线性约束c(x)≤0,ceq(x)=0。返回值fval是目标向量函数的值。要完整掌握其用法,请用helpfgoalattain或typefgoalattain查询相关的帮助。例3求解多目标线性规划问题解(i)编写M函数Fun.m:functionF=Fun(x);F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4);F(2)=3*x(2)+2*x(4);(ii
8、)编写M文件a=[-1-10000-1-130200302];b=[-30-3012048]';c1=[-100-90-80-70];c2=[0302