Matlab 变量数目未知的优化

Matlab 变量数目未知的优化,matlab,optimization,mathematical-optimization,genetic-algorithm,nonlinear-optimization,Matlab,Optimization,Mathematical Optimization,Genetic Algorithm,Nonlinear Optimization,由于原始问题更为复杂,下面用一个简单的例子来描述这个想法 例如,假设我们想把几个路由器天线放在一个房间的某个地方,这样手机就可以在桌子上获得最大的信号强度(接收功率>Pmax),而在床上获得最小的信号强度(接收功率R来测量,其中S在a处有一个单一的最大值S_0,并且由S(x)>const构造的集合是简单连接的,即S(x)=S_0*exp(-const*(x-a)^2) 给定一组天线a,得到的信号强度是单个天线的最大值 S_A(x) = max{S_a(x) : for all a in A} ,

由于原始问题更为复杂,下面用一个简单的例子来描述这个想法

例如,假设我们想把几个路由器天线放在一个房间的某个地方,这样手机就可以在桌子上获得最大的信号强度(接收功率>Pmax),而在床上获得最小的信号强度(接收功率 从数学上讲

信号强度取决于变量(x、y、z)和数字 变量集

。i、 e.天线的位置和数量。 此外,假设

预测=f((x1,y1,z1),(x2,y2,z2),…(xi,yi,zi),…(xn, yn,zn)

其中n和(xi,yi,zi)将被优化。目标是将

成本函数=| |信号强度-预测||

我尝试在Matlab中使用GA和混合整数规划来实现这一点。使用两个优化函数,外部函数优化n,内部优化函数优化给定n的(x,y,z)。这个方法的速度很慢,到目前为止我还没有看到这个方法给出的一个结果

有没有人有更有效的方法来解决这个问题?如有任何建议,我们将不胜感激。提前谢谢

术语|问题定义 天线以恒定功率在R^3中的位置
a发送。它的信号强度可以通过一些
S:R^3->R
来测量,其中
S
a
处有一个单一的最大值
S_0
,并且由
S(x)>const
构造的集合是简单连接的,即
S(x)=S_0*exp(-const*(x-a)^2)

给定一组天线
a
,得到的信号强度是单个天线的最大值

S_A(x) = max{S_a(x) : for all a in A} ,
这意味着我们“锁定”了最强的天线,这就是手机的功能

K=R^3 x R
表示点的空间(位置、强度)。现在将
K
POI_min
POI_max
的两个finite子集简化为
K
。我们希望找到一组天线数量最少(
|A |->min.
)的
A
,满足以下条件:

for all (x,w) in POI_min : S_A(x) < w and for all (x,w) in POI_max : S_A(x) > w .

另一方面,您刚刚给出了一个示例问题,因此此解决方案可能不适用于您的情况,也不适用于您的情况。我确实做了一些假设。因此,在这个问题上更加具体可能会给你一个更好的答案。

@AnderBiguri你的意思是这是一个没有人解决的问题吗?@AnderBiguri说的是你的问题太宽泛了。请在这里回答一个问题。提出一个特定的问题,指出您尝试了什么,并提供代码/。您是否使用了
配置文件
?你试过先解决小问题吗?你确定这个问题不是由bug引起的吗?听起来你有一些代码不适合你。请包括代码,并说明哪些不起作用。
min_sphere = {(x_i,r_i) : from POI_min}, 
spheres_to_cover = {(x_i,r_i) : from POI_max}
A = {}
while not is_empty(spheres_to_cover)
    power_set_score = struct // holds score, k
    PS <- costruct power set of sphere_to_cover
    for i = 1:number_of_elements(PS)
        k = PS[i]
        if intersection(k) \ min_sphere is not empty
            power_set_score[i].score = |k|
        else
            power_set_score[i].score = 0
        end if
        power_set_score[i].k = k
    end for
    sort(power_set_score) // sort by score, biggest first
    A <- add arbitrary point in (intersection(power_set_score[1].k) \ min_sphere)
    spheres_to_cover = spheres_to_cover \ power_set_score[1].k
end while