利用c++实现单纯形表算法

本文介绍了如何利用c++实现线性规划问题的单纯形表算法,详细阐述了在编程过程中遇到的问题,如数组索引、浮点运算误差和数据保护,并提醒在编码时应注重调试友好性。虽然没有展示所有代码,但提到了采用面向对象编程来构建算法的思路,并承诺后续会补充计算初始解的部分。
摘要由CSDN通过智能技术生成

利用c++实现单纯形表算法

0.背景

对于线性规划问题,使用单纯形法进行表上作业所得到的表格。直接用公式进行单纯形法的迭代计算是很不方便的,其中最复杂的是进行基变换,但施行基变换所用的实际上是消元法。由线性代数知道,用消元法解线性方程组可在增广矩阵上利用行初等变换进行计算。因此,我们可以将单纯形法的全部计算过程在一个类似增广矩阵的数表上进行,这种表格称为单纯形表(simplex table)。

1.原理

略(不是重点)

2.具体代码

由于写代码的时候打算顺便复习一下 面向对象的编程,所以就写了个类,来实现单纯形法。实际上不用类,写几个函数也是完全可以实现的。
还有就是因为核心是算法,就没有在输入上过多纠结,直接提前在代码中设定好行和列了。

#include<iostream>
using namespace std;
typedef long double ld;
const int ROW = 4;
const int COLUMN = 6;
class dan_chun_xing_table 
{
   
    private:
        ld table[ROW][COLUMN];
        int row;
        int column;
    public:
        bool if_best;
        bool if_gg;
        dan_chun_xing_table();
        bool best_judge();
        bool gg_judge();
        int row_judge(int column);
        int column_judge();
        void change(int row, int column);
        void show();
        ~dan_chun_xing_table();
};
int main()
{
   
    bool Continue = 1;
    while(Continue)
    {
   
        dan_chun_xing_table table1;
        int times = 0;
        while(!(table1.if_best))
        {
   
            times++;
            cout<<"迭代次数"<<times<<endl;
            if(table1.if_gg)
            {
   
                cout<<"无界"<<endl;
                goto lable1;
            }
            int column = table1.column_judge();
            int row;
            if (column != -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值