Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Python 其中包含一个公共变量的分布式优化_Python_Optimization_Distributed Computing_Multi Agent_Scipy Optimize - Fatal编程技术网

Python 其中包含一个公共变量的分布式优化

Python 其中包含一个公共变量的分布式优化,python,optimization,distributed-computing,multi-agent,scipy-optimize,Python,Optimization,Distributed Computing,Multi Agent,Scipy Optimize,我不熟悉优化技术,对我的方法有疑问 假设我有一个代理,它试图优化3个变量C1、x11、x12以最小化功耗。我有60个这样的代理,它们构成了一个系统。所有这些代理都可以归为一个类别,C1作为所有代理的公共变量。因此agent2在C1、x21、x22上进行优化。C1、x31、x32等上的代理3 我尝试过使用组合方法进行优化,其中优化器在(C1、x11、x12、x21、x22、x31、x32…)上进行优化 如果代理的数量较少,则它是可行的,但随着代理数量的增加,If在计算上变得昂贵且不可行 如果我尝试

我不熟悉优化技术,对我的方法有疑问

假设我有一个代理,它试图优化3个变量C1、x11、x12以最小化功耗。我有60个这样的代理,它们构成了一个系统。所有这些代理都可以归为一个类别,C1作为所有代理的公共变量。因此agent2在C1、x21、x22上进行优化。C1、x31、x32等上的代理3

我尝试过使用组合方法进行优化,其中优化器在(C1、x11、x12、x21、x22、x31、x32…)上进行优化 如果代理的数量较少,则它是可行的,但随着代理数量的增加,If在计算上变得昂贵且不可行

如果我尝试单独优化每个代理,每个代理都会给出不同的C1,这是所有代理的一个公共变量。但是,由于C1是所有代理的一个公共变量,因此所有代理都应该协调并具有一个公共值

有人能帮忙解决他的问题吗。对于我的用例来说,这是一个更好的方法

我目前正在使用scipy差分进化算法 联合进近代码

from scipy import optimize

bounds = [(15,18),(500,1500),(20,50),(500,1500),(20,50),(500,1500),(20,50),(500,1500),(20,50),(500,1500),(20,50),(500,1500),(20,50) ......]

arguments = [25,25000,24,32500,25,32500,24,22000,23.5,24000,25,42000,25,32500 ....]

start = time.process_time()
res = optimize.differential_evolution(objective,bounds,args=arguments,disp=False)
print('Time taken:' + str(time.process_time() - start))
print('Optimized x values:' + str(res.x))
print('Optimized Fun Value:' + str(res.fun))
个别进近守则

start = time.process_time()
for i in range(0,61):
    arguments = (agr1[i],arg2[i],agent_models[i])
    res = optimize.differential_evolution(optimization_distributed,bounds,args=arguments,disp=False)
    print('Optimized x values:' + str(res.x))
    print('Optimized fun_val:' + str(res.fun))      
    print('-----------------------------------------------------------------')
print('Time taken:' + str(time.process_time() - start))


我愿意改变我的技术和策略以获得更好的结果。谢谢

在评论中提问: 我有一个函数
f1=f1(c1,x11,x12)
要最小化
c1,x11,x12
的值,它可以在一定的范围内变化,受
g1(c1,x11,x12)<0
的约束

像wise一样,我有多个函数`,f2,f3…f60

f2可以表示为f2(c1,x21,x22),以使c1,x21,x22的值最小化,该值可以在一定范围内变化,服从g2(c1,x21,x22)<0

f3可以表示为f3(c1,x31,x32),以使c1,x31,x32的值最小化,这些值可以在确定的范围内变化,受g3(c1,x31,x32)<0的约束

这里,如果我们看到c1是所有函数的一个变量

像wise f4、f5…f60一样,约束为g4、g5、g6

我的最终目标是最小化f1,f2,f3…f60的总和

i、 e

最小f1(c1,x11,x12)+f2(c1,x21,x22)+f3(c1,x31,x32)+……+f60(c1、x601、x602)
s、 t.g1(c1,x11,x12)<0
,g2(c1,x21,x22)<0
,g3(c1,x31,x32)<0
......
,g601(c1,x601,x602)<0

如果需要进一步澄清,请告诉我。您能写下您的优化问题吗?遵循这个逻辑:您可以提供一个数据集,或者使用公共数据集来描述问题吗?对优化问题的澄清也会有所帮助添加详细的优化问题@pv8添加详细的优化问题@user7440787
min f1(c1,x11,x12) +  f2(c1,x21,x22) + f3(c1,x31,x32) + ... + f60(c1,x601,x602) 

s.t. g1(c1,x11,x12) < 0 
, g2(c1,x21,x22) < 0
,g3(c1,x31,x32) < 0 
......
,g601(c1,x601,x602) < 0