function varargout = yalmip(varargin)
%YALMIP Returns various information about YALMIP
%
% YALMIP can be used to check version numbers and find the SDPVAR and SET
% objects available in workspace
%
% EXAMPLES
% V = YALMIP('version') % Returns version
% YALMIP('nvars') % Returns total number of declared variables
%
% If you want information on how to use YALMIP
% http://yalmip.github.io
%
% See also YALMIPTEST
persistent prefered_solver internal_sdpvarstate internal_setstate
if nargin==0
help yalmip
return
end
if isempty(internal_sdpvarstate)
if exist('OCTAVE_VERSION', 'builtin')
more off
end
internal_sdpvarstate.monomtable = spalloc(0,0,0); % Polynomial powers table
internal_sdpvarstate.hashedmonomtable = []; % Hashed polynomial powers table
internal_sdpvarstate.hash = [];
internal_sdpvarstate.boundlist = [];
internal_sdpvarstate.variabletype = spalloc(0,0,0); % Pre-calc linear/quadratic/polynomial/sigmonial
internal_sdpvarstate.intVariables = []; % ID of integer variables
internal_sdpvarstate.binVariables = []; % ID of binary variables
internal_sdpvarstate.semicontVariables = [];
internal_sdpvarstate.uncVariables = []; % ID of uncertain variables (not used)
internal_sdpvarstate.parVariables = []; % ID of parametric variables (not used)
internal_sdpvarstate.extVariables = []; % ID of extended variables (for max,min,norm,sin, etc)
internal_sdpvarstate.auxVariables = []; % ID of auxilliary variables (introduced when modelling extended variables)
internal_sdpvarstate.auxVariablesW = []; % ID of uncertain auxilliary variables (introduced when modelling uncertain extended variables)
internal_sdpvarstate.logicVariables = []; % ID of extended logic variables (for or, nnz, alldifferent etc)
internal_sdpvarstate.complexpair = [];
internal_sdpvarstate.internalconstraints = [];
internal_sdpvarstate.ExtendedMap = [];
internal_sdpvarstate.ExtendedMapHashes = [];
internal_sdpvarstate.DependencyMap = sparse(0);
internal_sdpvarstate.DependencyMapUser = sparse(0);
internal_sdpvarstate.sosid = 0;
internal_sdpvarstate.sos_index = [];
internal_sdpvarstate.sos_data = [];
internal_sdpvarstate.sos_ParV = [];
internal_sdpvarstate.sos_Q = [];
internal_sdpvarstate.sos_v = [];
internal_sdpvarstate.optSolution{1}.info = 'Initialized by YALMIP';
internal_sdpvarstate.optSolution{1}.variables = [];
internal_sdpvarstate.optSolution{1}.optvar =[];
internal_sdpvarstate.optSolution{1}.values =[];
internal_sdpvarstate.activeSolution = 1;
internal_sdpvarstate.nonCommutingTable = [];
internal_sdpvarstate.nonHermitiannonCommutingTable = [];
internal_sdpvarstate.containsSemivar = false;
try
warning off Octave:possible-matlab-short-circuit-operator
catch
end
end
if isempty(internal_setstate)
internal_setstate.LMIid = 0;
internal_setstate.duals_index = [];
internal_setstate.duals_data = [];
internal_setstate.duals_associated_index = [];
internal_setstate.duals_associated_data = [];
end
switch varargin{1}
case 'clearsolution'
internal_sdpvarstate.optSolution{1}.variables = [];
internal_sdpvarstate.optSolution{1}.optvar =[];
internal_sdpvarstate.optSolution{1}.values =[];
internal_sdpvarstate.activeSolution = 1;
case 'monomtable'
varargout{1} = internal_sdpvarstate.monomtable;
n = size(internal_sdpvarstate.monomtable,1);
if size(internal_sdpvarstate.monomtable,2) < n
% Normalize the monomtalbe. Some external functions presume the
% table is square
varargout{1}(n,n) = 0;
internal_sdpvarstate.monomtable = varargout{1};
need_new = size(internal_sdpvarstate.monomtable,1) - length(internal_sdpvarstate.hash);
internal_sdpvarstate.hash = [internal_sdpvarstate.hash ; 3*gen_rand_hash(size(internal_sdpvarstate.monomtable,1),need_new,1)];
internal_sdpvarstate.hashedmonomtable = internal_sdpvarstate.monomtable*internal_sdpvarstate.hash;
end
if nargout == 2
varargout{2} = internal_sdpvarstate.variabletype;
elseif nargout == 4
varargout{2} = internal_sdpvarstate.variabletype;
varargout{3} = internal_sdpvarstate.hashedmonomtable;
varargout{4} = internal_sdpvarstate.hash;
end
case 'setmonomtable'
% New monom table
internal_sdpvarstate.monomtable = varargin{2};
if nargin>=4
% User has up-dated the hash tables him self.
internal_sdpvarstate.hashedmonomtable=varargin{4};
internal_sdpvarstate.hash = varargin{5};
end
if size(internal_sdpvarstate.monomtable,2)>length(internal_sdpvarstate.hash)
need_new = size(internal_sdpvarstate.monomtable,1) - length(internal_sdpvarstate.hash);
internal_sdpvarstate.hash = [internal_sdpvarstate.hash ; 3*gen_rand_hash(size(internal_sdpvarstate.monomtable,1),need_new,1)];
end
if size(internal_sdpvarstate.monomtable,1)>size(internal_sdpvarstate.hashedmonomtable,1)
% Need to add some hash values
need_new = size(internal_sdpvarstate.monomtable,1) - size(internal_sdpvarstate.hashedmonomtable,1);
temp = internal_sdpvarstate.monomtable(end-need_new+1:end,:);
internal_sdpvarstate.hashedmonomtable = [internal_sdpvarstate.hashedmonomtable;temp*internal_sdpvarstate.hash];
end
if nargin >= 3 && ~isempty(varargin{3})
internal_sdpvarstate.variabletype = varargin{3};
if length(internal_sdpvarstate.variabletype) ~=size(internal_sdpvarstate.monomtable,1)
error('ASSERT')
end
else
internal_sdpvarstate.variabletype = zeros(size(internal_sdpvarstate.monomtable,1),1)';
nonlinear = ~(sum(internal_sdpvarstate.monomtable,2)==1 & sum(internal_sdpvarstate.monomtable~=0,2)==1);
if ~isempty(nonlinear)
%mt = internal_sdpvarstate.monomtable;
internal_sdpvarstate.variabletype(nonlinear) = 3;
quadratic = sum(internal_sdpvarstate.monomtable,2)==2;
internal_sdpvarstate.variabletype(quadratic) = 2;
bilinear = max(internal_sdpvarstate.monomtable,[],2)<=1;
internal_sdpvarstate.variabletype(bilinear & quadratic) = 1;
sigmonial = any(0>internal_sdpvarstate.monomtable,2) | any(internal_sdpvarstate.monomtable-fix(internal_sdpvarstate.monomtable),2);
internal_sdpvarstate.variabletype(sigmonial) = 4;
end
end
case 'variabletype'
varargout{1} = internal_sdpvarstate.variabletype;
case {'addextendedvariable','addEvalVariable'}
varargin{2}
disp('Obsolete use of the terms addextendedvariable and addEvalVariable');
error('Obsolete use of the terms addextendedvariable and addEvalVariable');
case 'defineVectorizedUnitary'
varargin{2} = strrep(varargin{2},'sdpvar/',''); % Clean due to different behaviour of the function mfilename in ML 5,6 and 7
% Is this operator variable already defined
correct_operator = [];
if ~isempty(internal_sdpvarstate.ExtendedMap)
OperatorName = varargin{2};
Arguments = {varargin{3:end}};
this_hash = create_trivial_hash(firstSDPVAR(Arguments));
correct_operator = find([internal_sdpvarstate.ExtendedMapHashes == this_hash]);
if ~isempty(correct_operator)
correct_operator = correct_operator(strcmp(OperatorName,{internal_sdpvarstate.ExtendedMap(correct_operator).fcn}));
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
YALMIP-R20160930.zip (1273个子文件)
findhashsorted.c 2KB
findhash.c 1KB
yalmip.m 54KB
definesolvers.m 54KB
compileinterfacedata.m 49KB
bnb.m 43KB
callmpcvx.m 39KB
sdpsettings.m 31KB
mtimes.m 31KB
solvebilevel.m 28KB
branch_and_bound.m 27KB
cutsdp.m 26KB
decomposeUncertain.m 25KB
sdpvar.m 24KB
dualize.m 24KB
selectsolver.m 23KB
ncvar.m 22KB
compilesos.m 20KB
lmi2sedumistruct.m 20KB
bmibnb.m 20KB
categorizeproblem.m 19KB
yalmiptest.m 17KB
solvesdp.m 16KB
robustify.m 15KB
expandmodel.m 15KB
callmosek.m 14KB
solvesos.m 14KB
gams2yalmip.m 14KB
optimizer.m 13KB
norm.m 12KB
pwa_yalmip.m 12KB
expandrecursive.m 12KB
findapplicablesolvers.m 12KB
mpcvx.m 12KB
eliminatevariables.m 12KB
times.m 11KB
norm.m 11KB
value.m 11KB
subsref.m 11KB
subsasgn.m 11KB
propagate_bounds_from_equalities.m 10KB
sdisplay.m 10KB
solvelower.m 10KB
plot.m 10KB
generate_kernel_representation_data.m 10KB
convert_sigmonial_to_sdpfun.m 9KB
mpt_appendmodel.m 9KB
addExponentialCone.m 9KB
minus.m 9KB
binmodel.m 9KB
subsref.m 9KB
plus.m 9KB
filter_duality.m 8KB
callsdpt34.m 8KB
lmi.m 8KB
callpenbmim.m 8KB
pwq_yalmip.m 8KB
calllindo_nlp.m 8KB
calllindo_geo.m 8KB
check.m 8KB
kkt.m 8KB
saveampl.m 7KB
sdisplay2.m 7KB
yalmip2geometric.m 7KB
subsasgn.m 7KB
filter_enumeration.m 7KB
export.m 7KB
pwf.m 7KB
matrixcoefficients.m 7KB
monolist.m 7KB
coefficients.m 7KB
yalmip2nonlinearsolver.m 7KB
display.m 7KB
derivedualBounds.m 7KB
is.m 7KB
is.m 7KB
callmaxdet.m 6KB
callscipnl.m 6KB
setupBMIBNB.m 6KB
minus.m 6KB
call_cplexibm_miqp.m 6KB
convertquadratics.m 6KB
bnb_solvelower.m 6KB
convert_polynomial_to_quadratic.m 6KB
display.m 6KB
propagatequadratics.m 6KB
setup_fmincon_params.m 6KB
callgurobimex.m 6KB
callpenbmi.m 6KB
solvemp.m 6KB
callsqplab.m 6KB
rounder.m 6KB
callsnoptgp.m 6KB
callfmincongp.m 6KB
consistent.m 6KB
apply_recursive_differentiation.m 6KB
mpt_enumerate_binary.m 6KB
mtimes.m 6KB
callipoptgp.m 5KB
is.m 5KB
共 1273 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
FL1623863129
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 以下是一些适用于英语六级作文的万能句型模板,涵盖了引言、正文和结论部分的各类表达方式.docx
- MATLAB中的非线性规划
- 进行C语言面试资格确认是招聘过程中一个重要的步骤,目的是确保候选人具备足够的C语言编程能力和知识.docx
- Java 轻量级的集群负载均衡设计
- 纹身师个人网站模板.jpg
- 在C语言中,连接两个字符串(即将一个字符串附加到另一个字符串的末尾)通常可以使用标准库中的 `strcat` 函数.docx
- 数据库管理工具:dbeaver-ce-23.1.1-stable.x86-64.rpm
- 以下是几个具体竞赛题目的详细解答,包括建模思路、方法和步骤 .docx
- 一份关于全国大学生建模大赛的相关教程!!
- 以下是关于计算机网络和现代通信组网的详细教程、案例和相关项目的推荐.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功