C : 线性规划例题求解

Submit Page   TestData   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 93     Solved: 49    


Description

求解下述线性规划模型的最优值min �1�1+�2�2+�3�3�.�. �11�1+�12�2+�13�3≤�1>0�21�1+�22�2+�23�3≤�2>0�31�1+�32�2+�33�3≤�3>0�1,�2,�3≥0

Input

依次输入�1�2�3�11�12�13�1�21�22�23�2�31�32�33�3

Output

目标函数最优值,保留小数点后两位有效数字。若无最优解,输出“No solution”。

Sample

#0
Input

Copy

1 -2 0
1 -1 0 1
-2 1 0 4
1 1 1 10
Output

Copy

-14.00

Hint

#include <iostream>
#include <cmath>
#include "stdio.h"
using namespace std;
#define M 10000
double kernel[110][310];
int m = 0, n = 0, t = 0;
void input()
{
	// cin >> n;
	// cin >> m;
	m = 3;
	n = 3;
	int i, j;
	// 初始化核心向量
	for (i = 0; i <= m + 1; i++)
		for (j = 0; j <= n + m + m; j++)
			kernel[i][j] = 0;
	for (i = 1; i <= n; i++)
		cin >> kernel[0][i];
	for (i = 1; i <= m; i++)
	{
		// cout<<"    不等式"<<i<<"  ";
		for (j = 1; j <= n + 2; j++)
		{
			if (j == n + 1)
			{
				kernel[i][j] = 1;
			}
			else
			{
				cin >> kernel[i][j];
			}
		}
	}

	for (i = 1; i <= m; i++)
	{
		kernel[i][0] = kernel[i][n + 2];
		kernel[i][n + 2] = 0;
	}

	t = 1;
	if (t == -1)
		for (i = 1; i <= n; i++)
			kernel[0][i] = (-1) * kernel[0][i];
	for (i = 1; i <= m; i++)
	{
		kernel[i][n + i] = kernel[i][n + 1];
		if (i != 1)
			kernel[i][n + 1] = 0;
	}
}

// 算法函数
void comput()
{
	int i, j, flag, temp1, temp2, h, k = 0, temp3[100];
	double a, b[110], temp, temp4[110], temp5[110], f = 0, aa, d, c;
	for (i = 1; i <= m; i++)
		temp3[i] = 0.0000;
	for (i = 0; i < 11; i++)
	{
		temp4[i] = 0.000;
		temp5[i] = 0.0000;
	}
	for (i = 1; i <= m; i++)
	{
		if (kernel[i][n + i] == -1)
		{
			kernel[i][n + m + i] = 1;
			kernel[0][n + m + i] = M;
			temp3[i] = n + m + i;
		}
		else
			temp3[i] = n + i;
	}
	for (i = 1; i <= m; i++)
		temp4[i] = kernel[0][temp3[i]];

	do
	{
		for (i = 1; i <= n + m + m; i++)
		{
			a = 0;
			for (j = 1; j <= m; j++)
				a += kernel[j][i] * temp4[j];
			kernel[m + 1][i] = kernel[0][i] - a;
		}
		for (i = 1; i <= n + m + m; i++)
		{
			if (kernel[m + 1][i] >= 0)
				flag = 1;
			else
			{
				flag = -1;
				break;
			}
		}
		if (flag == 1)
		{
			for (i = 1; i <= m; i++)
			{
				if (temp3[i] <= n + m)
					temp1 = 1;
				else
				{
					temp1 = -1;
					break;
				}
			}
			if (temp1 == 1)
			{
				// cout << " 此线性规划的最优解存在!" << endl << endl << "  最优解为:" << endl << endl << "     ";
				for (i = 1; i <= m; i++)
					temp5[temp3[i]] = kernel[i][0];
				for (i = 1; i <= n; i++)
					f += t * kernel[0][i] * temp5[i];

				for (i = 1; i <= n; i++)
				{
					// cout << "x" << i << " = " << temp5[i];
					// if (i != n)
					// cout << ", ";
				}
				// cout << " ;" << endl << endl << "     最优目标函数值f= " << f << endl << endl;
				printf("%.2f\n", f);
				return;
			}
			else
			{
				// cout << " 此线性规划无解" << endl << endl;
				cout<<"No solution"<<endl;
				return;
			}
		}
		if (flag == -1)
		{
			temp = 100000;
			for (i = 1; i <= n + m + m; i++)
				if (kernel[m + 1][i] < temp)
				{
					temp = kernel[m + 1][i];
					h = i;
				}

			for (i = 1; i <= m; i++)
			{
				if (kernel[i][h] <= 0)
					temp2 = 1;
				else
				{
					temp2 = -1;
					break;
				}
			}
		}
		if (temp2 == 1)
		{
				cout<<"No solution"<<endl;
			// cout << "此线性规划无约束";
			return;
		}
		if (temp2 == -1)
		{
			c = 100000;
			for (i = 1; i <= m; i++)
			{
				if (kernel[i][h] != 0)
					b[i] = kernel[i][0] / kernel[i][h];
				if (kernel[i][h] == 0)
					b[i] = 100000;
				if (b[i] < 0)
					b[i] = 100000;
				if (b[i] < c)
				{
					c = b[i];
					k = i;
				}
			}
			temp3[k] = h;
			temp4[k] = kernel[0][h];
			d = kernel[k][h];
			for (i = 0; i <= n + m + m; i++)
				kernel[k][i] = kernel[k][i] / d;
			for (i = 1; i <= m; i++)
			{
				if (i == k)
					continue;
				aa = kernel[i][h];
				for (j = 0; j <= n + m + m; j++)
					kernel[i][j] = kernel[i][j] - aa * kernel[k][j];
			}
		}

	} while (1);
	return;
}

int main()
{
	input();
	for (int i = 1; i < n; i++)
	{
		for (int j = 1; j < m + 2; j++)
		{
			// cout<<kernel[i][j]<<" ";
		}
		// cout<<endl;
	}
	comput();
	// int a = 0;
	// scanf("%d", &a);
	// cout<<f<<endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/759492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pbootcms留言“提交成功”的提示语怎么修改

我们在用到pbootcms建站时候&#xff0c;其中有个留言功能&#xff0c;提交成功后会提示&#xff1a;提交成功&#xff08;如下图所示&#xff09;&#xff0c;那么我们要修改这个提示语要怎么操作呢&#xff1f; 如果需要修改的话&#xff0c;直接找到文件/apps/home/control…

完美世界|单机版合集(共22个版本)

前言 我是研究单机的老罗&#xff0c;今天给大家带来的是完美世界的单机版合集&#xff0c;一共22个版本。本人亲自测试了一个版本&#xff0c;运行视频如下&#xff1a; 完美世界|单机版合集 先看所有的版本的文件&#xff0c;文件比较大&#xff0c;准备好空间&#xff0c;差…

运行CDN

背景 CDN代码&#xff0c;调试运行 日常 git clone代码配置虚拟环境 puthon3.8,pip install r requirements.txt改项目数据集路径&#xff0c;在hico.py文件里面 # PATHS {# train: (root / images / train2015, root / annotations / trainval_hico.json),# val: …

捕获野生的登录页,暴改Vue3

1.实现效果 2.Vue组件 <script setup> import {onMounted} from "vue";onMounted(()>{// getAllData() }) </script><template><div class"login"><div class"form-cont"><div class"form-top"&…

音视频开发34 FFmpeg 编码- 将h264和acc文件打包成flv文件

FFmpeg合成流程 示例本程序会⽣成⼀个合成的⾳频和视频流&#xff0c;并将它们编码和封装输出到输出⽂件&#xff0c;输出格式是根据⽂件 扩展名⾃动猜测的。 示例的流程图如下所示。 ffmpeg 的 Mux 主要分为 三步操作&#xff1a; avformat_write_header &#xff1a; 写⽂…

ASP.Net.WebAPI和工具PostMan

1.WebAPI概述 1.1 WebAPI WebAPI 是一种传统的方式&#xff0c;用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性&#xff0c;可以处理各种HTTP请求&#xff0c;并支持各种数据格式&#xff0c;如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(Ac…

25 防火墙基础操作

1 防火墙进入WEB页面操作 华三防火墙的默认用户:admin/密码:admin 将IP地址改在同一网段的信息 在防火墙的管理地址 GE/0/0/1&#xff1a;192.168.0.1 主机的地址是:192.168.0.101 思考一下为什么Ping不通 security-zone name Management import interface GigabitEthernet1/…

python、pytorch、cuda安装及常见pip命令

1、查看本地安装的CUDA版本 命令&#xff1a;nvidia-smi 2、安装CUDA 下载地址&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive?spm5176.28103460.0.0.49e33da2H7ktW7 进入后选择指定版本进入详情页&#xff0c;选择linux和windows版本&#xff0c;下载然后…

Qt开发报错:Q_INTERFACES Error: Undefined interface

1、背景 VS2019qt5.12.10 从svn拉下来的项目&#xff0c;结果报错&#xff1a; Q_INTERFACES Error: Undefined interface 之前在VS的扩展中在线安装了qt插件&#xff0c; 安装了一半&#xff0c;比较慢&#xff0c;直接强行退出了。。 后来安装了qt官网的插件。。。。 2、报…

【计算机网络】HTTP——基于HTTP的功能追加协议(个人笔记)

学习日期&#xff1a;2024.6.29 内容摘要&#xff1a;基于HTTP的功能追加协议和HTTP/2.0 HTTP的瓶颈与各功能追加协议 需求的产生 在Facebook、推特、微博等平台&#xff0c;每分每秒都会有人更新内容&#xff0c;我们作为用户当然希望时刻都能收到最新的消息&#xff0c;为…

Keepalive技术

文章目录 一、Keepalive基础vrrp技术Keepalived介绍Keepalived架构 二、 Keepalived 相关文件配置文件组成全局配置虚拟路由器配置 三、配置lvs和keepalive联动服务器架构抢占模式配置配置单播、组播配置通知模块日志功能脑裂现象 四、keepalived和nginx联动keepalive和其他应用…

探索MySQL核心技术:理解索引和主键的关系

在数据密集型应用中&#xff0c;数据库的性能往往是决定一个应用成败的重要因素之一。其中&#xff0c;MySQL作为一种开源关系型数据库管理系统&#xff0c;以其卓越的性能和丰富的功能被广泛应用。而在MySQL数据库优化的众多技巧中&#xff0c;索引和主键扮演着极其重要的角色…

专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块&#xff0c;重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。 Spring框架基础概念 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图&#xff0c;目前我们使用最广法的版本应该都是5.x&am…

svn怎么新建分支,切换分支

在当前分支下&#xff0c;点svn右键&#xff0c;选择分支/标记 在选择远端地址时&#xff0c;点右边更多选项&#xff0c;打开远端版本库。找到对应的分支上级位置&#xff0c;点击确定 填写新分支名称&#xff0c;我这儿是将分支建在了branches下&#xff0c;分支名称为V1.1 填…

WEB攻防【4】——JavaWeb项目/JWT身份攻击/组件安全/访问控制

一、知识点 1、Javaweb常见安全及代码逻辑 Javaweb的架构&#xff1a; 如何通过包查找到文件&#xff0c;通过URL对应源码的文件&#xff0c;或者通过源码文件对应URL地址。 2、目录遍历&身份验证&逻辑&JWT Javaweb里面有身份认证的JWT的技术&#xff0c;pyth…

二级建造师(建筑工程专业)考试题库,高效备考!!!

16.在施工合同履行期间发生的变更事项中&#xff0c;属于工程变更的是&#xff08;&#xff09;。 A.质量要求变更 B.分包单位变更 C.合同价款变更 D.相关法规变更 答案&#xff1a;A 解析&#xff1a;工程变更一般是指在工程施工过程中&#xff0c;根据合同约定对施工的…

SSM学习2:依赖注入、依赖自动装配、集合注入、加载properties文件

依赖注入 依赖注入方式 setter注入——引用类型 setter注入——简单类型 public class BookDaoImpl implements BookDao {public void setDatabaseName(String databaseName) {this.databaseName databaseName;}public void setNum(int num) {this.num num;}private Stri…

Spark学习3.0

目录 10.3.4 Spark运行原理 1.设计背景 2.RDD概念 3.RDD特性 4.RDD之间的依赖关系 窄依赖和宽依赖 5.Stage的划分 Stage的类型包括两种&#xff1a;ShuffleMapStage和ResultStage 6.RDD运行过程 10.3.4 Spark运行原理 1.设计背景 许多 迭代式算法&#xff08;比如机器学习、图…

【C++】————string基础用法及部分函数底层实现

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年6月30日 前言&#xff1a; 本文主要介绍STL容器之一 ---- string&#xff0c;在学习C的过程中&#xff0c;我们要将C视为一个语言联邦&#xff08;摘录于Effective C 条款一&#x…

读书笔记-《Spring技术内幕》(三)MVC与Web环境

前面我们学习了 Spring 最核心的 IoC 与 AOP 模块&#xff08;读书笔记-《Spring技术内幕》&#xff08;一&#xff09;IoC容器的实现、读书笔记-《Spring技术内幕》&#xff08;二&#xff09;AOP的实现&#xff09;&#xff0c;接下来继续学习 MVC&#xff0c;其同样也是经典…