声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 859|回复: 3

[编程技巧] 怎样解决如下问题(最小值问题)

[复制链接]
发表于 2008-9-25 08:27 | 显示全部楼层 |阅读模式

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

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

x
约束条件:
24x(1)+21x(2)+48x(3)>=200
x(1)x(4)+x(2)x(5)+x(3)x(6)>=2500
0=<x(1)<=12,0=<x(2)=<10,0=<x(3)=<5
850=<x(4)<=2000,1250=<x(5)=<1750,1500=<x(6)=<4000
目标函数:
Q=8000x(1)+16600x(2)+18500x(3)+12x(4)+7.8x(5)+18x(6)
的最小值

[ 本帖最后由 sigma665 于 2008-9-25 08:30 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-9-25 09:27 | 显示全部楼层
目标函数值(最小): 113616.666666667
x1: 8.33333333333333
x2: 6.76567566100293E-17
x3: 1.16477515052492E-15
x4: 850
x5: 1250
x6: 1500
发表于 2008-9-25 09:57 | 显示全部楼层
用lingo或者lindo也比较容易处理的
发表于 2008-9-25 10:32 | 显示全部楼层
用fmincon

function zmin
clc;clear;
X0=[12 2 2 900 1300 2000];
A=[-24 -21 -48 0 0 0];b=-200;
Aeq=[];beq=[];
LB=[0 0 0 850 1250 1500];UB=[12 10 5 2000 1750 4000];
[X,FVAL,EXITFLAG]=fmincon(@fun,X0,A,b,Aeq,beq,LB,UB,@fun2)

function yhat=fun(x)
yhat=8000*x(1)+16600*x(2)+18500*x(3)+12*x(4)+7.8*x(5)+18*x(6);

function [c,ceq]=fun2(x)
c=-(x(1)*x(4)+x(2)*x(5)+x(3)-x(6)-2500);
ceq=[];


结果:
X =
1.0e+003 *

0.0083 0 0 0.8500 1.2500 1.5000

FVAL = 1.1362e+005
EXITFLAG = 1

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-4 12:59 , Processed in 0.059936 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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