poj 3254 Corn Fields //状态压缩DP



#include <cstdio>
#include <cstring>
const int MAXN = (1 << 12) - 1;
const int MOD = 100000000;
int n, m;
int state[12][MAXN];
int dp[2][MAXN];
void get_state(int id, int val)
{
    //printf("cal=%d\n", val);
    state[id][0] = 0;
    for(int i = 0; i <= val; i++)
    {
        if((i | val) != val) continue; //牛在不长草的地方吃草
        if((i & (i << 1)) || (i & (i >> 1)))  continue;//相邻的情况
        state[id][++state[id][0]] = i;
        //printf("i=%d\n",i);
    }
}
void solve()
{
    //printf("num=%d\n", state[0][0]);
    for(int i = 1; i <= state[0][0]; i++)  dp[0][i] = 1;

    for(int i = 1; i < n; i++)
    {
        int a = i % 2;
        int b = 1 - a;
        for(int j = 1; j <= state[i][0]; j++)
        {
            dp[a][j] = 0;
            for(int k = 1; k <= state[i-1][0]; k++)
            {
                if(state[i][j] & state[i-1][k])  continue;
                dp[a][j] += dp[b][k];
            }
        }
    }

    int ans = 0;
    int a = (n - 1) % 2;
    for(int i = 1; i <= state[n-1][0]; i++)
    {
        ans += dp[a][i];
        ans %= MOD;
    }
    printf("%d\n", ans);
}
int main()
{
    while(scanf("%d%d", &n, &m) != EOF)
    {
        int x;
        for(int i = 0; i < n; i++)
        {
            int val = 0;
            for(int j = 0; j < m; j++)
            {
                val <<= 1;
                scanf("%d", &x);
                val += x;
            }
            get_state(i, val);
        }
        solve();
    }
    return 0;
}




内容概要:本文介绍了一种利用遗传算法优化BP神经网络进行回归预测的方法,并提供了完整的MATLAB程序代码。主要内容包括数据预处理、遗传算法与BP神经网络的结合、适应度函数的设计以及最终的预测结果展示。文中详细解释了如何将Excel格式的数据导入MATLAB并进行归一化处理,如何定义适应度函数来优化BP神经网络的参数(如激活函数和学习率),并通过遗传算法找到最优解。实验结果显示,在某工业数据集上,经过遗传算法优化后的BP神经网络预测精度显著提高,从原来的0.82提升到了0.91。此外,还提到了一些实用技巧,比如调整遗传代数、修改激活函数等方法进一步改进模型性能。 适合人群:对机器学习有一定了解的研究人员和技术爱好者,特别是那些希望深入了解遗传算法与BP神经网络结合应用的人士。 使用场景及目标:适用于需要快速构建高效回归预测模型的场景,尤其是当传统BP神经网络无法达到预期效果时。通过本篇文章的学习,读者能够掌握一种有效的优化手段,从而提高模型的泛化能力和预测准确性。 其他说明:代码可以直接应用于新的数据集,只需确保数据格式符合要求(Excel格式)。对于想要深入探索或改进现有模型的人来说,还可以尝试更换不同的激活函数或其他调节方式来获得更好的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值