24小时热门版块排行榜    

查看: 707  |  回复: 8
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

jlzeng

木虫 (正式写手)

[交流] 请帮我看一段matlab程序

问题:
Min  10X2+10X3+40
Sub. to  1≤X1≤4
1≤X2≤4
1≤X3≤4
1≤X4≤4
-(6.9402131+0.252469*x(1)-0.276517*x(2)+0.207394*x(3)+0.314560*x(4)+0.039335*x(1)*x(1)+0.039335*x(2)*x(2)-0.003563*x(3)*x(3)-0.006647*x(4)*x(4)-0.006296*x(1)*x(2)-0.034093*x(1)*x(3)-0.059668*x(1)*x(4)+0.010462*x(2)*x(3)+0.005134*x(2)*x(4)-0.008807*x(3)*x(4))+8.62≤0
6.9402131+0.252469*x(1)-0.276517*x(2)+0.207394*x(3)+0.314560*x(4)+0.039335*x(1)*x(1)+0.039335*x(2)*x(2)-0.003563*x(3)*x(3)-0.006647*x(4)*x(4)-0.006296*x(1)*x(2)-0.034093*x(1)*x(3)-0.059668*x(1)*x(4)+0.010462*x(2)*x(3)+0.005134*x(2)*x(4)-0.008807*x(3)*x(4)-9.17≤0
0.6730551+0.301146*x(1)-0.078675*x(2)+0.011658*x(3)+0.178452*x(4)+0.009664*x(1)*x(1)+0.009664*x(2)*x(2)+0.001284*x(3)*x(3)-0.002713*x(4)*x(4)-0.012422*x(1)*x(2)-0.023157*x(1)*x(3)-0.036011*x(1)*x(4)+0.024744*x(2)*x(3)-0.020623*x(2)*x(4)-0.002149*x(3)*x(4)-1.5≤0
-(0.6730551+0.301146*x(1)-0.078675*x(2)+0.011658*x(3)+0.178452*x(4)+0.009664*x(1)*x(1)+0.009664*x(2)*x(2)+0.001284*x(3)*x(3)-0.002713*x(4)*x(4)-0.012422*x(1)*x(2)-0.023157*x(1)*x(3)-0.036011*x(1)*x(4)+0.024744*x(2)*x(3)-0.020623*x(2)*x(4)-0.002149*x(3)*x(4)) ≤0
-(51.8277931+6.142814*x(1)+1.235285*x(2)-1.799889*x(3)+4.118358*x(4)-0.434893*x(1)*x(1)-0.434893*x(2)*x(2)+0.033447*x(3)*x(3)+0.076468*x(4)*x(4)-0.201259*x(1)*x(2)-0.652022*x(1)*x(3)+0.820377*x(1)*x(4)+1.839250*x(2)*x(3)-1.451273*x(2)*x(4)-0.023900*x(3)*x(4))+95≤0
51.8277931+6.142814*x(1)+1.235285*x(2)-1.799889*x(3)+4.118358*x(4)-0.434893*x(1)*x(1)-0.434893*x(2)*x(2)+0.033447*x(3)*x(3)+0.076468*x(4)*x(4)-0.201259*x(1)*x(2)-0.652022*x(1)*x(3)+0.820377*x(1)*x(4)+1.839250*x(2)*x(3)-1.451273*x(2)*x(4)-0.023900*x(3)*x(4)-100≤0

我的程序如下:
m文件
function [c,ceq]=mycon(x)
c=[-(6.9402131+0.252469*x(1)-0.276517*x(2)+0.207394*x(3)+0.314560*x(4)+0.039335*x(1)*x(1)+0.039335*x(2)*x(2)-0.003563*x(3)*x(3)-0.006647*x(4)*x(4)-0.006296*x(1)*x(2)-0.034093*x(1)*x(3)-0.059668*x(1)*x(4)+0.010462*x(2)*x(3)+0.005134*x(2)*x(4)-0.008807*x(3)*x(4))+8.62;
    6.9402131+0.252469*x(1)-0.276517*x(2)+0.207394*x(3)+0.314560*x(4)+0.039335*x(1)*x(1)+0.039335*x(2)*x(2)-0.003563*x(3)*x(3)-0.006647*x(4)*x(4)-0.006296*x(1)*x(2)-0.034093*x(1)*x(3)-0.059668*x(1)*x(4)+0.010462*x(2)*x(3)+0.005134*x(2)*x(4)-0.008807*x(3)*x(4)-9.17;
    0.6730551+0.301146*x(1)-0.078675*x(2)+0.011658*x(3)+0.178452*x(4)+0.009664*x(1)*x(1)+0.009664*x(2)*x(2)+0.001284*x(3)*x(3)-0.002713*x(4)*x(4)-0.012422*x(1)*x(2)-0.023157*x(1)*x(3)-0.036011*x(1)*x(4)+0.024744*x(2)*x(3)-0.020623*x(2)*x(4)-0.002149*x(3)*x(4)-1.5;
    -(0.6730551+0.301146*x(1)-0.078675*x(2)+0.011658*x(3)+0.178452*x(4)+0.009664*x(1)*x(1)+0.009664*x(2)*x(2)+0.001284*x(3)*x(3)-0.002713*x(4)*x(4)-0.012422*x(1)*x(2)-0.023157*x(1)*x(3)-0.036011*x(1)*x(4)+0.024744*x(2)*x(3)-0.020623*x(2)*x(4)-0.002149*x(3)*x(4));
    -(51.8277931+6.142814*x(1)+1.235285*x(2)-1.799889*x(3)+4.118358*x(4)-0.434893*x(1)*x(1)-0.434893*x(2)*x(2)+0.033447*x(3)*x(3)+0.076468*x(4)*x(4)-0.201259*x(1)*x(2)-0.652022*x(1)*x(3)+0.820377*x(1)*x(4)+1.839250*x(2)*x(3)-1.451273*x(2)*x(4)-0.023900*x(3)*x(4))+95;
    51.8277931+6.142814*x(1)+1.235285*x(2)-1.799889*x(3)+4.118358*x(4)-0.434893*x(1)*x(1)-0.434893*x(2)*x(2)+0.033447*x(3)*x(3)+0.076468*x(4)*x(4)-0.201259*x(1)*x(2)-0.652022*x(1)*x(3)+0.820377*x(1)*x(4)+1.839250*x(2)*x(3)-1.451273*x(2)*x(4)-0.023900*x(3)*x(4)-100];
ceq=[];

主程序:
>> fun='x(1)*0+x(2)*10+10+x(3)*10+30+x(4)*0';
>> x0=[1 1 1 1];
>> A=[];
>> b=[];
>> Aeq=[];
>> beq=[];
>> lb=[1 1 1 1];
>> ub=[4 4 4 4];
>> [x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon)


运行结果:
Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
> In fmincon at 260
Maximum number of function evaluations exceeded;
increase OPTIONS.MaxFunEvals.

x =

    4.2343    3.1404    4.3459    4.3459


fval =

  114.8638


exitflag =

     0


output =

       iterations: 66
        funcCount: 401
         stepsize: 1
        algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
    firstorderopt: 10.0000
     cgiterations: []
          message: [1x79 char]


lambda =

         lower: [4x1 double]
         upper: [4x1 double]
         eqlin: [0x1 double]
      eqnonlin: [0x1 double]
       ineqlin: [0x1 double]
    ineqnonlin: [6x1 double]


grad =

         0
   10.0000
   10.0000
         0


hessian =

    0.5552    0.1233    0.0784   -0.4841
    0.1233    0.0670    0.0061   -0.1023
    0.0784    0.0061    0.0198   -0.0586
   -0.4841   -0.1023   -0.0586    0.4462

请问是什么原因出错了?谢谢
回复此楼

» 猜你喜欢

沉默坚守
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jlzeng

木虫 (正式写手)

那是不是要换其他函数啊?
用哪个比较好呢?
沉默坚守
3楼2008-03-31 10:06:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

cuihang

铁杆木虫 (正式写手)

VASPer

★ ★
spur(金币+2,VIP+0):感谢参与!
提示说你选用的算法规模太大不适合这个问题,建议换成较小的线性搜索
只是个警告,其实不必理会它

[ Last edited by cuihang on 2008-3-31 at 10:05 ]
聪明人知道自己是傻子,傻子以为自己是聪明人
2楼2008-03-31 10:04:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

y1ding

铁杆木虫 (著名写手)

★ ★ ★
spur(金币+3,VIP+0):感谢应助!欢迎常来!!
Maximum number of function evaluations exceeded;
increase OPTIONS.MaxFunEvals.
___________________________
看英文,加大OPTIONS.MaxFunEvals

Warning: Large-scale (trust region) method does not currently solve this type of problem,
switching to medium-scale (line search).
提示说你选用的算法规模太大不适合这个问题,已经自动换成较小的线性搜索

exitflag =

     0
这个是不成功的意思
4楼2008-03-31 11:04:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

y1ding

铁杆木虫 (著名写手)


lei0736(金币+1,VIP+0):谢谢
多看help
英文说明已经很明确了
5楼2008-03-31 11:04:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见