楼主: lidi1989
4077 3

[问答] 如何用matlab处理非线性优化问题?救急 [推广有奖]

  • 0关注
  • 0粉丝

初中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
166 点
帖子
15
精华
0
在线时间
11 小时
注册时间
2011-5-9
最后登录
2011-5-17

楼主
lidi1989 发表于 2011-5-12 21:23:00 |AI写论文
7论坛币
接我昨天写的那个帖子,我先附件上非线性优化的问题,见附件1。问题就是用matlab实现SQP优化算出转移概率矩阵的每个元素。这个非线性优化问题每个变量的含义我在我上个帖子上说明了,见链接https://bbs.pinggu.org/thread-1096366-1-1.html地址。
          我今天专门找我师兄请教了一个上午,他写了一个算法,能求出结果,但是结果不满意,我想请大家参考一下该如何修改代码使结果满意。
          代码如下:
         
  1. function f=ld(x)
  2. A=[1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 32
  3. 15 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 10 1 0 0 0 0 2 5
  4. 17 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 1 0 0 1 9 0 0 0 0 0 0 0
  5. 1 1 0 0 0 0 1 13 1 0 0 0 0 2 8 2 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  6. 12 0 0 1 0 0 0 0 0 0 0 0 0 0 7 2 0 0 0 0 2 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  7. 15 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 18 0 0 0 0 0 0 0
  8. 11 1 0 1 0 0 0 3 1 0 0 0 0 0 4 2 0 0 1 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  9. 1 0 1 0 0 0 0 0 0 0 0 0 1 0 3 2 0 0 0 0 3 20 1 0 0 0 0 1 2 0 0 0 0 0 0 0
  10. 1 0 0 0 1 0 0 0 0 0 0 0 0 0 4 1 0 0 0 0 0 2 1 0 1 0 0 0 24 0 0 0 0 0 0 0
  11. 3 0 0 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 1 25 0 0 0 0 0 1 0 0 0 0 0 0 0 0
  12. 1 0 0 1 0 0 0 1 1 1 0 0 0 0 2 1 0 0 1 1 0 10 3 0 0 0 0 3 9 0 0 0 0 0 0 0
  13. 5 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 5 2 0 1 1 0 1 16 0 0 0 0 0 0 0
  14. 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 16 3 1 0 0 0 2 9
  15. 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 7 3 0 1 0 0 2 18 0 0 0 0 1 0 0
  16. 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 1 1 1 0 0 0 7 0 0 0 0 1 0 0
  17. 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 1 1 0 0 1 22
  18. ];

  19. for j=1:16
  20. for i=1:36
  21. B(j,i)=x(i)*A(j,i);
  22. end
  23. end

  24. f=sum(B(:));
  25. f=-f;





  26. Aeq=[ones(1,6) zeros(1,30)
  27. zeros(1,6) ones(1,6) zeros(1,24)
  28. zeros(1,12) ones(1,6) zeros(1,18)
  29. zeros(1,18) ones(1,6) zeros(1,12)
  30. zeros(1,24) ones(1,6) zeros(1,6)
  31. zeros(1,30) ones(1,6)];
  32. beq=[1
  33. 1
  34. 1
  35. 1
  36. 1
  37. 1];
  38. x0=[0.999999999994889 0.000000000001012 0.000000000001003 0.000000000001022 0.000000000001052 0.000000000001022 0.000000000008805 0.999999999883916 0.000000000080863 0.000000000008805 0.000000000008805 0.000000000008805 0.000000000001417 0.000000000001502 0.999999999990798 0.000000000003448 0.000000000001417 0.000000000001417 0.00000000000095 0.000000000000942 0.000000000001011 0.999999999995115 0.00000000000104 0.000000000000942 0.000000000000833 0.000000000000797 0.000000000000797 0.000000000000846 0.999999999995906 0.000000000000821 0.000000000001329 0.000000000001295 0.000000000001278 0.000000000001312 0.000000000001365 0.999999999993421
  39. ];
  40. lb=zeros(1,36);
  41. options = optimset('LargeScale','off')
  42. [x(1,:),fval]=fmincon(@ld,x0,[],[],Aeq,beq,lb,[],[],options)
复制代码


      x0即为最终所求的转移概率矩阵,但是结果不好,   有6个元素过分接近1,其他的元素全都非常小,不符合我论文选取的数据实际情况,想请大家看看代码该如何修改。

    另外我参考股票估价的马尔科夫链模型的方法求出了该转移概率矩阵的一个近似结果,结果不一定好,但是用SQP优化得到最优解应该和我这种方法求出的矩阵差别不大,我想要的是这种结果。
      
  1. 完美结果
  2. π=[0.8706 0.0172 0.0086 0.0259 0.0517 0.0517
  3. 0.04 0.72 0.16 0.04 0.04 0.04
  4. 0.0208 0.0417 0.6667 0.2292 0.0208 0.0208
  5. 0.0149 0.0075 0.0672 0.8134 0.0896 0.0075
  6. 0.0449 0.0064 0.0064 0.0577 0.859 0.0321
  7. 0.0379 0.0126 0.001 0.0253 0.0632 0.86]
复制代码

           上面这个矩阵就是我用另外一种学术水平低的方法求出的,即非常简单的古典概率方法,我想,这个结果即使不是最好的,但一定是对的,优化的矩阵结果应该和这个差不多才对,而不是上面那段代码求出的瑕疵结果。
            由于论文需要我还是想用SQP方法求出矩阵,我的论坛币不多,我已经拿出了所有的论坛币表示一下诚意及对思考我这个问题的各位专家表示万分感谢!!!!

1.jpg (16.41 KB)

1.jpg

关键词:MATLAB 非线性优化 matla atlab 非线性 MATLAB 非线性 救急

沙发
lidi1989 发表于 2011-5-12 21:28:39
我再补充一下我的变量取值:
         N=16,        K=6.
          解答的专家请注意一下约束条件,很容易弄错!!!!

藤椅
lidi1989 发表于 2011-5-12 21:33:47
他开始用B(j,i)=x(i)^A(j,i)处理结果得出6个几乎为1的数,其他的含有负数项。
   他思考后决定将该非线性的函数表达式变形为B(j,i)=x(i)*A(j,i);虽然结果都是正的了但是绝大多数项都是不显著的,这和实际不符,想请教大家有什么好的想法!!

板凳
lidi1989 发表于 2011-5-12 21:41:41
代码中的A矩阵即为由实际数据处理得到的Si,j(n)矩阵

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-24 18:15