声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1382|回复: 7

[编程技巧] 哪位大侠熟线性规划的,帮个忙看看。急啊。

[复制链接]
发表于 2006-7-25 00:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我这有个问题,请各位大侠帮看看怎样编程。
y1=[0.1+0.2*x+0.3*y+0.4*z;0.2+0.3*x+0.4*y+0.5*z;0.3+0.4*x+0.5*y+0.6*z];
y2=[1+0.01*x+0.02*y+0.03*z;0.5+2*x+0.3*y+0.9*z;2.7+3*x+0.6*y+1.4*z];
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
我觉得有点象极大极小问题,可是不知怎样编程。哪位高手能指点一下吗?不胜感激了。
回复
分享到:

使用道具 举报

发表于 2006-7-25 00:40 | 显示全部楼层
建议你用搜索功能,线性规划的帖子多得很,很多都被解决的了.
搜索下自己看下,能解决不.不行再问:)
 楼主| 发表于 2006-7-25 11:22 | 显示全部楼层
请问是在本站搜还是网上搜?

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

[ 本帖最后由 mjhzhjg 于 2007-4-28 00:32 编辑 ]
发表于 2006-7-30 17:43 | 显示全部楼层
是不是属于极小化极大问题?可能可以用fminimax函数解决,将目标函数的1000先乘到约束条件,然后将六个约束条件看成目标函数,可以参考help的例子。
发表于 2006-7-31 01:46 | 显示全部楼层
请问如何将6个约束条件看成目标函数?新手,所以不太明白,能否说的详细些?能否举个例子,help我看不太懂。谢谢了。

[ 本帖最后由 leiqz 于 2006-7-31 01:48 编辑 ]
发表于 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=[0.1;0.1;0.1];
>>[x,fval] = 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
发表于 2006-7-31 23:12 | 显示全部楼层
用1stOpt较易实现,基本不用编程:
********************************
ParameterDomain = [0,];
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
 楼主| 发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-18 00:13 , Processed in 0.072470 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表