cja 发表于 2007-6-20 22:10

一个优化问题

问题是:有一个AX=b的线性方程组,X是n*1的未知数矩阵,A是n*n的系数矩阵,b是n*1的数矩阵。
            A系数矩阵中有m个参数,这些参数有确定的取值范围,所以,可以说这个方程组为符号方程组。
现在是,比如给定一组m个参数,然后解AX=b方程,得到一组X值,然后用这组X值求一个关系式F(X),使得F(X)最小。求得这时的m个参数、X值、F(X)。

不知道我说明白了没有。希望大家给我一个建议,谢谢!

zhlong 发表于 2007-6-20 22:42

问题本身挺清楚,不过你自己有什么问题好像不太清楚哦:@)

xjzuo 发表于 2007-6-20 23:33

请直接将问题及你的处理贴出来,以便他人给出建议.

VibrationMaster 发表于 2007-6-21 07:00

大概属于有约束优化问题

cja 发表于 2007-6-21 15:22

不知道该怎么说,因为源程序很长。

我用一个小例子吧,A=,X=,b=,
其中,参数a,b,c,有一定范围,0<a<1,1<b<2,2<c<3,
当给定一组:a=0.5,b=1.5,c=2.5,这时,解方程组AX=b(方程组直接用X=A\b解就行,这个我会),然后得到一组X的解,用这组X求的一个F(X),反复取abc直到F(X)最小。

我的问题是,不知道该怎么实现反复在abc的取值范围内达到F(X)最小。就是,我不能每次自己输进去一个abc,然后看看F(X)是多少,再输进一次abc,看看F(X)是多少,再比较一下这两次的F(X),哪个最小。把abc的组合输遍,找到最小的F(X)。我想让大家帮我实现这个。
不知道这次说清楚了么有。

dingd 发表于 2007-6-21 17:21

通过线性方程组先将x、y、z的解析解求出来(包含a、b、c),再代入F(X),然后用一般的优化方法求F(X)的最小值不行吗?

gouxg 发表于 2007-6-21 17:23

好像没那么复杂,随便找本线性规划书看看。
我是差不多忘干净了

cja 发表于 2007-6-22 09:26

谢谢各位
我用了一个三重循环,设一定步长,取遍所有的abc组合,找到最小的F(X)。

wangyi_elite 发表于 2007-6-22 09:53

matlab里面不建议用循环浪费了工具箱了建议试试fmincon

cja 发表于 2007-6-22 10:05

我也这么想的,这样做个循环计算起来很慢,比较无奈的方法
但是,还不知道用什么好
你说的我试试吧
谢谢

TurtleRock 发表于 2007-6-22 16:25

s=solve('2*a*x+y+z=0','x+b*y+c*z=0','c*y=1','x','y','z');
求出x、y、z的表达式代入f,求得f的解析表达式,再求极值不好吗?

yf2002043227 发表于 2007-6-22 18:00

带目标的优化问题,建议看看智能算法方面的书,比如蚁群算法,粒子群算法等

cja 发表于 2007-6-25 15:55

回复 #11 TurtleRock 的帖子

源程序里,如果将abc直接用符号方进去计算的话,构成的方程组就成非线性方程组了,因为,有abc的地方有ln、平方计算。
页: [1]
查看完整版本: 一个优化问题