yqing 发表于 2006-7-25 00:38

哪位大侠熟线性规划的,帮个忙看看。急啊。

我这有个问题,请各位大侠帮看看怎样编程。
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
我觉得有点象极大极小问题,可是不知怎样编程。哪位高手能指点一下吗?不胜感激了。

cdwxg 发表于 2006-7-25 00:40

建议你用搜索功能,线性规划的帖子多得很,很多都被解决的了.
搜索下自己看下,能解决不.不行再问:)

yqing 发表于 2006-7-25 11:22

请问是在本站搜还是网上搜?

请各位大侠帮帮忙,哪怕指点一下也很啊。

[ 本帖最后由 mjhzhjg 于 2007-4-28 00:32 编辑 ]

domesticli 发表于 2006-7-30 17:43

是不是属于极小化极大问题?可能可以用fminimax函数解决,将目标函数的1000先乘到约束条件,然后将六个约束条件看成目标函数,可以参考help的例子。

leiqz 发表于 2006-7-31 01:46

请问如何将6个约束条件看成目标函数?新手,所以不太明白,能否说的详细些?能否举个例子,help我看不太懂。谢谢了。

[ 本帖最后由 leiqz 于 2006-7-31 01:48 编辑 ]

domesticli 发表于 2006-7-31 12:33

这是《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

dingd 发表于 2006-7-31 23:12

用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

yqing 发表于 2006-8-6 23:05

我的问题是如何编程约束中的:0.1+0.2*x+0.3*y+0.4*z<=p0
因为p0和p1不是具体值,而是几个函数中的最大值,当x,y,z取不同值时,可能针对的函数不同。所以大侠们能否就我上面的例子编个程序?这样我比较看的懂。不胜感激了。各位,帮个忙吧。

[ 本帖最后由 yqing 于 2006-8-6 23:09 编辑 ]
页: [1]
查看完整版本: 哪位大侠熟线性规划的,帮个忙看看。急啊。