我是靠谱客的博主 发嗲马里奥,最近开发中收集的这篇文章主要介绍整数规划问题求解算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言:

通过JavaScript实现整数规划问题。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>整数规划</title>
</head>
<body>
    <script>
        //说明:
        //1. 约束条件必须全部转化为小于等于

        //价值系数
        var valueCoefficient = [3, -2, 5];

        //约束系数
        var coefficients = [
            [1, 2, -1, 2],
            [1, 4, 1, 4],
            [1, 1, 0, 3],
            [4, 0, 1, 6]
        ];

        //列出所有结果集
        var binary = Math.pow(2, valueCoefficient.length) - 1;
        var temp;
        var result;
        var possibleResult = [];
        for(var i=binary; i>=0; i--) {
            result = "";
            temp = i.toString(2);
            for(var j=0; j< valueCoefficient.length-temp.length; j++) {
                result += "0";
            }
            result = temp + result
            var array = [];
            for(var k=0; k<result.length; k++) {
                array.push(Number(result[k]));
            }
            possibleResult.push(array);
        }

        //满足条件的所有结果集
        var feasibilityResult = [];
        //遍历所有可能结果集
        for(var t=0; t<possibleResult.length; t++) {
            //是否全部满足约束条件标识符
            var flag = 0;
            //遍历所有约束条件
            for(var i=0; i<coefficients.length; i++) {
                var resultValue = 0;
                var limitValue = coefficients[i][coefficients[0].length-1];
                for(var j=0; j<coefficients[0].length - 1; j++) {
                    var resultValue = resultValue + coefficients[i][j] * possibleResult[t][j];
                }
                //判断左边是否大于右边,如果大于则退出当前循环
                if(resultValue > limitValue) {
                    flag = 1;
                    break;
                }
            }
            //如果满足条件则计算目标值
            if(flag == 0) {
                var sum = 0;
                for(var m=0; m<possibleResult[t].length; m++) {
                    sum = sum + possibleResult[t][m] * valueCoefficient[m];
                }
                feasibilityResult.push(sum);
                console.table(possibleResult[t]);
                console.log(sum);
            }
        }

        //找出最优解
        var finalValue = feasibilityResult.sort(function(pre, next) {
            return next - pre;
        })[0];
        console.log("nn最优解为: "+finalValue);
    </script>
</body>
</html>

(完)

最后

以上就是发嗲马里奥为你收集整理的整数规划问题求解算法的全部内容,希望文章能够帮你解决整数规划问题求解算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部