数学建模第二章整数规划

整数规划

变量限制为整数
方法:分枝定界(纯和混合)
割平面(同上)
隐枚举法(0-1)
匈牙利
蒙特卡洛

0-1型整数

0或1,二进制

相互排斥约束条件

m个相互排斥的约束条件,
ai1x1+…+ainxn<=bi. I=1,2,3,4,5…m
引入m个0,1变量 yi=1(当i起作用)
充分大的M
ai1x1+…+ainxn<=bi+(1-yi)*M i=1,2,3。。。m
y1+。。。+ym=1

固定费用

有固定成本kj和变动成本cj
min z=sigma kjyj+cjxj
yje<=xj<=yjM(e为充分小的数,M为充分大的数)

指派问题

n人n项工作,第i人做第j项工作要cij单位时间,如何分配时间最少
xij=1(I做j)/0(I不做j)
min sigma cij*xij

蒙特卡洛(随机取样法)

matlab相关知识:
unifrnd关于这个函数的使用
rand关于这个函数
state和seed关于rand的state和seed
randi相关介绍
eg:求y=x^2 和y=12-x围成的曲面三角形的近似面积大小
在[0,9]x[0,12]的矩形区域取10^7个点,求落在三角形面积的频数,三角形面积为频率乘矩形面积

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

eg:0~99中取一个数
用10^ 6个点来估算
蒙特卡洛算法

%%%蒙特卡洛法
%%定义目标函数和约束向量函数
function [f, g] = mengte(x);
f = x(1) ^ 2 + x(2) ^ 2 + 3 * x(3) ^ 2 + 4 * x(4) ^ 2 + 2 * x(5) - 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
* x(1) + x(2) + 6 * x(3) - 200
    x(3) + x(4) + 5 * x(5) - 200];
end

%%%通过迭代求解
rand('state', sum(clock)); %初始化随机数发生器
p0 = 0;%p0代表目标值z,x0代表目标x
tic%计时开始
for i = 1 : 10 ^ 6  %采集10^6个点
    x = randi([0,99],1,5);%0<= x <= 99(整数)
[f, g] = mengte(x);
if all(g <= 0)%若满足4个则符合条件
    if p0 < f
        x0 = x;
        p0 = f;
    end
end
end
x0, p0
toc

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

使用matlab必须把所有决策变化量变为一维决策变化量
基本格式:
[x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub);

模型:st. x(intcon)为整数
Ax<=b
Aeq
x=beq
lb<=x<=ub

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值