数学建模社区-数学中国

标题: “半无限”有约束的多元函数最优解 matlab [打印本页]

作者: ashes_of_time    时间: 2013-8-1 21:24
标题: “半无限”有约束的多元函数最优解 matlab
function [C,Ceq,K1,K2,S] = mycon(X,S)
% 初始化样本间距:
if isnan(S(1,1)),
S = [0.2 0; 0.2 0];
end
% 产生样本集:
w1 = 1:S(1,1):100;
w2 = 1:S(2,1):100;
% 计算半无限约束:
K1 = sin(w1*X(1)).*cos(w1*X(2)) - 1/1000*(w1-50).^2 -sin(w1*X(3))-X(3)-1;
K2 = sin(w2*X(2)).*cos(w2*X(1)) - 1/1000*(w2-50).^2 -sin(w2*X(3))-X(3)-1;
% 无非线性约束:
C = [ ]; Ceq=[ ];
% 绘制半无限约束图形
plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite constraints')
然后在MATLAB 命令窗口或编辑器中建立M 文件:
fun = 'sum((x-0.5).^2)';
x0 = [0.5; 0.2; 0.3]; % Starting guess
[x,fval] = fseminf(fun,x0,2,@mycon)
ashes of time<zhangdianqiankun@qq.com> 21:16:45
有大神看的懂吗
ashes of time<zhangdianqiankun@qq.com> 21:17:01
if isnan(S(1,1)),  是判断非法操作 可以去掉  但S(1,1)是什么
作者: 冰E柠檬    时间: 2013-8-1 22:02
你这个程序好像就是要画,K1和K2的图像吧,然后S(1,1)跟这个mycon(X,S)语句有关,因为mycon(X,S)这个是连接到X跟S的数据的,所以要问S(1,1)这个是什么得看你本来存放的数据是什么吧。。。。。

作者: ashes_of_time    时间: 2013-8-2 14:03
冰E柠檬 发表于 2013-8-1 22:02
你这个程序好像就是要画,K1和K2的图像吧,然后S(1,1)跟这个mycon(X,S)语句有关,因为mycon(X,S)这个是连接 ...

这个程序是可以运行的 我就不知道s (1,1)存放啥
作者: madio    时间: 2013-8-2 14:55
看看fseminf函数的帮助就知道了,S是一个推荐的采样间隔,有时会用到,S的第i行包含对于ki的推荐的采样间隔,如果ki是一个向量使用 S(i,1),如果ki是矩阵使用S(i,2).S是由半无限约束函数决定的,第一步迭代的时候S是NaN,这里的这个判断就是让初始的时候S不为NaN。S(1,1)对应的是k1的采样间隔。
作者: ashes_of_time    时间: 2013-8-2 15:52
madio 发表于 2013-8-2 14:55
看看fseminf函数的帮助就知道了,S是一个推荐的采样间隔,有时会用到,S的第i行包含对于ki的推荐的采样间隔 ...

好像懂了点 太感谢了 叩首




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5