如何用matlab实现整型变量的最优化问题

如题,碰到一个基于整型变量的最优化问题,有几个变量只能取整数值,但是我不知道该怎么设置,请大家帮帮忙?

代码如下:

function f = objfun(x)
% Objective function

f = (2000*x(1) + 6*x(1)*(1000+(x(2)-850)*2)) + (1000*x(3)+6*x(3)*(2600+(x(4)-1250)*1.3)) + (500*x(5)+6*x(5)*(3000+(x(6)-1500)*3));

function [c, ceq] = confun(x)

% Nonlinear inequality constraints:

c = [15000 - 6*(x(1)*x(2) - x(3)*x(4) - x(5)*x(6))];

% No nonlinear equality constraints:
ceq = [6*(x(1)*x(2) + x(3)*x(4) + x(5)*x(6)) - 15000*(1 + 0.15)];

主函数main.m如下:

x0 = [0 1 1 0 1 1];
options = optimset('LargeScale','off','Display','iter');

lb = [0 850 0 1250 0 1500];% low boundary
ub = [12 2000 10 1750 5 4000];%up boundary

[x,fval,exitflag,output] = fmincon(@objfun,x0,[],[],[],[],lb,ub,@confun,options);
disp('The solution is'); disp(x)
disp('The Result is'); disp(fval)

===========================================

结果为:

The solution is
1.0e+003 *

0.0034 0.8500 0.0000 1.2516 -0.0000 1.5000

The Result is
2.7059e+004

但是变量x(1),x(3)与x(5)在约束范围内只能取整数值,该怎么设?

谢谢大家!

如果可均分断续的话,可取步长为整;连续的话,你可以随机取整命令
温馨提示:答案为网友推荐,仅供参考