读书人

请帮忙设计一个算法多谢!

发布时间: 2012-02-12 17:16:34 作者: rapoo

请帮忙设计一个算法,谢谢!!!!!!!!!
有一个表:
w x1 x2 x3 ...
100 29.4 0.7 100.6
100 34.6 0.9 101.5
... ... ... ...
其中 w是重量,x1,x2,x3是各种含量,各种含量由重量(w)计算
列相加要符合x1=1000,x2=56.9,x3=2000,
怎样计算重量(w)?
请大牛们帮忙设计个算法,不胜感激!

[解决办法]
写的这是啥,各种含量由重量(w)计算?你的计算规则呢,2+3=5,1+4=5,你说哪个对,哪个错
[解决办法]
行的每一个值都没固定下来,如何算?
[解决办法]

探讨
有一个表:
w x1 x2 x3 ...
100 29.4 0.7 100.6
100 34.6 0.9 101.5
... ... ... ...
其中 w是重量,x1,x2,x3是各种含量,各种含量由重量(w)计算
列相加要符合x1=1000,x2=56.9,x3=2000,
怎样计算重量(w)?
请大牛们帮忙设计个算法,不胜感激!

[解决办法]
那也是有规则的,也不是看出来的,或者原始数据就是控制好的,也不是你反推回去的
[解决办法]
让我用数学的符号给你表达:函数sum(ai*wi)=f(x1i,x2i,x3i);四维因素(wi,x1i,x2i,x3i)的定义域为给定的表格内,且(wi,x1i,x2i,x3i)被约束在给定表格的行中及wi确定:s.t.->g(x1i,x2i,x3i)也确定(一一对应),i小于表格行数,ai大于等于0,问1:现已知sum(x1i)=X1,sum(x2i)=X2,sum(x3i)=X3;求ai.问2:在问1上加约束sum(ai*wi)=W;再求ai.
有一种语言叫:LINGO,语言风格就跟平常的数学优化模型表达式差不多,它可以很好的解决这类优化问题,强于分析,不用自己设计算法,效率很快,但有可缺点不易程序化,如果你要做成程序化得用C,C++,java,C#写更好,但问题是你要设计一个很抽象的算法,如果数据量少的话比如i<1000可以用穷举,ai以0.005步长递增,加上一些sum值的约束减枝,可以很好解决这个问题。如果你的数据量大,可以考虑用MATLAB中的优化工具包,效果没有LINGO高,但可以生成DLL,更或是c代码,如果你汇编强,可以从里面直接提汇编,加到你的程序中去,如果你不会,可以直接用他生的DLL,这样的一个问题是你又要去学习MATLAB的一些知识,有点成本在这里,但如果你是一个算法迷,你可以在前面说的那个方法,在目前没有更好的办法时,加入一些好的数据结构或是最优堆等,从一些侧面加速算法。你也可以考虑加入一些高斯收敛等算法,从数学逻辑上推出一个等价的简易模型,但这要求你的数学能力。

读书人网 >.NET

热点推荐