matlab 决策,MATLAB|0-1规划决策

问题描述

此问题源于道路养护决策,采用数学的0-1规划,决策需要养护的路段。其数学描述如下:

cd0acf6bde802ad150d9a9afbbb1fd2b.png

problem.png-401kB

目标函数:

obj = 1486 X3 + 495 X5 + 260 X6 + 2760 X8 + 120 X9 + 120 X10 + 2070 X11 + 2070 X12 + 90 X15 + 750

约束s.t.:

X3 + X5 + X6 + X8 + X11 + X12 >= 3

X3 + X8 + X11 + X12 >= 3

X8 + X9 + X10 + X11 >= 3

数据规范化

为了便于程序求解,将以上表达式的系数规范化为矩阵:

750 3 3 3

0 0 0 0

0 0 0 0

1486 1 1 0

0 0 0 0

495 1 0 0

2760 1 0 0

0 0 0 0

2760 1 1 1

120 0 0 1

120 1 0 1

2070 1 1 1

2070 1 1 0

0 0 0 0

0 0 0 0

90 0 0 0

MATLAB求解

采用整数线性规划函数intlinprog。

程序代码:

% 道路养护决策,0-1规划

%% 数据输入

clc,clear

% 标准化输入数据,由Excel导入

data = [

750 3 3 3

0 0 0 0

0 0 0 0

1486 1 1 0

0 0 0 0

495 1 0 0

2760 1 0 0

0 0 0 0

2760 1 1 1

120 0 0 1

120 1 0 1

2070 1 1 1

2070 1 1 0

0 0 0 0

0 0 0 0

90 0 0 0

];

const = data(1,:);

data(1,:) = [];

%% 优化参数定义

n = size(data,1); % 规划变量个数

f = data(:,1)'; % 目标函数系数

f_const = const(1); % 目标函数常数项

intcon = 1:n; % 所有系数均为整数

lb = zeros(1,n); % lower bound 为0

ub = ones(1,n); % upper bound 为1,即构造0-1 规划

A = -data(:,2:end)'; % 不等式约束方程系数

b = -const(:,2:end)'; % y约束方程右端b

Aeq = []; % 等式约束系数,为空

beq = [];

%% 优化求解

x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub); % 求解,注意优化问题定义最小值,-f

obj = sum(x.*f') + f_const; % 计算目标函数

clc

disp('x = ') % 结果显示

disp(x)

disp('obj =')

disp(obj)

y运算结果:

x =

0

0

1

0

0

0

0

0

1

1

1

1

0

0

0

obj =

6616

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值