最大化向量和
Maximize sum of vectors
给定多个向量,每个向量都有一个未知变量,例如:
v1、v2、v3...vn 和 x1、x2、x3...xn
和一个目标向量vt
我正在尝试创建一个算法,通过设置 x1、x2、x3、xn 来最大化 p
这样:
v1*x1 + v2*x2 + v3*x3 + vn*xn = vt*p
系数 x1、x2、x3 和 xn 的约束如下:
0 <= x1 <= c1
0 <= x2 <= c2
0 <= x3 <= c3
0 <= xn <= cn
其中,c1、c2、c3 和 cn 是给定常数。
我将如何编写算法来找到使 p 最大化的变量?
编辑:此示例中的向量长度为 6,并且可以有多达 n 个向量。因此,据我所知,当 n 大于 6 时,高斯消去法将不起作用。
Edit2:我发现了一种看待问题的方法,但仍然坚持使用哪种算法来解决它。这是一张矢量图,我用不同的方式解释了我想做的事情:
这个描绘是二维的,我想形状在更高的维度和更多的向量中会变得更复杂。
找到解决方案:
在数学交流中,我询问了如何将问题格式化为线性程序:
https://math.stackexchange.com/questions/1200260/how-to-maximize-the-sum-of-vectors-in-target-direction
关于线性程序格式的问题,只需找到一个 lp 求解器库,这是我计划使用的库:
http://www.coin-or.org/projects/
它在 c++ 中,并且可以使用包装器以便可以在 c# 中调用它的函数。
给定多个向量,每个向量都有一个未知变量,例如:
v1、v2、v3...vn 和 x1、x2、x3...xn
和一个目标向量vt
我正在尝试创建一个算法,通过设置 x1、x2、x3、xn 来最大化 p 这样:
v1*x1 + v2*x2 + v3*x3 + vn*xn = vt*p
系数 x1、x2、x3 和 xn 的约束如下:
0 <= x1 <= c1
0 <= x2 <= c2
0 <= x3 <= c3
0 <= xn <= cn
其中,c1、c2、c3 和 cn 是给定常数。
我将如何编写算法来找到使 p 最大化的变量?
编辑:此示例中的向量长度为 6,并且可以有多达 n 个向量。因此,据我所知,当 n 大于 6 时,高斯消去法将不起作用。
Edit2:我发现了一种看待问题的方法,但仍然坚持使用哪种算法来解决它。这是一张矢量图,我用不同的方式解释了我想做的事情:
这个描绘是二维的,我想形状在更高的维度和更多的向量中会变得更复杂。
找到解决方案:
在数学交流中,我询问了如何将问题格式化为线性程序: https://math.stackexchange.com/questions/1200260/how-to-maximize-the-sum-of-vectors-in-target-direction
关于线性程序格式的问题,只需找到一个 lp 求解器库,这是我计划使用的库: http://www.coin-or.org/projects/
它在 c++ 中,并且可以使用包装器以便可以在 c# 中调用它的函数。