如何设置一个函数处理许多变量为一个不寻常的函数?

3视图(30天)
你好,
我有一个优化问题。但是它不是一个正则方程y = x ^ 2。我有以下功能,我想优化性能:
性能= optimizeOscillators (matrix_close振荡器、OptimalSellShort OptimalSellLong, OptimalBuyShort, OptimalBuyLong)
给出了变量matrix_close和振荡器和需要被转移到功能。的目标是找到最优值OptimalSellShort, OptimalSellLong OptimalBuyShort, OptimalBuyLong每个躺在区间[0100]。我想用不同的方法如fminsearch或ga。我不知道如何设置一个处理函数。我思考这个问题:
FitnessFcn = @ (OptimalBuyLong OptimalBuyShort、OptimalSellLong OptimalSellShort) optimizeOscillators (matrix_close、振荡器、OptimalSellShort OptimalSellLong, OptimalBuyShort, OptimalBuyLong)
用下面的调用函数第一个例子:
= fminsearch (FitnessFcn matrix_close,振荡器,OptimalSellShort OptimalSellLong, OptimalBuyShort, OptimalBuyLong)
然而我得到以下错误:
错误使用@ (matrix_close,振荡器,OptimalBuyLong OptimalBuyShort, OptimalSellLong, OptimalSellShort) optimizeOscillators (matrix_close、振荡器、OptimalSellShort OptimalSellLong, OptimalBuyShort, OptimalBuyLong)没有足够的输入参数。
我只是不知道如何宣布独立变量给出一个区间。我需要把一个向量为每个如整数1到100 ?我必须把它怎么样?目前我只有50的开始值。请帮助我!提前谢谢!

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2016年6月17日
所有值被发现必须捆绑在一起成一个向量。然后在你的目标函数可以把这个向量分开,将部分分配给变量的名字对你有意义,重塑如果这是合适的。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2016年6月22日
FitnessFcn = @ (var) optimizeOscillators (matrix_close、振荡器、var (1), var (2), var (3), var (4));
x0 = (50 50 50,50);
[点,fval] = fminsearch (x0 FitnessFcn);
然而,fminsearch没有任何约束的任何可能性,除此之外,你可以放弃当遇到南或inf。你应该考虑fmincon:
一个= [];
b = [];
Aeq = [];
说真的= [];
磅= (0,0,0,0);
乌兰巴托= (100、100、100、100);
(点,fval) = fmincon (Aeq FitnessFcn x0, A, b,说真的,磅,乌兰巴托);

登录置评。

类别

找到更多的在具体问题具体分析的优化设置帮助中心文件交换

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!