大虾请进!

zhaofei2009 2009-06-13 09:07:32
如何编程解决线性规划问题?

以此为例:
目标函数: z=60x1+50x2+40x3
约束条件: 4x1+ 6x2+ 4x3=440
8x1+ 2x2+ 4x3=480
x1,x2,x3为自然数

我是学经济的,总是列出式子不会解,愁,帮帮忙吧!
...全文
59 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoshi935 2009-06-13
  • 打赏
  • 举报
回复
建议用lingo吧。
lambert_s 2009-06-13
  • 打赏
  • 举报
回复
用LINGO吧,是解决这种问题最强大的工具!
waterfield 2009-06-13
  • 打赏
  • 举报
回复
装一个SAS或spss
光宇广贞 2009-06-13
  • 打赏
  • 举报
回复
你有LINGO么?学经济的不能没有这个东西……它是最适合的。先找一个装上吧。
光宇广贞 2009-06-13
  • 打赏
  • 举报
回复
最值、目标函数、约束条件,就用lingo求。
  • 打赏
  • 举报
回复
zhangxun2007 2009-06-13
  • 打赏
  • 举报
回复
哈哈,外打正着,外打正着啊!

线性规划的一般形式度可以转化为标准形式
即 求目标函数的最小值
并且约束条件是等式


用MATLAB比较好,
它还可以进行灵敏度分析(用vub表示),
在经济学上很有意义。
ice50303 2009-06-13
  • 打赏
  • 举报
回复
要相信强大的CPU 运行速度。
想不到高深的简便的算法,就用最笨的最原始的就好了。。。

在结果获取上是一样的。。

接分~~
amossavez 2009-06-13
  • 打赏
  • 举报
回复
楼主这种情况最好还是用matlab编写吧
zhaofei2009 2009-06-13
  • 打赏
  • 举报
回复
不好意思,求目标函数的最小值。
zhangxun2007 2009-06-13
  • 打赏
  • 举报
回复
你可以学习lindo,也可以学习lingo,还可以学习MATLAB。
但我建议你学习MATLAB,它不仅简单易学,而且功能强大。

用MATLAB编写的代码:
c=[60 50 40];
a=[4 6 4;8 2 4];
b=[440;480];
vlb=[0;0;0];
vub=[];
aeq=[4 6 4;8 2 4];
beq=[440;480];
x=linprog(c,a,b,aeq,beq,vlb,vub);
z=c*x
运行结果:
z=
4.6000e+003
进一步键入:
x
x=
10.0000
0.0000
100.0000

如果还有疑问,咱们可以交流。
ltc_mouse 2009-06-13
  • 打赏
  • 举报
回复
参考~~

int min=0; //如果要求max类似
for( x1=1; x1<=60; x1++ )
for( x2=1; x2<=440/6; x2++ )
for( x3=1; x3<=110; x3++ )
{
if(440 == 4*x1+6*x2+4*x3 && 480 == 8*x1+2*x2+4*x3)
{
temp = 60*x1+50*x2+40*x3;
if( min > temp )
{
min = temp;
_x1=x1, _x2=x2, _x3=x3;
}
}
}
pathuang68 2009-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhangxun2007 的回复:]
你可以学习lindo,也可以学习lingo,还可以学习MATLAB。
但我建议你学习MATLAB,它不仅简单易学,而且功能强大。

用MATLAB编写的代码:
c=[60 50 40];
a=[4 6 4;8 2 4];
b=[440;480];
vlb=[0;0;0];
vub=[];
aeq=[4 6 4;8 2 4];
beq=[440;480];
x=linprog(c,a,b,aeq,beq,vlb,vub);
z=c*x
运行结果:
z=
4.6000e+003
进一步键入:
x
x=
10.0000
0.0000
100.0000

如果还有疑问…
[/Quote]

不知道楼主如果不用程序,纯手工能够求出z的最小值吗?这个过程并不复杂。应该几分钟就可以搞定了。
经过推到,最后会得到
z = 4600 + 10x2
由于x2是自然数,因此
z的最小值为4600。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧