Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica Mathematica优化:在目标函数中使用二进制计数_Wolfram Mathematica_Mathematical Optimization - Fatal编程技术网

Wolfram mathematica Mathematica优化:在目标函数中使用二进制计数

Wolfram mathematica Mathematica优化:在目标函数中使用二进制计数,wolfram-mathematica,mathematical-optimization,Wolfram Mathematica,Mathematical Optimization,使用Mathematica,我需要优化一个根据BinCounts定义的函数; 我想最大化的参数定义了bin切点 我认为问题在于Mathematica扩展了目标函数 在给出数值之前的参数方面 值,因此BinCounts抱怨bin规范不是“a” 包含实值、无穷大和-无穷大的列表” 我想下面是我正在做的这类事情的一个最小的例子 试着做什么,发生了什么。我非常感谢你对我的建议 如何解决这个问题 In[1]:= data = RandomReal[1, 30]; (* Make some test dat

使用Mathematica,我需要优化一个根据
BinCounts
定义的函数; 我想最大化的参数定义了bin切点

我认为问题在于Mathematica扩展了目标函数 在给出数值之前的参数方面 值,因此
BinCounts
抱怨bin规范不是“a” 包含实值、无穷大和-无穷大的列表”

我想下面是我正在做的这类事情的一个最小的例子 试着做什么,发生了什么。我非常感谢你对我的建议 如何解决这个问题

In[1]:= data = RandomReal[1, 30]; (* Make some test data. *)

In[2]:= f[a_, b_, c_] := BinCounts[data, {{0, a, b, c, 1}}] (* Shorthand to use below… *)

In[12]:= g[a_, b_, c_] := Max[f[a, b, c]] - Min[f[a, b, c]] (* Objective function. *)

In[13]:= NMaximize[{g[a, b, c], 0 < a < b < c < 1}, {a, b, c}] (* Try to oprimize. *)

During evaluation of In[13]:= BinCounts::cvals: The bin specification {{0,a,b,c,1}} is not a list containing real values, Infinity, and -Infinity. >>

During evaluation of In[13]:= BinCounts::cvals: The bin specification {{0,a,b,c,1}} is not a list containing real values, Infinity, and -Infinity. >>

During evaluation of In[13]:= BinCounts::cvals: The bin specification {{0,a,b,c,1}} is not a list containing real values, Infinity, and -Infinity. >>

During evaluation of In[13]:= General::stop: Further output of BinCounts::cvals will be suppressed during this calculation. >>

Out[13]= {0., {a -> 0., b -> 0., c -> 1.}}
[1]中的
:=data=RandomReal[1,30];(*制作一些测试数据。*)
在[2]:=f[a,b,c]:=BinCounts[data,{{0,a,b,c,1}}}](*以下简称…*)
在[12]:=g[a,b,c]:=Max[f[a,b,c]]-Min[f[a,b,c]](*目标函数。*)
在[13]:=NMaximize[{g[a,b,c],0>
在计算In[13]:=BinCounts::cvals时:bin规范{{{0,a,b,c,1}}}不是包含实值、无穷大和-无穷大的列表。>>
在计算In[13]:=BinCounts::cvals时:bin规范{{{0,a,b,c,1}}}不是包含实值、无穷大和-无穷大的列表。>>
在[13]中的计算过程中:=常规::停止:在此计算过程中,将抑制BinCounts::cvals的进一步输出。>>
Out[13]={0.,{a->0.,b->0.,c->1}

解决方案只是指定目标函数仅根据数值参数定义,如下所示:

g[a_?NumericQ, b_?NumericQ, c_?NumericQ] := Max[f[a, b, c]] - Min[f[a, b, c]]