声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1288|回复: 4

[编程技巧] 求助 非线性方程组最优解的matlab编程

[复制链接]
发表于 2008-8-5 17:01 | 显示全部楼层 |阅读模式

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

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

x
问题是:
目标函数:f=2*x+15*t;
s.t         66*x*y>=100;
             y>=1;
             (0.9^(y-2))*t>=1;

我用的是fmincon函数来求解,大家帮帮忙,看下哪里出了错,并帮着修改一下。

编写fop.m文件
function f=fop(x)
f=2*x(1)+15*x(3);

再编写nonlcon1.m
function [c,ce]=nonlcon1(x)
c=[100-66*x(1)*x(2);1-(0.9^(x(2)-2))*x(3)];
ce=[];

再编写testfmincon.m
clc;
x0=[0;0;0];
A=[100,-1;1,-1];
b=[0;0];
lb=[0;1;1];
option=optimset;option.LargeScale='off';option.Display='off';
[x,f]=fmincon('fop',[],[],[],[],lb,[],'nonlcon1',option)

最后运行testfmincon,但是有错,没办法输出结果。
回复
分享到:

使用道具 举报

发表于 2008-8-5 19:08 | 显示全部楼层

回复 楼主 的帖子

x应该就是你的结果吧
没办法输出结果是什么
一直在运行?
 楼主| 发表于 2008-8-5 20:23 | 显示全部楼层
有错误,无法运行
x0,A,b,option,lb都有错,
A,b都是[],lb是[0 0 1]';x0是[10 1 1]';
为什么lb后面要加'?
x0是什么意思?
最后是[x fval]=fmincon('fop',x0,[],[],[],[],lb,[],'nonfun')      为什么不是[x f]=.....

nonfun.m是:
function [c,ce]=nonlcon1(x)
c(1)=100-66*x(1)*x(2);
c(2)=1-(0.9^(x(2)-2))*x(3)];
ce=[];
 楼主| 发表于 2008-8-5 20:26 | 显示全部楼层
最后是[x fval]=fmincon('fop',x0,[],[],[],[],lb,[],'nonfun')      :hug: 为什么不用加option?
:loveliness:
发表于 2008-8-6 09:40 | 显示全部楼层
原帖由 shizao21 于 2008-8-5 20:23 发表
有错误,无法运行
x0,A,b,option,lb都有错,
A,b都是[],lb是[0 0 1]';x0是[10 1 1]';
为什么lb后面要加'?
x0是什么意思?
最后是[x fval]=fmincon('fop',x0,[],[],[],[],lb,[],'nonfun')      为什么不是[x f]= ...


x0,A,b,option,lb这些数不是你自己应该给的吗
[x fval]=fmincon('fop',x0,[],[],[],[],lb,[],'nonfun')      为什么不是[x f]= ... 这个有什么关系,变量名不同而已

lz 还是先去看帮助文档吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-23 05:35 , Processed in 0.055262 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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