调用MATLAB中多目标优化函数为什么只有pareto图形而不输出最优解和最优值

请教高手:我自己编了一个多目标优化函数(即要求两个目标函数均达到最小),调用MATLAB中自带的gamultiobj多目标优化函数,运行约40分钟以后出现了pareto前... 请教高手:我自己编了一个多目标优化函数(即要求两个目标函数均达到最小),调用MATLAB中自带的gamultiobj多目标优化函数,运行约40分钟以后出现了pareto前沿图,但不出现gamultiobj多目标优化函数返回的最优解和最优值,而且该程序连续运行50小时以上也不停止,请高手帮忙看看问题在哪?
自编的多目标函数如下:
function ct = im_feiyong12_value_112(dt)
st=[48 89 55 108 111];
save ('no_st','st','-ASCII')
load no_st
a1=0.0185;
a2=0.0777;
a3=0.2715;
cp1=520;
cp2=28500;
cf=50500;
n=5;
T(1)=0;
t(1)=0;
T_end=2100;
dt1=1;
%dt=input('请输入维修周期dt=');
ct = zeros(length(dt),2);
for ii=1:length(dt)
dt2=dt(ii);
sumsc(ii)=0;
sumsd(ii)=0;
N=fix(T_end/dt2);
for i=2:N+1; % i=2:n+1;
%T(i)=no_st(i-1);
%k=T(i);
k=dt2;
%T(i)=T(i)+T(i-1);
%t(i)=T(i);
t(i)=t(i-1)+dt2;
fp=@(y)exp(-a1.*(t(i)-y));
f1=@(y)(1-exp(-a1.*(y-t(i-1))));
f11=@(y) (t(i)-y).*a2.*exp(-a2.*y);
if i<3
CENp(i-1)= cp2*a2*a3*quad(fp,t(i-1),t(i));
Sd(i-1)=a3*quad(f11,t(i-1),t(i));
else
sum1=0;
sum11=0;
for l=2:i;
sum1=sum1+cp2*a2*(1-a3).^(i-l)*a3*quad(fp,t(l-1),t(l));
sum11=sum11+(1-a3).^(i-l)*a3*quad(f11,t(l-1),t(l));
end
CENp(i-1)= sum1;
Sd(i-1)=sum11;
end
sumsc(ii)=sumsc(ii)+CENp(i-1);
sumsd(ii)=sumsd(ii)+Sd(i-1);
for j=1:k;
if i<3;
CENf(i-1,j)=cf*a2*quad(f1,t(i-1)+(j-1)*dt1,t(i-1)+j*dt1);
else
sum2=0;
for l=2:i-1;
f2=@(y)((1-exp(-a1.*(y-t(l-1))))-(1-exp(-a1.*(y-t(l)))));
CEf2=cf*a2*((1-a3).^(i-l)).*(quad(f2,t(i-1)+(j-1)*dt1,t(i-1)+j*dt1));
sum2=sum2+CEf2;
end
CENf2(i-1,j)=cf*a2*quad(f1,t(i-1)+(j-1)*dt1,t(i-1)+j*dt1);
CENf(i-1)=sum2+CENf2(i-1);
end
end
sumsc(ii)=sumsc(ii)+CENf(i-1);
sumsc(ii)=sumsc(ii)+cp1;
end
ct(ii,1)=sumsd(ii);
ct(ii,2)=sumsc(ii);
end

优化的主程序如下:
x0=1; %自变量个数
A=[];
b=[];
Aeq=[];
beq=[];
lb=1;
ub=1000;
options=gaoptimset('PopulationSize',60,'PlotFcns',@gaplotpareto,'Generations',50);
[x,fval] = gamultiobj(@im_feiyong12_value_112,x0,[],[],[],[],lb,ub,options)

请求高手解答,小弟不甚感激!
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
匿名用户
2015-07-18
展开全部
[x,fval,attainfactor] =fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x:最优解
fval:每个目标函数最优值
attainfactor:超出或未到 目标 的 量
fun:目标 函数,由于 是多目标函数,所以这是一个 向量
x0,自变量的 初始值
goal:目标,是个向量
weight:各个 目标 的权重
下面三个同线性优化一样
Ax<=b
Aeq*x=beq
lb<x<ub
nonlcon与非线性约束函数fmincon中 一样!
追问
你好,谢谢的回复。但fgoalattain函数是不断改变变量的值,使得各目标函数满足goal(i),fgoalattain函数最终返回一组最优解;而我的问题是求解变量,使得各目标函数达到相对最优,所以我用的是gamultiobj函数,最终将返回多组最优值。不知我的理解是否正确,希望能和你继续探讨并请多多指教!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风雨傻瓜
2015-07-30 · TA获得超过201个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:130万
展开全部
你这程序运行40个小时吗,那么久,要是这样的话,你编写的有问题,我之前看到有人编写的程序,不到一分钟就出结果了,是四个目标函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式