function [g,d] = ui_gen(varargin)
% UI_GEN - User interface
%
tp=[];
cdvs=cdv;
ddvs=ddv;
c_index=1;lc_index=1;
d_index=1;ld_index=1;
cdv_list=cdv;
ddv_list=ddv;
if ~isempty(varargin);
cdvs=get(varargin{1}(varargin{2}),'cdvs');
ddvs=get(varargin{1}(varargin{2}),'ddvs');
fig_name=sprintf('Design variables in chromosome: %s\n',...
get(varargin{1}(varargin{2}),'name'));
for k=1:length(varargin{1});
cdvs_tmp=get(varargin{1}(k),'cdvs');
ddvs_tmp=get(varargin{1}(k),'ddvs');
if ~isempty(cdvs_tmp)
for l=1:length(cdvs_tmp)
cdv_list(lc_index)=cdvs_tmp(l);
lc_index=lc_index+1;
end
end
if ~isempty(ddvs_tmp)
for l=1:length(cdvs_tmp)
ddv_list(ld_index)=ddvs_tmp(l);
ld_index=ld_index+1;
end
end
end
if ~and(isempty(cdvs),isempty(ddvs))
figure;
axis off;
set(gcf,'numbertitle','off');
set(gcf,'name',fig_name);
[c_index d_index tp]=redraw(cdvs,ddvs,tp);
end
end
while 1
sel=selector;
switch sel
case 'c'
cdv_tmp=cdv_in(cdvs,ddvs,cdv_list,ddv_list);
if ~isempty(cdv_tmp)
cdvs(c_index)=cdv_tmp(1);
tp=txt_cdv(cdvs(c_index),tp,1);
if and(c_index==1,~isempty(varargin))
set(gcf,'numbertitle','off');
set(gcf,'name',fig_name);
end
c_index=c_index+1;
end
case 'd'
ddv_tmp=ddv_in(cdvs,ddvs,cdv_list,ddv_list);
if ~isempty(ddv_tmp)
ddvs(d_index)=ddv_tmp;
tp=txt_ddv(ddvs(d_index),tp,1);
if and(d_index==1,~isempty(varargin))
set(gcf,'numbertitle','off');
set(gcf,'name',fig_name);
end
d_index=d_index+1;
end
case 'k'
name_del=input('Input the name of the variable to delete: ','s')
ind_delete_c=find(cdvs,name_del);
ind_delete_d=find(ddvs,name_del);
if ind_delete_c
cdvs=del_gen(cdvs,ind_delete_c);
[c_index d_index tp]=redraw(cdvs,ddvs,tp);
elseif ind_delete_d
ddvs=del_gen(ddvs,ind_delete_d);
[c_index d_index tp]=redraw(cdvs,ddvs,tp);
else
disp('Name does not exist')
input('Press return to continue')
end
case 're'
[c_index d_index tp]=redraw(cdvs,ddvs,tp);
case 'ke'
keyboard
case 'e'
name_mod=input('Name of variable to modify: ','s');
cdv_edit=find(cdvs,name_mod);
tp_ind=find_tp(tp,name_mod);
ddv_edit=find(ddvs,name_mod);
if cdv_edit
fig=get(get(tp(tp_ind),'Parent'),'Parent');
delete(tp(tp_ind));
clc;
cdvs(cdv_edit)=set(cdvs(cdv_edit),'name','');
cdvs(cdv_edit)=cdv_in(cdvs,ddvs,cdv_list,ddv_list);
txt=sprintf('name: %s\nlimits:[%d %d]\nBits: %d', ...
get(cdvs(cdv_edit),'name'), get(cdvs(cdv_edit), ...
'l_limit'), ...
get(cdvs(cdv_edit),'u_limit'), get(cdvs(cdv_edit),'bits'));
figure(fig);
tp(tp_ind)=place_txt(tp_ind,txt);
set(tp(tp_ind),'Tag',get(cdvs(cdv_edit),'name'));
elseif ddv_edit
fig=get(get(tp(tp_ind),'Parent'),'Parent');
delete(tp(tp_ind));
clc;
ddvs(ddv_edit)=set(ddvs(ddv_edit),'name','');
ddvs(ddv_edit)=ddv_in(cdvs,ddvs);
txt=sprintf('name: %s\nPossible values:\n%s', ...
get(ddvs(ddv_edit),'name'), ...
num2str(get(ddvs(ddv_edit),'p_val')));
figure(fig);
tp(tp_ind)=place_txt(tp_ind,txt);
set(tp(tp_ind),'Tag',get(ddvs(ddv_edit),'name'));
else
disp('Name does not exist')
input('Press return to continue')
end
case 'q'
fp=0;
if ~isempty(tp)
for k=1:length(tp)
fp(k)=get(get(tp(k),'parent'),'parent');
end
close(fp)
end
break
end
end
g=cdvs;
d=ddvs;
%==============END MAIN LOOP=================================
function tp = txt_cdv(cdv,tp,close)
if close
if ~mod(length(tp),30)
fp=figure;
set(fp,'Menubar','none')
set(fp,'numbertitle','off')
set(fp,'Name','Design variables')
axis off;
end
else
figure(gcf)
end
figure(gcf);
for k=1:length(cdv)
index=mod(length(tp),30)+1;
txt=sprintf('name: %s\nlimits:[%d %d]\nBits: %d',get(cdv(k),'name'), ...
get(cdv(k),'l_limit'),get(cdv(k),'u_limit'), ...
get(cdv(k),'bits'));
tp=[tp place_txt(index,txt)];
set(tp(end),'Tag',get(cdv(k),'name'));
end
%=============END FUNCTION===================================
function tp = place_txt(index,txt)
% PLACE_TXT -
%
figure(gcf);
pos_x=[-0.1 0.15 0.4 0.65 0.90 1.15];
pos_y=[0.9 0.75 0.6 0.45 0.3 0.15];
if index<=5
tp=text(pos_x(index),pos_y(1),txt);
elseif and(index>5,index<=10)
tp=text(pos_x(index-5),pos_y(2),txt);
elseif and(index>10,index<=15)
tp=text(pos_x(index-10),pos_y(3),txt);
elseif and(index>15,index<=20)
tp=text(pos_x(index-15),pos_y(4),txt);
elseif and(index>20,index<=25)
tp=text(pos_x(index-20),pos_y(5),txt);
else and(index>25,index<=30)
tp=text(pos_x(index-25),pos_y(6),txt);
end
%=============END FUNCTION===================================
function c = cdv_in(g,d,cdv_list,ddv_list)
% CDV_IN -
%
name=namecheck(g,d);
ind_c=find(cdv_list,name);
ind_d=find(ddv_list,name);
if ind_d
disp('name exist as discrete design');
input('press return to continue')
c=cdv;
return;
end
if ind_c
reuse=input('variable exist reuse: ? (y/n)','s');
if strcmp(reuse,'y')
c=cdv_list(ind_c);
return;
else
c=cdv;
return;
end
end
h_lim=0; l_lim=0; tst=0; bit=0;
while h_lim<=l_lim
if tst
disp('Limits are not correct')
end
l_lim=input('Give low limit:');
h_lim=input('Give high limit:');
tst=1;
end
tst=0;
while bit<=0
if tst
disp('Wrong number of bits')
end
bit=input('give number of bits:');
tst=1;
end
c=cdv(name,l_lim,h_lim,bit);
%=============END FUNCTION===================================
function name = namecheck(g,d)
% NAMECHECK -
%
clc;
name=input('Give Unique name: ','s');
if or(find(g,name),find(d,name))
disp('name already exist in current design');
input('press return to continue');
name=namecheck(g,d);
end
%=============END FUNCTION===================================
function g_out = del_gen(g,ind)
% DEL_GEN -
%
l_gen=length(g);
if and(l_gen==1,ind==1)
if isa(g,'cdv')
g_out=cdv;
else
g_out=ddv;
end
else
if ind==1
g_out=g(2:end);
elseif ind==l_gen
g_out=g(1:end-1);
else
g_out=g(1:ind-1);
g_out=[g_out g(ind+1:end)];
end
end
%=============END FUNCTION===================================
function d = ddv_in(g,d,cdv_list,ddv_list)
% DDV_IN -
%
name=namecheck(g,d);
ind_c=find(cdv_list,name);
ind_d=find(ddv_list,name);
if ind_c
disp('name exist as a cdv');
input('press return to continue')
d=ddv;
return;
end
if ind_d
reuse=input('variable exist reuse y/n: ','s');
if strcmp(reuse,'y')
d=ddv_list(ind_d);
return;
else
d=ddv;
return;
end
end
values=input('Input the possible values:');
if isempty(values)
disp('variable must contain data');
input('press return to continue');
d=ddv_in(g,d);
else
d=ddv(name,values);
end
%=============END FUNCTION===================================
function tp = txt_ddv(ddv,tp,close)
% TXT_CDV -
if close
if isempty(tp)
fp=figure;
set(fp,'Menubar','none')
set(fp,'numbertitle','off')
set(fp,'Name','Design variables')
axis off;
end
if ~mod(length(tp),30)
fp=figure;
set(fp,'Menubar','none')
set(fp,'numbertitle','off')
set(fp,'Name','Design variables')
axis off;
end
else
figure(gcf)
end
for k=1:length(ddv)
index=mod(length(tp),30)+1;
txt=sprintf('name: %s\nPossible values:\n%s',get(ddv(k),'name'), ...
num2str(get(ddv(k),'p_va
没有合适的资源?快使用搜索试试~ 我知道了~
一些Matlab经典遗传算法程序
共66个文件
m:65个
mailme:1个
5星 · 超过95%的资源 需积分: 14 119 下载量 71 浏览量
2010-06-24
10:54:53
上传
评论 6
收藏 139KB ZIP 举报
温馨提示
经典遗传算法经典遗传算法经典遗传算法经典遗传算法经典遗传算法经典遗传算法经典遗传算法经典遗传算法经典遗传算法
资源推荐
资源详情
资源评论
收起资源包目录
一些用matlab编写的经典遗传算法算例.zip (66个子文件)
一些用matlab编写的经典遗传算法算例
Mga
probmut.m 2KB
@chrom
print.m 3KB
pmga.m 228B
set.m 1KB
std.m 583B
ge.m 151B
report.m 6KB
max.m 670B
median.m 372B
replace.m 783B
mean.m 380B
lt.m 136B
init.m 558B
export.m 1KB
display.m 470B
sort.m 382B
find.m 319B
tagem.m 227B
import.m 644B
impfit.m 416B
min.m 648B
nmbr_of_members.m 209B
plus.m 625B
chrom.m 1KB
import_values.m 239B
eq.m 131B
get.m 1KB
le.m 147B
plot.m 2KB
gt.m 144B
@ddv
set.m 293B
display.m 284B
ddv.m 1KB
get.m 361B
ui_chrom.m 5KB
mailme 355KB
Contents.m 2KB
save_chrom.m 2KB
mailme.m 273B
mutate.m 1KB
csave.m 2KB
ui_gen.m 9KB
cload.m 3KB
morph.m 2KB
load_mut.m 776B
children.m 829B
load_chrom.m 1KB
@gen
set.m 1KB
private
bin2int.m 102B
init.m 890B
isempty.m 216B
display.m 136B
find.m 300B
ne.m 318B
plus.m 1KB
eq.m 309B
convert.m 325B
get.m 1KB
gen.m 634B
parents.m 7KB
@cdv
set.m 428B
display.m 326B
cdv.m 875B
get.m 419B
logbook.m 636B
ui_mutate.m 2KB
共 66 条
- 1
xufujia
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页