【整数规划】

整数规划的定义

数学规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。

求解整数线性规划的方法

分枝定界法——可求纯或混合整数线性规划。

割平面法——可求纯或混合整数线性规划。

隐枚举法——求解“0-1”整数规划

  1. 过滤隐枚举法。
  2. 分支隐枚举法。

匈牙利法——解决指派问题(0-1规划特殊情形)

蒙特卡罗法——求解各种类型规划。

使用matlab

clc,clear
x=unifrnd(0,12,[1,10000000]);
y=unifrnd(0,9,[1,10000000]);
pinshu=sum(y<x.^2&x<=3)+sum(y<12-x&x>=3);
area_appr=12*9*pinshu/10^7

function[f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)^2-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5);
g=[sum(x)-400
    x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
    2*x(1)+x(2)+6*x(3)-200
    x(3)+x(4)+5*x(5)-200];
rand('state',sum(clock))%初始化随机数发生器
p0=0;
tic%计时开始
for i=1:10^6
    x=randi([0,99],1,5);
    [f,g]=mengte(x);
    if all(g<=0)
        if p0<f
            x0=x;p0=f;%记录当前较好的解
        end
    end
end
x0,p0
toc

在这里插入图片描述
在这里插入图片描述

使用lingo

局部最优解

书上说可以直接求出精确的全局最优解,但是当我敲入代码运行出来的结果是局部最优解,还对其行和列进行改变,发现还是局部最优解,而不是全局最优解。

在这里插入图片描述
在这里插入图片描述

全局最优解

lingo->options->Global Solver
勾上Use Global Options,应用
在这里插入图片描述

2.4整数线性规划的计算机求解

混合整数线性规划问题的求解

在这里插入图片描述
在这里插入图片描述

clc,clear
c=[3 8 2 10 3
    8 7 2 9 7 
    6 4 2 7 5
    8 4 2 3 5 
    9 10 6 9 10];%指派矩阵
c=c(:);%把这个指派矩阵变成一维决策变量
a=zeros(10,25);%10行25列的零矩阵,因为决策矩阵是5*5的,然后c=c(:);%把这个指派矩阵变成一维决策变量,变成了25行的列向量。
intcon=1:25;
for i=1:5
    a(i,(i-1)*5+1:5*i)=1;
    a(5+i,i:5:25)=1;
end
b=ones(10,1);
lb=zeros(25,1);
ub=ones(25,1);
x=intlinprog(c,intcon,[],[],a,b,lb,ub);
x=reshape(x,[5,5])

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是数学系的小孩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值