数学建模-建模算法(4)

python虽然不是完全为数学建模而生的,但是它完整的库让它越来越适合建模了。

  • 线性规划:使用scipy.optimize.linprog()函数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 整数规划:使用scipy.optimize.linprog()函数,并将目标函数系数转换为整数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', integer=True)
print(res)
```
  • 多元规划:使用scipy.optimize.linprog()函数
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1, 1], [1, 2, 3]]
b = [6, 4, 5]
x0_bounds = (None, None, None)
x1_bounds = (-3, -3, -3)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 二次规划:使用scipy.optimize.linprog()函数,并将目标函数系数转换为平方项
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', square_root=True)
print(res)
```
  • 遗传算法:使用DEAP库
python 复制代码
```python
from deap import base, creator, tools, algorithms
import random

creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
creator.create("Individual", list, fitness=creator.FitnessMin)

toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, n=100)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

def evalOneMax(individual):
    return sum(individual),

toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)

population = toolbox.population(n=300)
algorithms.eaSimple(population, toolbox, cxpb=0.5, mutpb=0.2, ngen=40)
```
  • 动态规划:使用scipy.optimize.linprog()函数,并将目标函数转换为动态规划问题
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs')
print(res)
```
  • 贪心算法:使用scipy.optimize.linprog()函数,并将目标函数转换为贪心策略
python 复制代码
```python
from scipy.optimize import linprog

c = [-1, 4]
A = [[-3, 1], [1, 2]]
b = [6, 4]
x0_bounds = (None, None)
x1_bounds = (-3, None)
res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', options={'disp': True})
while not res.success:
    if not res.fun:
        print("Objective function value is 0 at point %s" % res.x)
        break
    if res.status == 4:
        print("The algorithm could not find a feasible solution for the problem")
        break
    print(res)
    res = linprog(c, A_ub=A, b_ub=b, bounds=[x0_bounds, x1_bounds], method='highs', options={'disp': True})
print(res)
```

下次再更新一些高难度的常见算法。

相关推荐
番茄巴士5 小时前
手写一个 mini HashMap,彻底搞懂哈希表原理
算法
宣宣猪的小花园.5 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
INGNIGHT5 小时前
624.数组列表中的最大距离(maximum)
算法·散列表
Niuguangshuo5 小时前
论文解读:w2v-BERT,把 wav2vec 2.0 和 BERT 合成一根管子的语音 SSL
算法·音视频·语音识别
科技小E6 小时前
国标视频分析平台EasyGBS×自动化AI算法训练服务器DLTM,把通用AI炼成你的现场AI
算法·自动化·音视频
zander2586 小时前
LeetCode 15. 三数之和
算法
AiNightVision6 小时前
NMC存算一体与AI ISP
人工智能·算法·车载系统·自动驾驶·无人机·视频·智能硬件
不穿鞋的懒羊羊6 小时前
高精度算法——加、减、乘、除
算法
liliangcsdn6 小时前
基本面因子计算的示例分析
算法
Lyyaoo.6 小时前
【动态规划】【待更新】
java·数据结构·算法