整数线性规划实现(lingo,python分枝界定法)

本文章为上篇建模学习打卡第二天的

文章目录

一、本次问题

 二、本题理解

三、问题求解

1.lingo实现

(1)先抛除整数约束条件对问题求解

 (2)加入整数约束条件求解

2.python实现求解

(1)先抛除整数约束条件对问题求解

 (2)加入整数约束条件求解实现   通过 pulp 库求解

 (3)加入整数约束条件求解实现  分枝界定法求解


一、本次问题

 二、本题理解

目标函数:

max = 40x1+90x2

一级约束条件:

9x1+7x2<=56
7x1+20x2<=70
x1,x2 >= 0

二级约束条件:

x1,x2全为整数

三、问题求解

1.lingo实现

lingo编写代码时,每行代码结束后必须以 ‘ ; ’ 结束,否则无法运行。

(1)先抛除整数约束条件对问题求解

基础线性规划实现(matlab,lingo)_菜菜笨小孩的博客-CSDN博客

        lingo代码实现:(l无其他条件下,ingo中默认变量大于等于0)

max = 40*x1+90*x2;
9*x1+7*x2<=56;
7*x1+20*x2<=70;

        结果:最优解 x1=4.80916 , x2 = 1.816794 ; 最优值为355.8779;显然不符合题意

 (2)加入整数约束条件求解

首先,需要引出lingo的变量界定函数 @gin(x) --- 将x限制为整数条件

       ingo代码实现:通过变量界定函数将x1,x2限制为整数约束

max = 40*x1+90*x2;
9*x1+7*x2<=56;
7*x1+20*x2<=70;
@gin(x1);
@gin(x2);

        结果:最优解 x1=4 , x2 = 2 ; 最优值为340;符合题意

 lingo实现求解到此结束。

2.python实现求解

(1)先抛除整数约束条件对问题求解

基础线性规划实现---python_菜菜笨小孩的博客-CSDN博客

        python代码实现如下:详解请看上方python基础线性规划的文章

#导入包
from scipy import optimize as opt
import numpy as np

#确定c,A,b,Aeq,beq
c = np.array([40,90]) #目标函数变量系数
A = np.array([[9,7],[7,20]]) #不等式变量系数
b = np.array([56,70]) #不等式变量值
Aeq = np.array([[0,0]]) #等式变量系数
beq = np.array([0]) #等式变量值
#限制
lim1=(0,None)
lim2=(0,None)
#求解
res = opt.linprog(-c,A,b,Aeq,beq,bounds=(lim1,lim2))
#输出结果
print(res)

        结果:最优解 x1=4.80916 , x2 = 1.816794 ; 最优值为355.8779;显然不符合题意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值