目标规划问题

一、概念

1.目标值:是指预先给定的某个目标的一个期望值

2.决策值(现实值):当决策变量x{j}选定以后,目标函数的对应值。

3.正偏差变量:现实值超过目标值的部分,记为d^{+}

4.负偏差变量:现实值未达到目标值的部分,记为d^{-}

5.目标约束(软约束):既可以对原目标函数起作用,也可以对原约束起作用。

6.目标函数

1.第i个目标要求恰好达到目标值,即正、负偏差变量都要尽可能地小,则

                        minZ=f(d^{+}+d^{-})

2.第i个目标要求不超过目标值,即允许达不到目标值,就是正偏差变量要尽可能地小,则

                        minZ=f(d^{+})

3.第i个目标要求超过目标值,即超过量不限,但必须是负偏差变量要尽可能地小,则

                        minZ=f(d^{-})

7.优先因子与优先权系数

一个规划问题常常有若干个目标。但决策者在要求达到这些目标时,是有主次或轻重缓急的。

按重要程度排序,p1>>p2>>p3>>p4>>p5.......

若要区别具有相同优先因子的两个目标的差别,这时可分别赋于它们不同的权系数w_{j},这些都由决策者按具体情况而定。

8.目标规划模型的一般数学表达式为

 二、例题

某企业生产甲、乙两种产品,需要用到A,B,C三种设备,关于产品的赢利与使用设备的工时及限制如表16.3所示。问该企业应如何安排生产,才能达到下列目标。

1.力求使利润指标不低于1500

2.考虑到市场需求,甲、乙两种产品的产量比应尽量保持1:2

3.设备A为贵重设备,严格禁止超时使用

4.设备C可以适当加班,但要控制;设备B既要求充分利用,又尽可能不加班。在重要性上,设备B是设备C3倍。

 

 设备A是刚性约束,其余是柔性约束。首先,最重要的指标是企业的利润,因此,将它的优先级列为第一级;其次,甲、乙两种产品的产量保持1:2的比例,列为第二级;再次,设备CB的工作时间要有所控制,列为第三级。在第三级中,设备B的重要性是设备C的三倍,因此,它们的权重不一样,设备B前的系数是设备C前系数的3倍。设生产甲乙两种产品的件数分别为x1,x2,相应的目标规划模型为

 

x=optimvar('x',2,'LowerBound',0);
dm=optimvar('dm',4,'LowerBound',0);
dp=optimvar('dp',4,'LowerBound',0);
p=optimproblem('ObjectiveSense','min');
p.Constraints.con1 = 2*sum(x)<=12;
con2=[200*x(1)+300*x(2)+dm(1)-dp(1)==1500
      2*x(1)-x(2)+dm(2)-dp(2)==0
      4*x(1)+dm(3)-dp(3)==16
      5*x(2)+dm(4)-dp(4)==15];
p.Constraints.con2=con2;
p.Objective=dm(1)
[sx,fval]=solve(p)

 结果:dm(1)=0

 

x=optimvar('x',2,'LowerBound',0);
dm=optimvar('dm',4,'LowerBound',0);
dp=optimvar('dp',4,'LowerBound',0);
p=optimproblem('ObjectiveSense','min');
p.Constraints.con1 = 2*sum(x)<=12;
con2=[200*x(1)+300*x(2)+dm(1)-dp(1)==1500
      2*x(1)-x(2)+dm(2)-dp(2)==0
      4*x(1)+dm(3)-dp(3)==16
      5*x(2)+dm(4)-dp(4)==15];
p.Constraints.con2=con2;
p.Constraints.con3=dm(1)==0;
p.Objective=dm(2)+dp(2)
[sx,fval]=solve(p)

结果为0 

 

 

x=optimvar('x',2,'LowerBound',0);
dm=optimvar('dm',4,'LowerBound',0);
dp=optimvar('dp',4,'LowerBound',0);
p=optimproblem('ObjectiveSense','min');
p.Constraints.con1 = 2*sum(x)<=12;
con2=[200*x(1)+300*x(2)+dm(1)-dp(1)==1500
      2*x(1)-x(2)+dm(2)-dp(2)==0
      4*x(1)+dm(3)-dp(3)==16
      5*x(2)+dm(4)-dp(4)==15];
p.Constraints.con2=con2;
p.Constraints.con3=dm(1)==0;
p.Constraints.con3=dm(2)+dp(2)==0;
p.Objective=3*dm(3)+3*dp(3)+dp(4)
[sx,fval]=solve(p);
fval,xx=sx.x,sdm=sx.dm,sdp=sx.dp,

 结果:

fval =

    29


xx =

    2.0000
    4.0000


sdm =

         0
         0
    8.0000
         0


sdp =

  100.0000
         0
         0
    5.0000

利润:2*200+4*300=1600

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,可以使用多种方法来解决多目标规划问题。常见的方法有理想点法、线性加权法、最大最小法、目标规划法和模糊数学解法等。这些方法的基本思想是将多目标转化为单目标,以便进行求解。其中,理想点法通过确定理想解来优化多个目标,线性加权法通过对目标进行加权求和来得到最优解,最大最小法通过最大化最小值来找到最优解,目标规划法通过确定满足一定约束条件的目标来求解,模糊数学解法通过模糊数学理论来解决多目标问题。 在Matlab中,可以使用一些函数来求解多目标规划问题。例如,对于线性规划问题,可以使用linprog函数;对于非线性规划问题,可以使用fmincon函数;对于最大最小问题,可以使用fminimax函数;对于多目标问题,可以使用fgoalattain函数。调用这些函数时,需要根据具体问题设置相应的参数,以得到最优解。 举例来说,假设我们要解决一个多目标规划问题,在Matlab中可以使用fgoalattain函数来求解。该函数可以帮助我们找到满足一组目标值的最优解。我们需要将目标值作为参数传递给函数,并设置其他相关参数,例如约束条件和初始解。然后,函数将使用适当的算法来计算最优解,并返回结果。 总之,在Matlab中,可以使用多种方法和函数来解决多目标规划问题。根据具体情况选择适合的方法和函数,并根据问题设置相应的参数,即可求解多目标规划问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [多目标线性规划求解方法及matlab实现](https://blog.csdn.net/sinat_23971513/article/details/110501496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [matlab求解多目标规划问题](https://blog.csdn.net/Planck_meteora/article/details/122723696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值