哪位大侠熟线性规划的,帮个忙看看。急啊。
我这有个问题,请各位大侠帮看看怎样编程。y1=;
y2=;
p0=max(y1);p1=max(y2);
现在,归结成线性规划问题。
目标函数:minF=p0+1000*p1
约束方程:
0.1+0.2*x+0.3*y+0.4*z<=p0
0.2+0.3*x+0.4*y+0.5*z<=p0
0.3+0.4*x+0.5*y+0.6*z<=p0
1+0.01*x+0.02*y+0.03*z<=p1
0.5+2*x+0.3*y+0.9*z<=p1
2.7+3*x+0.6*y+1.4*z<=p1
我觉得有点象极大极小问题,可是不知怎样编程。哪位高手能指点一下吗?不胜感激了。 建议你用搜索功能,线性规划的帖子多得很,很多都被解决的了.
搜索下自己看下,能解决不.不行再问:) 请问是在本站搜还是网上搜?
请各位大侠帮帮忙,哪怕指点一下也很啊。
[ 本帖最后由 mjhzhjg 于 2007-4-28 00:32 编辑 ] 是不是属于极小化极大问题?可能可以用fminimax函数解决,将目标函数的1000先乘到约束条件,然后将六个约束条件看成目标函数,可以参考help的例子。 请问如何将6个约束条件看成目标函数?新手,所以不太明白,能否说的详细些?能否举个例子,help我看不太懂。谢谢了。
[ 本帖最后由 leiqz 于 2006-7-31 01:48 编辑 ] 这是《matlab6.0数学手册》的中的一章,你看看应该会有所帮助。我试了一下,在myfun.m所在文件夹运行:(结果有问题)
function f = myfun(x)
f(1) = 0.1+0.2*x(1)+0.3*x(2)+0.4*x(3);
f(2) = 0.2+0.3*x(1)+0.4*x(2)+0.5*x(3);
f(3) = 0.3+0.4*x(1)+0.5*x(2)+0.6*x(3);
f(4) = 1000*(1+0.01*x(1)+0.02*x(2)+0.03*x(3));
f(5) = 1000*(0.5+2*x(1)+0.3*x(2)+0.9*x(3));
f(6) = 1000*(2.7+3*x(1)+0.6*x(2)+1.4*x(3));
>> x0=;
>> = fminimax(@myfun,x0)
Optimization terminated: magnitude of search direction less than 2*options.TolX
and maximum constraint violation is less than options.TolCon.
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
1
x =
1.0e+008 *
-0.4861
-0.9703
-1.4546
fval =
1.0e+011 *
-0.0010 -0.0013 -0.0016 -0.0679 -2.5723 -4.0768
可能我理解错了。请高手解答:L 用1stOpt较易实现,基本不用编程:
********************************
ParameterDomain = ;
minfunction p0+1000*p1;
0.1+0.2*x+0.3*y+0.4*z<=p0;
0.2+0.3*x+0.4*y+0.5*z<=p0;
0.3+0.4*x+0.5*y+0.6*z<=p0;
1+0.01*x+0.02*y+0.03*z<=p1;
0.5+2*x+0.3*y+0.9*z<=p1;
2.7+3*x+0.6*y+1.4*z<=p1;
**************************************
结果:
目标函数值(最小): 2700.3
p0: 0.300000000001312
p1: 2.7
x: 1.36293152453577E-16
y: 3.74751529552964E-16
z: 5.30959504247408E-17 我的问题是如何编程约束中的:0.1+0.2*x+0.3*y+0.4*z<=p0
因为p0和p1不是具体值,而是几个函数中的最大值,当x,y,z取不同值时,可能针对的函数不同。所以大侠们能否就我上面的例子编个程序?这样我比较看的懂。不胜感激了。各位,帮个忙吧。
[ 本帖最后由 yqing 于 2006-8-6 23:09 编辑 ]
页:
[1]