查看: 772|回复: 24|关注: 0
打印 上一主题 下一主题

陕西十一选五投注: [已解决] 求解带约束的非线性优化时遇到问题

[复制链接]

新手

8 麦片

财富积分


陕西十一选五计划 www.3vdvp.cn 050


2

主题

16

帖子

0

最佳答案
跳转到指定楼层
1#
本帖最后由 hexiaohua 于 2018-12-20 07:12 编辑

我在求解一个非线性优化问题,运行后的结果出现了问题。
优化问题如下:
求 关于e1和e2的函数 (e2/2 - 2*e1^2 - 1/16)*(e2/2 - 2*e2^2 - 1/32) 的最大值,约束条件有四个:
(1)  e1 >= 0,
(2)  e2 >= 0,
(3)  e2/2 - 2*e1^2 >= 1/16,
(4)  e2/2 - 2*e2^2 >= 1/32.

很显然通过笔算结果是e1=0,e2=1/8.

但是我利用matlab专门的优化工具yalmip计算后却出现了错误,程序运行的结果为:

solution_e1 =
    0.0020
solution_e2 =
    0.1250

显然e1的结果是错误的,请问是哪里出了问题?求坛里高手赐教,谢谢!
下面是我写的代码:

e1 = sdpvar(1,1);
e2 = sdpvar(1,1);

Constraints = [e1 >= 0, e2 >= 0, e2/2 - 2*e1^2 >= 1/16, e2/2 - 2*e2^2 >= 1/32];
Objective = (e2/2 - 2*e1^2 - 1/16)*(e2/2 - 2*e2^2 - 1/32);

options  = sdpsettings('verbose',0,'solver','fmincon');
output = optimize(Constraints,-Objective,options);

    if output.problem == 0
        % Extract and display value
        solution_e1 = value(e1)
        solution_e2 = value(e2)
    else
        display('something went wrong!');
        output.info;
        yalmiperror(output.problem);
    end

新手

8 麦片

财富积分


050


2

主题

16

帖子

0

最佳答案
2#
 楼主| 发表于 2018-12-20 07:15:26 | 只看该作者
这个优化问题本身很简单,是我正在研究的一个较复杂问题的特殊情况,但是程序运行却出现了错误,想了一天也没找出问题所在。希望高手看看症结所在,谢谢

论坛优秀回答者

权威

3183 麦片

财富积分



2

主题

3478

帖子

714

最佳答案
  • 关注者: 148
3#
发表于 2018-12-20 08:00:48 | 只看该作者
hexiaohua 发表于 2018-12-20 07:15
这个优化问题本身很简单,是我正在研究的一个较复杂问题的特殊情况,但是程序运行却出现了错误,想了一天也 ...

得到准确值,有时是比较困难的。
对于,你的题目,增加迭代次数。
[ 0.0000000086613132666384223986, 0.12503183831766528922]

新手

8 麦片

财富积分


050


2

主题

16

帖子

0

最佳答案
4#
 楼主| 发表于 2018-12-20 08:13:54 | 只看该作者
本帖最后由 hexiaohua 于 2018-12-20 09:07 编辑
maple1314168 发表于 2018-12-20 08:00
得到准确值,有时是比较困难的。
对于,你的题目,增加迭代次数。
[ 0.0000000086613132666384223986, 0. ...

请问怎么增加迭代次数呢?我最近刚学,麻烦贴下代码,谢谢啦!
另外还想请教两个问题:(1) 解我贴的这个问题最好选择哪个solver器进行求解?还是说不需要自己选择由计算机自己决定?(2) 解这种小规模的非线性优化问题最好的策略是什么?yalmip工具箱是我一个朋友推荐的,不知道是不是可靠?

论坛优秀回答者

中级

879 麦片

财富积分


5001500


0

主题

2275

帖子

191

最佳答案
  • 关注者: 125
5#
发表于 2018-12-20 09:39:52 | 只看该作者
1#的问题当e2等于后取决于0.125时,只要e1大概小于1e-5,都可以满足约束(从数值计算精度看),说是多解也可以:
1:
目标函数值(最大): 0
e1: 1.11919490680349E-5
e2: 0.125000000942311

2:
目标函数值(最大): 0
e1: 6.12935852842461E-6
e2: 0.125000001028228

3:
目标函数值(最大): 0
e1: 8.77206345017773E-6
e2: 0.125000000877404

新手

8 麦片

财富积分


050


2

主题

16

帖子

0

最佳答案
6#
 楼主| 发表于 2018-12-20 09:51:08 | 只看该作者
shihe 发表于 2018-12-20 09:39
1#的问题当e2等于后取决于0.125时,只要e1大概小于1e-5,都可以满足约束(从数值计算精度看),说是多解也 ...

谢谢,可以贴下代码么?要是程序运行结果e1<10^-5那还是可以接受的,我目前算的这个差的太离谱了

论坛优秀回答者

中级

879 麦片

财富积分


5001500


0

主题

2275

帖子

191

最佳答案
  • 关注者: 125
7#
发表于 2018-12-20 10:17:32 | 只看该作者
自己用1stOpt计算试试,很简单:

  1. Parameter e1 >= 0, e2 >= 0;
  2. MaxFunction (e2/2 - 2*e1^2 - 1/16)*(e2/2 - 2*e2^2 - 1/32);
  3.   e2/2 - 2*e1^2 >= 1/16;
  4.   e2/2 - 2*e2^2 >= 1/32;
复制代码

新手

8 麦片

财富积分


050


2

主题

16

帖子

0

最佳答案
8#
 楼主| 发表于 2018-12-20 10:36:50 | 只看该作者
本帖最后由 hexiaohua 于 2018-12-20 10:38 编辑
shihe 发表于 2018-12-20 10:17
自己用1stOpt计算试试,很简单:

一楼的问题只是我研究问题的一个特例,我现在想知道的就是如何使用yalmip求解。因为如果稍微复杂一点,maxfuntion应该算不了吧。比如下面这个优化问题:
最大化如下关于e1和e2的最大化问题:
  1. (e1^0.011*e2^(1-0.011)*(8/9) - 2*e1^2 - 2^0.011*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(-1-0.011)*(2^(4+2*0.011)/324))*(e1^0.011*e2^(1-0.011)*(2/9) - 2*e2^2 - 2^(0.011-1)*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(1-0.011)*(2^(2+2*0.011)/324))
复制代码

约束条件为以下四个:
  1. e1 >= 0,

  2. e2 >= 0,

  3. e1^0.011*e2^(1-0.011)*(8/9) - 2*e1^2 >= 2^0.011*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(-1-0.011)*(2^(4+2*0.011)/324),

  4. e1^0.011*e2^(1-0.011)*(2/9) - 2*e2^2 >= 2^(0.011-1)*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(1-0.011)*(2^(2+2*0.011)/324)
复制代码

就必须求数值解了吧。
所以我想知道该怎么用yalmip解决?

新手

8 麦片

财富积分


050


2

主题

16

帖子

0

最佳答案
9#
 楼主| 发表于 2018-12-20 10:43:51 | 只看该作者
shihe 发表于 2018-12-20 10:17
自己用1stOpt计算试试,很简单:

楼上有人说问题是由于迭代次数不够造成的,请问你知道怎么增加迭代次数吗?我最近初学matlab,还不太熟悉。另外解这类小型的非线性优化问题选用哪种solver求解器最好呢?

论坛优秀回答者

中级

879 麦片

财富积分


5001500


0

主题

2275

帖子

191

最佳答案
  • 关注者: 125
10#
发表于 2018-12-20 11:44:45 | 只看该作者
hexiaohua 发表于 2018-12-20 10:36
一楼的问题只是我研究问题的一个特例,我现在想知道的就是如何使用yalmip求解。因为如果稍微复杂一点,max ...

目标函数值(最大): 1.85576177727578E-7
e1: 0.0406768271726109
e2: 0.0600069862224229

约束函数:
1: e1^0.011*e2^(1-0.011)*(8/9) - 2*e1^2-(2^0.011*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(-1-0.011)*(2^(4
+2*0.011)/324)) = 0.0027689057376655
2: e1^0.011*e2^(1-0.011)*(2/9) - 2*e2^2-(2^(0.011-1)*0.011^0.011*(1-0.011)^(1-0.011)*(1+0.011)^(1-0.011)
*(2^(2+2*0.011)/324)) = 6.70214862149984E-5
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 陕西十一选五计划 返回列表
  • 重庆公安局交通管理信息网 2019-03-18
  • “黄金单身汉”英国哈里王子宣布订婚 2019-03-18
  • 图集:2018"一带一路"与澳门发展国际研讨会开幕 2019-03-18
  • “大功三连”指导员王金龙责无旁贷学习先行走在前列 2019-03-18
  • 这就是为什么金融危机发源地的美国,欧债危机重灾区的欧洲各国股市连续7年走牛,屡创历史新高,唯经济最好的中国股市却连续7年熊冠全球的根本原因, 2019-03-17
  • 艺术推手必备基本素养 2019-03-17
  • 【理上网来辉煌十九大】美国学者关注十九大报告:中国将形成新的共识继续推进改革 2019-03-17
  • 居民人均预期寿命又提高了 2019-03-17
  • 一种酵母菌会“投硬币”随机决定基因表达 2019-03-16
  • 乌鲁木齐确定今年实施“十大民生实事” 2019-03-16
  • 男子工作20年买不起房割腕自杀 称压力大扛不住[图] 2019-03-16
  • 第六届北京农业嘉年华--北京频道--人民网 2019-03-15
  • 记者带你逛CES:体验未来科技 2019-03-15
  • 虾仁怎么炒最下饭?答案是宫保-美食资讯 2019-03-14
  • 人人都能享用绿豆汤吗 关于绿豆汤的禁忌你得知道 2019-03-14
  • 293| 396| 630| 649| 458| 459| 991| 663| 385| 398|