给出了一些向量,以及每个向量的未知变量,比如说:
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:我发现了一种查看问题的方法,但仍然坚持使用什么样的算法来解决它。这是一个矢量绘图,我用不同的方式解释我要做的事情:
这个描述是二维的,我想这个形状会在更高的维度和更多的向量上变得更加复杂。
答案 0 :(得分:0)
找到解决方案:
在数学交换中,我问过如何将问题格式化为线性程序: 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#中调用它的函数。