Matlab优化问题07—fgoalattain

原创 2015年07月07日 01:54:07

说明:fgoalattian是用来求解多目标规划,包括线性规划和非线性规划,因此是一个非常有力的工具,需要注意的是求解之前要建立三个向量,即goal—目标判断向量,weight—权重向量,x0—初始解。其中goal一般为已知,weight一般按照目标比例确定,初始值的选取可以根据条件目测一个,如果看不出来可以随机生成一个(一般不会影响结果)。

1求侧某化工厂拟生产两种新产品AB,其生产设备费用分别为2万元/吨和5万元/吨。这两种产品均将造成环境污染,设由公害所造成的损失可折算为A4万元/吨,B1万元/吨。由于条件限制,工厂生产产品AB的最大生产能力各为每月5吨和6吨,而市场需要这两种产品的总量每月不少于7吨。试问工厂如何安排生产计划,在满足市场需要的前提下,使设备投资和公害损失均达最小。该工厂决策认为,这两个目标中环境污染应优先考虑,设备投资的目标值为20万元,公害损失的目标为12万元。

解:设工厂每月生产产品Ax1吨,Bx2吨,设备投资费为f(x1),公害损失费为f(x2),则问题的数学模型表达为多目标优化问题:


MATLABfgoalattain函数进行求解。

fun009.m

function f=fun009(x)

f(1)=2*x(1)+5*x(2);

f(2)=4*x(1)+x(2);

主程序:

clear

clc

goal=[20 12];

weight=[20 12];

x0=[5 5];

A=[1 0;0 1;-1 -1];

b=[5;6;-7];

lb=zeros(2,1);

ub=[];

[x,fval,ddyz,exitflag]=fgoalattain(@fun009,x0,goal,weight,A,b,[],[],lb,ub)

 

解得

x =

    2.9167    4.0833

fval =

   26.2500   15.7500

ddyz =

    0.3125

exitflag =

     4

所以生产A2.9167吨,B4.0833,设备投资费26.25万元,公害损失费15.75万元。达到因子为0.3125,求解过程正常收敛。


2某工厂生产两种产品甲和乙,已知生产甲产品100公斤需6个工时,生产乙产品100公斤需8个工时。假定每日可用的工时数为48工时。这两种产品每100公斤均可获利100元。乙产品较受欢迎,且若有个老顾客要求每日供应他乙种产品500公斤,问应如何安排生产计划?

解:设生产甲产品x1百公斤,乙产品x2百公斤,产品加工耗费工时f1(x),获利f2(x),满足老客户需求量f3(x),则问题的数学模型为多目标规划:


MATLABfgoalattain函数进行求解。

fun010.m

function f=fun010(x)

f(1)=6*x(1)+8*x(2);

f(2)=-100*x(1)-100*x(2);

f(3)=-x(2);

主程序:

goal=[48 -800 -5];

weight=[48 -800 -5];

x0=[3;3];

A=[6 8;0 -1];

b=[48;-5];

lb=zeros(2,1);

[x,fval,attainfactor,exitflag]=fgoalattain(@fun010,x0,goal,weight,A,b,[],[],lb,[])

解得:

x =

    1.3333

    5.0000

fval =

   48.0000  -633.3333   -5.0000

attainfactor =

   9.9341e-10

exitflag =

     4

时间已过 0.047322 秒。

即生产甲133.33公斤,乙500公斤,工时刚好为48,可获利633.3333元,刚好满足老客户的需求(这其实是损失了当天800-633.3333=  166.6667元的损失)。



版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。

相关文章推荐

MATLAB fgoalattain()函数 解…

多目标规划可以归结为 fgoalattain()函数 解决多目标规划的问题" TITLE="MATLAB fgoalattain()函数 解决多目标规划的问题" /> 其中x,weight,goa...

NSGA2 Matlab toolbox

最近做数模,偶然间发现这个算法,还在学习中,下面转载下资料。 NSGA-II是一个很成熟的多目标优化算法了。根本原理还是Patero最优问题。 NSGA-II matlab代码,网上比较有...

NSGA-II算法理解及matlab代码详解(二)

今天终于有点时间来写写这个算法了

Matlab优化问题08—fminimax

设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,8],...

MATLAB 练习07 数值运算

一、向量运算 1.内积 2.外积 3.混合积   二、矩阵的数值运算 1.特征值 2.条件数 3.矩阵范数 4.矩阵的秩   三、多项式 在MATLAB中,多项式使用系数来表示...

SeDuMi — 基于matlab的优化软件

  • 2009年06月15日 21:19
  • 3.8MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Matlab优化问题07—fgoalattain
举报原因:
原因补充:

(最多只允许输入30个字)