作者jam0731 (这位大大很酷唷)
看板MATLAB
标题[问题] 求解最佳解问题
时间Sun Nov 8 19:52:12 2020
各位matlab大神早安
小弟对於使用matlab不太熟悉
但现在必须使用matlab进行最佳化求解
也因此选择上板询问
若有打扰之处还请见谅
-
问题是这样的
小弟有一个目标函数并设有两限制式
欲在两限制式下Minimize我的目标函数
并计算出不同决策变数下的最佳函数值
希望显示出的有:最佳目标值、最佳值下的各决策变数值
表达式差不多是这样:
Min TotalASN
s.t. (pa1 / (pa1+pr1)) >= 0.95
(pa2 / (pa2+pr2)) <= 0.1
-
code如下:
目标函数(TotalASN.m):
function [TotalASN] = TotalASN(n,ka,kr,C1,C2)
pa1 = 1- nctcdf(3*sqrt(n)*ka,(n-1),3*sqrt(n)*C1);
pr1 = nctcdf(3*sqrt(n)*kr,(n-1),3*sqrt(n)*C1);
ASN1 = n / (pa1+pr1)
pa2 = 1- nctcdf(3*sqrt(n)*ka,(n-1),3*sqrt(n)*C2);
pr2 = nctcdf(3*sqrt(n)*kr,(n-1),3*sqrt(n)*C2);
ASN2 = n / (pa2+pr2)
TotalASN = 0.5*(ASN1+ASN2)
end
限制式则有两条(这边我不知道我写的对不对...):
function [TotalASN,ceq] = constraint(n,ka,kr,C1,C2)
pa1 = 1- nctcdf(3*sqrt(n)*ka,(n-1),3*sqrt(n)*C1);
pr1 = nctcdf(3*sqrt(n)*kr,(n-1),3*sqrt(n)*C1);
pa2 = 1- nctcdf(3*sqrt(n)*ka,(n-1),3*sqrt(n)*C2);
pr2 = nctcdf(3*sqrt(n)*kr,(n-1),3*sqrt(n)*C2);
TotalASN(1) = 0.05 - (pa1 / (pa1+pr1)) ;
TotalASN(2) = 0.1 - (pa2 / (pa2+pr2));
ceq = 0;
end
-
其中C1、C2为事先给定
使用optimization tool求解
却一直说我的input arguments不足
头很疼啊啊啊
希望有大神能够点出我的问题
感谢QAQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.96.231 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1604836334.A.F9E.html
1F:推 caron0225: OBJ与CONSTRAINT用单一变数来包含问题的自变数,其余常 11/14 09:55
2F:→ caron0225: 数看你要用global还是直接定义在function code都行 11/14 09:56
3F:推 caron0225: ex: TotalASN(x), x=[n, ka, kr] 11/14 09:58
4F:→ jam0731: 感谢c大协助,已解决! 11/22 03:36