情景初始化

背景介绍

问题背景:两阶段鲁棒优化模型中,一天24个时刻,每个时刻都有上边界或下边界的0-1状态。在给定Tao值下生成随机情景。
实现目标:在给定维度下,生成给定个数个随机值。

输入

Tao=[1 24];

初始值

生成给定长度的0矩阵
chushizhi=zeros(length(Tao),48);

随机给定0-1值
chushizhi=randi([0,1],length(Tao),48);

保证同一时刻不会同时达到上下边界,如果同时达到,令其取为上边界。
for j=1:length(Tao)
for i=1:24
if chushizhi(j,i)+chushizhi(j,i+24)~=1
chushizhi(j,i)=1;chushizhi(j,i+24)=0;
end
end
end

调整

遍历每一个维度,保证Tao值。
for n=1:length(Tao)
i=1;
while sum(chushizhi(n,:))<Tao(n)
chushizhi(n,i)=1;
i=i+1;
end
while sum(chushizhi(n,:))>Tao(n)
chushizhi(n,i)=0;
i=i+1;
end
end
如果超了,令第一个为1的改为0;如果不够,令第一个为0的改为1。直至条件满足。

完整展示

代码

Tao=[1 24];
chushizhi=zeros(length(Tao),48);
chushizhi=randi([0,1],length(Tao),48);
for j=1:length(Tao)
    for i=1:24
        if chushizhi(j,i)+chushizhi(j,i+24)~=1
            chushizhi(j,i)=1;chushizhi(j,i+24)=0;
        end
    end
end
for n=1:length(Tao)
    i=1;
    while sum(chushizhi(n,:))<Tao(n)
        chushizhi(n,i)=1;
        i=i+1;
    end
    while sum(chushizhi(n,:))>Tao(n)
        chushizhi(n,i)=0;
        i=i+1;
    end
end

结果
在这里插入图片描述

### 初始化列表的实际应用场景 #### 1. **确保成员变量的一致性和避免未定义行为** 初始化列表可以确保所有成员变量在构造函数体执行之前都被正确初始化,从而避免潜在的未定义行为[^1]。这种机制特别适用于那些需要显式初始化的对象。 #### 2. **支持引用类型和常量类型的初始化** 某些特殊类型的成员变量(如引用类型和常量类型)无法通过构造函数体内部分配值的方式完成初始化,而必须依赖于初始化列表[^3]。这是因为这些类型的对象在其声明时就必须绑定到具体的实体上,或者被赋予不可更改的值。 #### 3. **提高性能优化** 相比于在构造函数内部逐一赋值的操作方式,在初始化列表中设置初始状态能够减少不必要的临时对象创建过程以及额外的时间开销。对于一些复杂的数据结构来说尤为重要,因为它们可能涉及深层复制或其他耗资源的过程[^2]。 #### 4. **利用 C++11 的 initializer_list 特性简化语法** 随着现代 C++ 标准的发展,`initializer_list` 提供了一种简洁的方式来处理批量数据输入问题。例如当我们要构建包含多个元素的标准容器实例时,可以直接采用大括号包裹的形式来进行快速填充而不必逐条调用 push_back 方法等操作[^4]: ```cpp class Example { public: std::vector<int> numbers; // 使用 initializer_list 进行初始化 Example(std::initializer_list<int> list) : numbers(list) {} }; // 创建 Example 对象并传入一系列整数值 Example ex = {10, 20, 30}; ``` 上述代码片段展示了如何借助 `initializer_list` 来实现更加直观易读且高效的集合类属性设定方法。 --- ### 总结 综上所述,初始化列表不仅有助于保障程序逻辑上的安全性与可靠性,还能有效提升运行效率,并充分利用现代化编程语言所提供的便利功能来增强开发体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱吃沙糖桔

给我一份爱,会还你一份情的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值