资源分配问题【算法设计与分析】<动态规划问题>

这篇具有很好参考价值的文章主要介绍了资源分配问题【算法设计与分析】<动态规划问题>。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题分析:

(要把问题分为多步解决,每步求出子问题的多个最优策略后一步依赖于上一步的最有策略,最后一步得出问题的解)

(1)首先要考虑分配给项目A的资金与利润的关系。得到此时投资数x与其相对应的资源分配问题【算法设计与分析】<动态规划问题> 的关系。

(2)其次要考虑分配给前两个项目A,B的总资金资源分配问题【算法设计与分析】<动态规划问题> 与利润的关系。得到此时投资数x与其相对应的资源分配问题【算法设计与分析】<动态规划问题> 的关系。

(3)最后考虑分配给第三个项目C的资金资源分配问题【算法设计与分析】<动态规划问题> 与利润的关系得到此时投资数x与其相应的资源分配问题【算法设计与分析】<动态规划问题> 的关系。

最终利润为资源分配问题【算法设计与分析】<动态规划问题> 此时x为投资C项目的资金。

数学建模:

开辟二维数组q来存储原始利润的数据

另开辟一维数组f储存当前最大收益情况

开辟记录中间结果的一维数组temp,记录正在计算的最大收益

开辟二维数组a记录当前投资最大收益时每个项目所分配的投资数

数组gain存储第i个工程投资数的最后结果

阶段划分,逐步去求解每一个项目在不同投资额下的最大收益

实验代码:

#define _CRT_NO_SECURE_WARNINGS

#include<stdio.h>
#include<iostream>

using namespace std;

int main() {
	int m = 0;
	int n = 0;
	int num = 0;
	float q[100][100] = { 0 };
	float f[100] = { 0 };           //用于存储当前最大收益
	float a[100][100] = { 0 };      //记录当前投资利益最大是每个项目所分配的投资数
	float temp[100] = { 0 };        //记录正在计算的最大收益
	float gain[100] = { 0 };
	int rest = 0;

	cout << "请输入项目数:";
	cin >> m;
	cout << "请输入投资金额:";
	cin >> n;
	cout << "请输入原始利润数据:" << endl;
	for (int i = 1;i <= m;i++) {
		cout << "投资#" << i << " ";
		for (int j = 0;j <= n;j++) {
			cin >> q[i][j];
		}
	}
	
	//投资第一个项目的最大利益
	for (int j = 0;j <= n;j++) { //从0到n投资
		f[j] = q[1][j];          //第一个项目的最大利益
		a[1][j] = j;             
	}

	//投资第后面项目的最大收益
	for (int k = 2;k < m;k++) {
		for (int j = 0;j <= n;j++) {
			temp[j] = q[k][j];
			a[k][j] = 0;
		}
		for (int j = 0;j <= n;j++) {
			for (int i = 0;i <= j;i++) {
				if (f[j - i] + q[k][i] > temp[j]) {
					temp[j] = f[j - i] + q[k][i];
					a[k][j] = i;
				}
			}
		}
		for (int j = 0;j <= n;j++) {
			f[j] = temp[j];
		}
	}

	for (int i = 0;i <= n;i++) {
		temp[i] = q[m][i] + f[n - i];
	}
	for (int j = 0;j <n;j++) {
		if (temp[j] < temp[j + 1]) {
			num = j+1;
		}
	}

	cout << "第三个项目投资收益:" << endl;
	for (int i = 0;i <= n;i++) {
		cout << temp[i] << "  ";
	}
	cout << "\n";
	cout << "当进行如下投资是收益最大:" << endl;
    cout << "第一个项目投资:" << n - num - a[2][n - num] << endl;
	cout << "第二个项目投资:" << a[2][n - num] << endl;
	cout << "第三个项目投资:" << num << endl;
	cout << "最大投资效益为:" << temp[num] << endl;
	system("pause");
	return 0;
}

时间复杂度分析:

O(m*n)文章来源地址https://www.toymoban.com/news/detail-401263.html

到了这里,关于资源分配问题【算法设计与分析】<动态规划问题>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于差分进化算法的移动边缘计算 (MEC) 的资源调度分配优化(提供MATLAB代码)

    在所研究的区块链网络中,优化的变量为:挖矿决策(即 m)和资源分配(即 p 和 f),目标函数是使所有矿工的总利润最大化。问题可以表述为: max ⁡ m , p , f F miner  = ∑ i ∈ N ′ F i miner   s.t.  C 1 : m i ∈ { 0 , 1 } , ∀ i ∈ N C 2 : p min ⁡ ≤ p i ≤ p max ⁡ , ∀ i ∈ N ′ C 3 :

    2024年01月25日
    浏览(38)
  • [spark]spark资源分配

    hadoop2:9870 1)查看单个节点的总线程数 2)查看每个节点的内存大小 应该是32G 3)查看队列的内存占比(常用的是hive队列) 注:这个集群4个节点,每个节点8个线程,每个节点内存为32G 1、确定executor的cpu核数 每个executor的cpu设置为4(一般为3-6)比较合适 2、确定每个节点executo

    2024年02月08日
    浏览(32)
  • Docker资源管理和分配指南

    cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组(如CPU、内存、磁盘输入输出等)。 什么是Docker资源限制? 默认情况下,Docker容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源。如果不对容器资

    2024年04月11日
    浏览(32)
  • PCIe简介/体系架构/工作原理/资源分配/错误定位

    目录 一、PCIe简介 二、体系结构 三、层次结构 四、工作原理 五、不同版本及传输速率、吞吐量 六、资源分配 ID资源 PCIe资源分配原理 七、Lane和Link PCIe插槽 八、MSI和MSI-X 九、SR-IOV 十、AER 十一、lspci命令 PCIe(Peripheral Component Interconnect Express)是一种用于连接计算机内部硬件

    2024年02月16日
    浏览(36)
  • 4G LTE频带划分和国内运行商资源分配

    LTE 4G的频段划分是按照频率范围进行的,各国或地区根据自己的情况和规定,选择不同的频段进行分配。目前,全球共有44个LTE频段,每个频段都有特定的使用场景和优点,需要根据实际情况来选择合适的频段。 以下是LTE 4G的一些常见频段: 700MHz频段:适用于广域覆盖和室内

    2024年02月09日
    浏览(37)
  • 如何通过物联网实现农业资源的精准分配?

    作者:禅与计算机程序设计艺术 近年来,随着互联网、传感网、物联网等新型信息技术的飞速发展,越来越多的人们开始关注“物联网+农业”这一领域,它将传统的信息采集、汇聚、传输、分析等过程融入到现代化生产的环节中。“物联网+农业”系统可以将各类传感器数据

    2024年02月08日
    浏览(64)
  • 深度强化学习与人工智能:如何实现高效的资源分配

    深度强化学习(Deep Reinforcement Learning, DRL)是一种人工智能技术,它结合了深度学习和强化学习两个领域的优点,以解决复杂的决策问题。在过去的几年里,DRL已经取得了显著的成果,例如在游戏、机器人控制、自动驾驶等领域的应用。在资源分配方面,DRL可以帮助企业更有效地

    2024年02月21日
    浏览(50)
  • 操作系统与云计算:实现高效的资源分配和管理

    操作系统和云计算都是现代计算机科学的核心领域。操作系统负责管理计算机资源,为应用程序提供服务,而云计算则是利用大规模网络计算资源为用户提供服务。在这篇文章中,我们将探讨操作系统与云计算之间的密切关系,以及如何实现高效的资源分配和管理。 操作系统

    2024年04月11日
    浏览(35)
  • 医疗器械外贸ERP软件:优化资源分配,提升企业竞争力

    随着医疗器械外贸业务的不断发展,外贸业务管理ERP软件已经成为了医疗器械企业必不可少的一项工具。该软件解决方案可以有效地帮助企业管理海外市场、跟进海外订单、协调供应链等关键业务。 医疗器械外贸行业管理难点: 1、法规和标准: 涉及到不同国家和地区的法规

    2024年02月13日
    浏览(37)
  • 云计算中的负载均衡技术,确保资源的平衡分配

    🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内容:负载均衡技术 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗 在云计算中,负载均衡是一种关键的技术,用于将网络

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包