求助如何实现下述优化问题。
优化目标函数已经确定,但不能用变量直接表达;变量有9个,在两个一维数组中;每个变化有取值范围;
请问如何实现这个求最小值问题? 请把问题详细贴出来看看,或自己试试1stOpt。 fmincon 就可以,如果目标或约束不能表达,可以写成函数形式:
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
myfun——目标,mycon——约束 谢谢。
新问题出现了。再次请教。
下面是程序:clc;
clear;
x0 = ;
lb=;
ub=;
x=fmincon('optFx',x0,[],[],[],[],lb,ub);
出现的错误是:
?? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function failed with the following error:
Reference to a cleared variable x1.
请教如何解决? 原帖由 wxpxyz 于 2006-9-2 18:48 发表
下面是程序:
clc;
clear;
x0 = ;
lb=;
ub=;
x=fmincon('optFx',x0,,,lb,ub);
出现的错误是:
?? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function f ...
把optFx这个函数也贴出来吧 应该是你的目标函数不对,把目标函数贴出来吧 目标函数optFx不与x直接相关,是用数值方法算出的值,而x是数值方法中间的参数。 详细程序为:
function MAX=optFx(x)
clc;
clear;
raa(l)=x(1);
raa(2)=x(2);
raa(3)=x(3);
raa(4)=x(4);
d(2)=x(5);
d(3)=x(6);
d(4)=x(7);
d(5)=x(8);
d(6)=x(9);
d(7)=40;
d(1)=0;
cslt=0.225;
dt=1;
% raa和d分别是计算r2与r33的参数
dt=1;
dd=50;
=suberosiondr(Nx,Ny,NN,dt,dd,r2,r33);%调用程序计算Mt曲线
% 目标曲线ft(t)=(1/600)*(t-100);
ft=0;
for t=101:700
ft(t)=(1/600)*(t-101);
Ft(t)=abs(ft(t)-Mt(t));
end
MAX=max(Ft);%求目标曲线和实际计算曲线的差值中的最大值 function MAX=optFx(x)
这个函数的输入x怎么没有看到呀?? raa和d分别是计算r2与r33的参数
程序中省略了计算r2与r33。 看不懂,能否把程序作为附件给出,可以帮你看看。目前看好像是目标函数中clear用的不对,去掉clear,clc看看能否计算。
[ 本帖最后由 jieli 于 2006-9-3 20:49 编辑 ] 函数为:
function MAX=optFx(x)
clc;
clear;
% t0=clock;
%=================================================有NN=四层
NN=4;
% raa每层降解系数;
% d每环的厚度
% x=[];
raa(l)=x(1);
raa(2)=x(2);
raa(3)=x(3);
raa(4)=x(4);
d(2)=x(5);
d(3)=x(6);
d(4)=x(7);
d(5)=x(8);
d(6)=x(9);
d(7)=40;
d(1)=0;
%以下是通过参数raa和d求Mt的值
................
Rr2(1)=h(1);
for i=2:N
Rr1(i)=Rr2(i-1)+h(i);
Rr2(i)=Rr1(i)+d(i);
end
for l=1:1:NN
u=0;
ra=raa(l);
rc=3.03*10^(-9);
for i=1:Nx
for j=1:Ny
u=unifrnd(0,1);
if r1(i,j)==0
r2(i,j,l)=-log(1-u)/(log(175*175)*ra*3600);
elseif r1(i,j)==1
r2(i,j,l)=-log(1-u)/(rc*log(175*175)*3600);
else
r2(i,j,l)=0.1;
end
end
end
end
.............
..............
dt=1;
dd=50;
=suberosiondr(Nx,Ny,NN,dt,dd,r2,r33);
%以上是利用参数raa和d求得r2和r33,再求得Mt
% 目标曲线ft(t)=(1/600)*(t-100);
ft=0;
for t=101:700
ft(t)=(1/600)*(t-101);
Ft(t)=abs(ft(t)-Mt(t));
end
MAX=max(Ft);
上面是程序,其主要功能是利用参数raa和d通过数值方法求得一时间序列Mt,MAX是误差的最大值,优化目标是Mt与ft最接近,即误差最大值MAX最小,寻找此时的参数raa和d。
请教此优化问题如何解决? 去掉clc和clear之后还是出错:
??? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function failed with the following error:
Reference to a cleared variable x.
是不是函数不连续所造成的原因? 原帖由 wxpxyz 于 2006-9-3 21:06 发表
去掉clc和clear之后还是出错:
??? Error using ==> fmincon
FMINCON cannot continue because user supplied objective function failed with the following error:
Reference to a cleared variable x.
是 ...
function MAX=optFx(x)
这个x是输入参数,你调用这个函数前应给出值吧
页:
[1]
2