博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab换热器优化设计,matlab用于求解一个简单的优化设计问题 - 数学 - 小木虫 - 学术 科研 互动社区...
阅读量:4955 次
发布时间:2019-06-12

本文共 1828 字,大约阅读时间需要 6 分钟。

最近在学习工程优化设计与MATLAB实现,在模拟课本中的例子的时候,程序提示不正确。

Error using ==> mrdivide

Matrix dimensions must agree.

Error in ==> htexcoptfun4 at 10

dtmjy=((88-tlqs2)-(tjy2-tlqs1))/log((88-tlkq2)/(tjy2-tlqs1));

Error in ==> fmincon at 519

initVals.f = feval(funfcn{3},X,varargin{:});

主要问题有以下几点。

1)主程序调用的子函数 需要变量t。但是整个程序并没有t的输入,只有主程序的输出才有t。子函数需要调用t,但是只有主程序的输出才有t这个是不是矛盾?

是不是fmincon这个函数是一个需要迭代的函数?给定初始值t0之后,得到一个t然后再带入子函数即目标函数,再得到一个新的t,直到符合终止条件再终止?

2)我运行的时候出现[t,A]=fmincon(@htexcoptfun4,t0,[],[],[],[],tL,tU,@htexcoptcons4,options)

Caused by:Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.

函数初始化失败,是不是因为这个t未定义的原因?之前就感觉书有问题。但是自己由于不是很精通,所以想请教一下各位。麻烦了。下面是 matlab程序

1)主程序

%换热器优化设计,hexcopttest1

clc;

clear all;

close all;

global mclqs Kzl Kjy Ksr

mclqs=116.23;

Kzl=120;

Kjy=750;

Ksr=100;

t0=[62 70];

%options=optimset('LargeScale','off');

tL=[60,60];

tU=[88,88];

[t,A]=fmincon(@htexcoptfun4,t0,[],[],[],[],tL,tU,@htexcoptcons4,options)

2)目标函数

function A=htexcoptfun4(t)

global mclqs Kzl Kjy Ksr

global tlqs1 tlqs2 tzlq2 tjy2 tlkq2

global dtmzl dtmjy dtmsr AA

tlqs1=t(1);

tlqs2=t(2);

tzlq2=165-19.31*(tlqs1-60);

tjy2=88-2.62*(tlqs2-60)+40;

tlkq2=2.41*(tlqs2-60)+40;

dtmzl=((165-tlqs1)-(tzlq2-60))/log((165-tlqs1)/(tzlq2-60));

dtmjy=((88-tlqs2)-(tjy2-tlqs1))/log((88-tlkq2)/(tjy2-tlqs1));

dtmsr=((tlqs2-tlkq2)-(60-40))/log((tlqs2-tlkq2)/(60-40));

AA(1)=mclqs*(tlqs1-60)*1000/(Kzl*dtmzl);

AA(2)=mclqs*(tlqs2-tlqs1)*1000/(Kjy*dtmjy);

AA(3)=mclqs*(tlqs2-60)*1000/(Ksr*dtmsr);

A=sum(AA);

Q=mclqs*(tlqs1-60)+mclqs*(tlqs2-tlqs1)

end

3)约束函数

function [c ceq]=htexcoptcons4(t)

global mclqs Kzl Kjy Ksr

global tlqs1 tlqs2 tzlq2 tjy2 tlkq2 AA

global dtmzl dtmjy dtmsr

c(1)=1100-mclqs*(tlqs2-60);

c(2)=2+tlqs1-tlqs2;

c(3)=tzlq2-70;

c(4)=tjy2-87;

c(5)=42-tlkq2;

c(6)=-dtmzl;

c(7)=-dtmjy;

c(8)=-dtmsr;

A=sum(AA);

ceq=abs(imag(A));

转载地址:http://skyhp.baihongyu.com/

你可能感兴趣的文章
ORACLE 将查询结果中的多个字段值赋给变量
查看>>
在powershell上使用python。
查看>>
c语言基础(一)
查看>>
Promise简单实现(正常思路版)
查看>>
EasyPlayerPro Windows播放器电子放大/局部放大播放功能实现
查看>>
JS操作iframe里的dom(转)
查看>>
简单演示如何从光盘启动救援模式
查看>>
s7-200 PID控位
查看>>
洛谷 P2680 运输计划-二分+树上差分(边权覆盖)
查看>>
oracle 查看后台正在执行的脚本
查看>>
hash poj3349
查看>>
爱好-文化-冢:象冢
查看>>
URLerror
查看>>
个人阅读作业2
查看>>
Aggressive cows 愤怒的牛 HYSBZ - 1734(题解)
查看>>
CodeForces 669D
查看>>
深入解析spring中用到的九种设计模式
查看>>
swoole之memoryGlobal内存池分析
查看>>
面试问题:Vuejs如何实现双向绑定
查看>>
Java8 list转map 坑
查看>>