《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 87|回复: 7
收起左侧

[提问] 求教,量子遗传学求解最小值问题!谢谢

[复制链接]
发表于 2018-10-5 09:51:34 | 显示全部楼层 |阅读模式
本帖最后由 hengxiaoyang 于 2018-10-5 15:54 编辑

请问各位同学:
       在课本第8章,给出的解释是:在用量子遗传学求解最大值时,不用加负号,在求解最小值时,需要加负号。
请问如果该案例求解的是最小值,具体在程序中哪地方加负号啊?在求解适应度函数和待优化目标函数中都要加负号么?还是只在%% 计算适应度-函数值Y=sin(4*pi*X(1))*X(1)+sin(20*pi*X(2))*X(2);上面加负号呢?O(∩_∩)O谢谢

  function [fitness,X]=FitnessFunction(binary,lenchrom)
%% 适应度函数
% 输入  binary:二进制编码
%     lenchrom:各变量的二进制位数
% 输出 fitness:适应度
%            X:十进制数(待优化参数)
sizepop=size(binary,1);
fitness=zeros(1,sizepop);
num=size(lenchrom,2);
X=zeros(sizepop,num);
for i=1:sizepop
    [fitness(i),X(i,:)]=Objfunction(binary(i,:),lenchrom);         % 使用目标函数计算适应度
end

function [Y,X]=Objfunction(x,lenchrom)
%% 目标函数
% 输入     x:二进制编码
%   lenchrom:各变量的二进制位数
% 输出     Y:目标值
%          X:十进制数
bound=[-3.0 12.1;4.1 5.8];   % 函数自变量的范围
%% 将binary数组转化成十进制数组
X=bin2decFun(x,lenchrom,bound);
%% 计算适应度-函数值
Y=sin(4*pi*X(1))*X(1)+sin(20*pi*X(2))*X(2);



发表于 2018-10-6 01:06:03 | 显示全部楼层
hengxiaoyang 发表于 2018-10-5 21:01
MATLAB智能算法30个案例分析(第2版)的84页说的是,求解最大值不用加负号,求解最小值需要加负号.难道课 ...

也不是绝对的,看你的判断条件是什么,如果接受条件为第二次比第一次小,就是最小值问题(一般就是这种情况)。负号一般只给目标函数加负号。比如,求f(x)=x^2(0<=x<=10)的最大值,则需要转化为求f(x)=-x^2的最小值。
回复 支持 1 反对 0

使用道具 举报

发表于 2018-10-5 12:39:06 | 显示全部楼层
求解最小值并不需要加负号,最大值才需要。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 15:51:08 | 显示全部楼层
安东尼先生 发表于 2018-10-5 12:39
求解最小值并不需要加负号,最大值才需要。

请问到底是求解最大值需要加负号还是求解最小值才需要加负号?第8章案例,给出的解释是求解最大值不需要加负号,求解最小值需要加负号。
还有一个问题,请问如果加负号具体加到程序的哪个位置?O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 16:19:40 | 显示全部楼层
安东尼先生 发表于 2018-10-5 12:39
求解最小值并不需要加负号,最大值才需要。

请问您有没有用量子遗传学求解最小值问题的例子?,我学习一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 21:01:32 | 显示全部楼层
大米米 发表于 2018-10-5 16:27
求解最小值并不需要加负号,最大值才需要。

MATLAB智能算法30个案例分析(第2版)的84页说的是,求解最大值不用加负号,求解最小值需要加负号.难道课本写错了么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-6 10:46:00 | 显示全部楼层
安东尼先生 发表于 2018-10-6 01:06
也不是绝对的,看你的判断条件是什么,如果接受条件为第二次比第一次小,就是最小值问题(一般就是这种情 ...

O(∩_∩)O谢谢!请问能不能给个您的QQ号或者QQ交流群,论坛上给出的QQ群,都加不上了~O(∩_∩)O谢谢
回复 支持 反对

使用道具 举报

发表于 2018-10-6 12:56:19 | 显示全部楼层
hengxiaoyang 发表于 2018-10-6 10:46
O(∩_∩)O谢谢!请问能不能给个您的QQ号或者QQ交流群,论坛上给出的QQ群,都加不上了~O(∩_∩)O谢谢

1105936347
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号 

GMT+8, 2018-10-18 13:01 , Processed in 0.080542 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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